This is LoadCommand.h in view mode; [Download] [Up]
/* * $Id: LoadCommand.h,v 1.6 94/05/29 14:58:55 ediger Exp Locker: ediger $ * $Log: LoadCommand.h,v $ * Revision 1.6 94/05/29 14:58:55 ediger * added - (struct load_command *)loadCommandAddress; to interface * * Revision 1.5 94/01/30 16:28:26 ediger * add support for getting pc of thread load commands * * Revision 1.4 93/10/31 21:34:32 ediger * removed declarations of +new and -printSections * * Revision 1.3 93/10/28 00:07:34 ediger * ditch an unused, unnecessary instance variable * * Revision 1.2 93/10/27 23:42:43 ediger * changed to one subclass per type of load command * */ #import <objc/Object.h> #import <sys/types.h> #import <mach-o/loader.h> #import <mach/m68k/thread_status.h> #import <mach/i386/thread_status.h> #import <stdio.h> #import <libc.h> #import <assert.h> #import <MachOFile.h> @interface LoadCommand: Object { struct load_command *loadCommand; BOOL mapped; // subclasses set as appropriate BOOL otherFile; // load command represents another file } + new:(caddr_t)loadCommandAddress; - free; - (unsigned long)commandSize; - (BOOL)isThread; - (BOOL)isMapped; - (BOOL)representsMappedFile; - (struct load_command *)loadCommandAddress; // subclasses need to override some or all of these: - init; - setLoadCommand: (caddr_t)loadCommandAddress; - (unsigned long)getBaseAddress; - (unsigned long)getUpperAddress; - (char *)commandName; - (int)numberOfSections; @end // LC_SEGMENT load command has to implement a few // extra methods because of the array of "struct section" // things it carries around. @interface SegmentCommand: LoadCommand { struct segment_command *segmentCommand; struct section **sections; } - fillSections; - (struct section *)getSection:(int)sectionNumber; @end @interface LoadFVMLibCommand: LoadCommand { struct fvmlib_command *fvmlibCommand; id theOtherFile; } - loadOtherFile; - otherFile; @end @interface IdFVMLibCommand: LoadFVMLibCommand { char *namebuf; } @end @interface IdentCommand: LoadCommand { } @end @interface FVMFileCommand: LoadCommand { struct fvmfile_command *fvmFileCommand; } @end @interface SymTabCommand: LoadCommand { struct symtab_command *symTabCommand; } @end @interface SymSegCommand: LoadCommand { struct symseg_command *symSegCommand; } @end @interface ThreadCommand: LoadCommand { struct thread_command *threadCommand; } - (unsigned long)pc; @end @interface UnixThreadCommand: ThreadCommand { } - (char *)commandName; @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.