|
|
1.1 ! root 1: #import "mach-o/loader.h" ! 2: #import <streams/streams.h> ! 3: ! 4: #ifndef ENUM_BOOL ! 5: #define ENUM_BOOL ! 6: #undef FALSE ! 7: #undef TRUE ! 8: enum bool { ! 9: FALSE, ! 10: TRUE ! 11: }; ! 12: #endif /* ENUM_BOOL */ ! 13: ! 14: /* ! 15: * The high level NS... API. ! 16: */ ! 17: ! 18: /* Object file image api */ ! 19: typedef enum { ! 20: NSObjectFileImageFailure, /* for this a message is printed on stderr */ ! 21: NSObjectFileImageSuccess, ! 22: NSObjectFileImageInappropriateFile, ! 23: NSObjectFileImageArch, ! 24: NSObjectFileImageFormat, /* for this a message is printed on stderr */ ! 25: NSObjectFileImageAccess, ! 26: } NSObjectFileImageReturnCode; ! 27: ! 28: typedef void * NSObjectFileImage; ! 29: ! 30: /* limited implementation, only MH_BUNDLE files can be used */ ! 31: extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromFile( ! 32: const char *pathName, ! 33: NSObjectFileImage *objectFileImage); ! 34: /* not yet implemented */ ! 35: extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromMemory( ! 36: void *address, ! 37: unsigned long size, ! 38: NSObjectFileImage *objectFileImage); ! 39: /* not yet implemented */ ! 40: extern enum bool NSDestroyObjectFileImage( ! 41: NSObjectFileImage objectFileImage); ! 42: /* ! 43: * Need api on NSObjectFileImage's for: ! 44: * "for Each Symbol Definition In Object File Image" (for Dynamic Bundles) ! 45: * Could have the same thing for references ! 46: */ ! 47: /* not yet implemented */ ! 48: extern unsigned long NSSymbolDefinitionCountInObjectFileImage( ! 49: NSObjectFileImage objectFileImage); ! 50: /* not yet implemented */ ! 51: extern const char * NSSymbolDefinitionNameInObjectFileImage( ! 52: NSObjectFileImage objectFileImage, ! 53: unsigned long ordinal); ! 54: /* not yet implemented */ ! 55: extern unsigned long NSSymbolReferenceCountInObjectFileImage( ! 56: NSObjectFileImage objectFileImage); ! 57: /* not yet implemented */ ! 58: extern const char * NSSymbolReferenceNameInObjectFileImage( ! 59: NSObjectFileImage objectFileImage, ! 60: unsigned long ordinal, ! 61: enum bool *tentative_definition); /* can be NULL */ ! 62: /* ! 63: * Other needed api on NSObjectFileImage: ! 64: * "does Object File Image define symbol name X" (using sorted symbol table) ! 65: * a way to get the named objective-C section ! 66: */ ! 67: /* not yet implemented */ ! 68: extern enum bool NSIsSymbolDefinedInObjectFileImage( ! 69: NSObjectFileImage objectFileImage, ! 70: const char *symbolName); ! 71: /* not yet implemented */ ! 72: extern void * NSGetSectionDataInObjectFileImage( ! 73: NSObjectFileImage objectFileImage, ! 74: const char *segmentName, ! 75: const char *sectionName); ! 76: ! 77: /* module api */ ! 78: typedef void * NSModule; ! 79: /* not yet implemented */ ! 80: extern const char * NSNameOfModule( ! 81: NSModule m); ! 82: /* not yet implemented */ ! 83: extern const char * NSLibraryNameForModule( ! 84: NSModule m); ! 85: ! 86: /* limited implementation, only MH_BUNDLE files can be linked */ ! 87: extern NSModule NSLinkModule( ! 88: NSObjectFileImage objectFileImage, ! 89: const char *moduleName, /* can be NULL */ ! 90: enum bool bindNow); ! 91: /* not yet implemented */ ! 92: extern enum bool NSUnLinkModule( ! 93: NSModule module, ! 94: enum bool keepMemoryMapped); ! 95: /* not yet implemented */ ! 96: extern NSModule NSReplaceModule( ! 97: NSModule moduleToReplace, ! 98: NSObjectFileImage newObjectFileImage, ! 99: enum bool keepMemoryMapped, ! 100: enum bool preserveFunctionAddresses); ! 101: ! 102: /* symbol api */ ! 103: typedef void * NSSymbol; ! 104: /* not yet implemented */ ! 105: extern enum bool NSIsSymbolNameDefined( ! 106: const char *symbolName); ! 107: /* not yet implemented */ ! 108: extern NSSymbol NSLookupAndBindSymbol( ! 109: const char *symbolName); ! 110: /* not yet implemented */ ! 111: extern const char * NSNameOfSymbol( ! 112: NSSymbol symbol); ! 113: /* not yet implemented */ ! 114: extern void * NSAddressOfSymbol( ! 115: NSSymbol symbol); ! 116: /* not yet implemented */ ! 117: extern NSModule NSModuleForSymbol( ! 118: NSSymbol symbol); ! 119: ! 120: /* error handling api */ ! 121: typedef enum { ! 122: NSLinkEditFileAccessError, ! 123: NSLinkEditFileFormatError, ! 124: NSLinkEditMachResourceError, ! 125: NSLinkEditUnixResourceError, ! 126: NSLinkEditOtherError, ! 127: NSLinkEditWarningError ! 128: } NSLinkEditErrors; ! 129: ! 130: typedef struct { ! 131: void (*undefined)(const char *symbolName); ! 132: NSModule (*multiple)(NSSymbol s, NSModule old, NSModule new); ! 133: void (*linkEdit)(NSLinkEditErrors c, int errorNumber, ! 134: const char *fileName, const char *errorString); ! 135: } NSLinkEditErrorHandlers; ! 136: ! 137: extern void NSInstallLinkEditErrorHandlers( ! 138: NSLinkEditErrorHandlers *handlers); ! 139: ! 140: /* other api */ ! 141: /* not yet implemented */ ! 142: extern enum bool NSAddLibrary( ! 143: const char *pathName); ! 144: /* not yet implemented */ ! 145: extern long NSVersionOfLibrary( ! 146: const char *libName); ! 147: ! 148: /* ! 149: * The low level _dyld_... API. ! 150: * (used by the objective-C runtime primarily) ! 151: */ ! 152: extern unsigned long _dyld_present( ! 153: void); ! 154: ! 155: extern unsigned long _dyld_image_count( ! 156: void); ! 157: extern struct mach_header * _dyld_get_image_header( ! 158: unsigned long image_index); ! 159: extern unsigned long _dyld_get_image_vmaddr_slide( ! 160: unsigned long image_index); ! 161: ! 162: extern void _dyld_register_func_for_add_image( ! 163: void (*func)(struct mach_header *mh, unsigned long vmaddr_slide)); ! 164: extern void _dyld_register_func_for_link_module( ! 165: void (*func)(NSModule module)); ! 166: /* not yet implemented */ ! 167: extern void _dyld_register_func_for_unlink_module( ! 168: void (*func)(NSModule module)); ! 169: /* not yet implemented */ ! 170: extern void _dyld_register_func_for_replace_module( ! 171: void (*func)(NSModule oldmodule, NSModule newmodule)); ! 172: extern void _dyld_get_objc_module_sect_for_module( ! 173: NSModule module, ! 174: void **objc_module, ! 175: unsigned long *size); ! 176: extern void _dyld_bind_objc_module( ! 177: void *objc_module); ! 178: ! 179: extern void _dyld_lookup_and_bind( ! 180: const char *symbol_name, ! 181: unsigned long *address, ! 182: void **module); ! 183: ! 184: extern int _dyld_func_lookup( ! 185: const char *dyld_func_name, ! 186: unsigned long *address);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.