home *** CD-ROM | disk | FTP | other *** search
/ OpenStep 4.2J (Developer) / os42jdev.iso / NextDeveloper / Headers / mach-o / dyld.h < prev    next >
Text File  |  1996-11-25  |  6KB  |  197 lines

  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. extern const char * NSNameOfModule(
  80.     NSModule m); 
  81. extern const char * NSLibraryNameForModule(
  82.     NSModule m);
  83.  
  84. /* limited implementation, only MH_BUNDLE files can be linked */
  85. extern NSModule NSLinkModule(
  86.     NSObjectFileImage objectFileImage, 
  87.     const char *moduleName, /* can be NULL */
  88.     enum bool bindNow);
  89. /* not yet implemented */
  90. extern enum bool NSUnLinkModule(
  91.     NSModule module, 
  92.     enum bool keepMemoryMapped); 
  93. /* not yet implemented */
  94. extern NSModule NSReplaceModule(
  95.     NSModule moduleToReplace,
  96.     NSObjectFileImage newObjectFileImage, 
  97.     enum bool keepMemoryMapped,
  98.     enum bool preserveFunctionAddresses); 
  99.  
  100. /* symbol api */
  101. typedef void * NSSymbol;
  102. extern enum bool NSIsSymbolNameDefined(
  103.     const char *symbolName);
  104. extern NSSymbol NSLookupAndBindSymbol(
  105.     const char *symbolName);
  106. extern const char * NSNameOfSymbol(
  107.     NSSymbol symbol);
  108. extern void * NSAddressOfSymbol(
  109.     NSSymbol symbol);
  110. extern NSModule NSModuleForSymbol(
  111.     NSSymbol symbol);
  112.  
  113. /* error handling api */
  114. typedef enum {
  115.     NSLinkEditFileAccessError,
  116.     NSLinkEditFileFormatError,
  117.     NSLinkEditMachResourceError,
  118.     NSLinkEditUnixResourceError,
  119.     NSLinkEditOtherError,
  120.     NSLinkEditWarningError
  121. } NSLinkEditErrors;
  122.  
  123. typedef struct {
  124.      void     (*undefined)(const char *symbolName);
  125.      NSModule (*multiple)(NSSymbol s, NSModule old, NSModule new_); 
  126.      void     (*linkEdit)(NSLinkEditErrors c, int errorNumber,
  127.                           const char *fileName, const char *errorString);
  128. } NSLinkEditErrorHandlers;
  129.  
  130. extern void NSInstallLinkEditErrorHandlers(
  131.     NSLinkEditErrorHandlers *handlers);
  132.  
  133. /* other api */
  134. extern enum bool NSAddLibrary(
  135.     const char *pathName);
  136. extern long NSVersionOfRunTimeLibrary(
  137.     const char *libraryName);
  138. extern long NSVersionOfLinkTimeLibrary(
  139.     const char *libraryName);
  140.  
  141. /*
  142.  * The low level _dyld_... API.
  143.  * (used by the objective-C runtime primarily)
  144.  */
  145. extern unsigned long _dyld_present(
  146.     void);
  147.  
  148. extern unsigned long _dyld_image_count(
  149.     void);
  150. extern struct mach_header * _dyld_get_image_header(
  151.     unsigned long image_index);
  152. extern unsigned long _dyld_get_image_vmaddr_slide(
  153.     unsigned long image_index);
  154. extern char * _dyld_get_image_name(
  155.     unsigned long image_index);
  156.  
  157. extern void _dyld_register_func_for_add_image(
  158.     void (*func)(struct mach_header *mh, unsigned long vmaddr_slide));
  159. extern void _dyld_register_func_for_link_module(
  160.     void (*func)(NSModule module));
  161. /* not yet implemented */
  162. extern void _dyld_register_func_for_unlink_module(
  163.     void (*func)(NSModule module));
  164. /* not yet implemented */
  165. extern void _dyld_register_func_for_replace_module(
  166.     void (*func)(NSModule oldmodule, NSModule newmodule));
  167. extern void _dyld_get_objc_module_sect_for_module(
  168.     NSModule module,
  169.     void **objc_module,
  170.     unsigned long *size);
  171. extern void _dyld_bind_objc_module(
  172.     void *objc_module);
  173. extern enum bool _dyld_bind_fully_image_containing_address(
  174.     unsigned long *address);
  175.  
  176. extern void _dyld_moninit(
  177.     void (*monaddition)(char *lowpc, char *highpc));
  178. extern enum bool _dyld_launched_prebound(
  179.     void);
  180.  
  181. extern void _dyld_lookup_and_bind(
  182.     const char *symbol_name,
  183.     unsigned long *address,
  184.     void **module);
  185. extern void _dyld_lookup_and_bind_objc(
  186.     const char *symbol_name,
  187.     unsigned long *address,
  188.     void **module);
  189. extern void _dyld_lookup_and_bind_fully(
  190.     const char *symbol_name,
  191.     unsigned long *address,
  192.     void **module);
  193.  
  194. __private_extern__ int _dyld_func_lookup(
  195.     const char *dyld_func_name,
  196.     unsigned long *address);
  197.