ftp.nice.ch/pub/next/tools/hack/MachOViewer.NIHS.bs.tar.gz#/MachOViewer/Source/LoadCommand.h

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.