Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/include/mach-o/dyld.h

Source at commit 1146 created 12 years 11 months ago.
By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing).
1/*
2 * Copyright (c) 1999-2008 Apple Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23#ifndef _MACH_O_DYLD_H_
24#define _MACH_O_DYLD_H_
25
26
27#include <stddef.h>
28#include <stdint.h>
29#include <stdbool.h>
30
31#include <mach-o/loader.h>
32#include <Availability.h>
33
34#if __cplusplus
35extern "C" {
36#endif
37
38/*
39 * The following functions allow you to iterate through all loaded images.
40 * This is not a thread safe operation. Another thread can add or remove
41 * an image during the iteration.
42 *
43 * Many uses of these routines can be replace by a call to dladdr() which
44 * will return the mach_header and name of an image, given an address in
45 * the image. dladdr() is thread safe.
46 */
47extern uint32_t _dyld_image_count(void) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
48extern const struct mach_header* _dyld_get_image_header(uint32_t image_index) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
49extern intptr_t _dyld_get_image_vmaddr_slide(uint32_t image_index) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
50extern const char* _dyld_get_image_name(uint32_t image_index) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
51
52
53/*
54 * The following functions allow you to install callbacks which will be called
55 * by dyld whenever an image is loaded or unloaded. During a call to _dyld_register_func_for_add_image()
56 * the callback func is called for every existing image. Later, it is called as each new image
57 * is loaded and bound (but initializers not yet run). The callback registered with
58 * _dyld_register_func_for_remove_image() is called after any terminators in an image are run
59 * and before the image is un-memory-mapped.
60 */
61extern void _dyld_register_func_for_add_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide)) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
62extern void _dyld_register_func_for_remove_image(void (*func)(const struct mach_header* mh, intptr_t vmaddr_slide)) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
63
64
65/*
66 * NSVersionOfRunTimeLibrary() returns the current_version number of the currently dylib
67 * specifed by the libraryName. The libraryName parameter would be "bar" for /path/libbar.3.dylib and
68 * "Foo" for /path/Foo.framework/Versions/A/Foo. It returns -1 if no such library is loaded.
69 */
70extern int32_t NSVersionOfRunTimeLibrary(const char* libraryName) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
71
72
73/*
74 * NSVersionOfRunTimeLibrary() returns the current_version number that the main executable was linked
75 * against at build time. The libraryName parameter would be "bar" for /path/libbar.3.dylib and
76 * "Foo" for /path/Foo.framework/Versions/A/Foo. It returns -1 if the main executable did not link
77 * against the specified library.
78 */
79extern int32_t NSVersionOfLinkTimeLibrary(const char* libraryName) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
80
81
82/*
83 * _NSGetExecutablePath() copies the path of the main executable into the buffer. The bufsize parameter
84 * should initially be the size of the buffer. The function returns 0 if the path was successfully copied,
85 * and *bufsize is left unchanged. It returns -1 if the buffer is not large enough, and *bufsize is set
86 * to the size required.
87 *
88 * Note that _NSGetExecutablePath will return "a path" to the executable not a "real path" to the executable.
89 * That is the path may be a symbolic link and not the real file. With deep directories the total bufsize
90 * needed could be more than MAXPATHLEN.
91 */
92extern int _NSGetExecutablePath(char* buf, uint32_t* bufsize) __OSX_AVAILABLE_STARTING(__MAC_10_2, __IPHONE_2_0);
93
94
95
96/*
97 * _dyld_moninit() is a private interface between dyld and libSystem.
98 */
99extern void _dyld_moninit(void (*monaddition)(char *lowpc, char *highpc)) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);
100
101
102
103
104
105/*
106 * The following dyld API's are deprecated as of Mac OS X 10.5. They are either
107 * no longer necessary or are superceeded by dlopen and friends in <dlfcn.h>.
108 * dlopen/dlsym/dlclose have been available since Mac OS X 10.3 and work with
109 * dylibs and bundles.
110 *
111 * NSAddImage -> dlopen
112 * NSLookupSymbolInImage -> dlsym
113 * NSCreateObjectFileImageFromFile -> dlopen
114 * NSDestroyObjectFileImage -> dlclose
115 * NSLinkModule -> not needed when dlopen used
116 * NSUnLinkModule -> not needed when dlclose used
117 * NSLookupSymbolInModule -> dlsym
118 * _dyld_image_containing_address -> dladdr
119 * NSLinkEditError -> dlerror
120 *
121 */
122
123#ifndef ENUM_DYLD_BOOL
124#define ENUM_DYLD_BOOL
125 #undef FALSE
126 #undef TRUE
127 enum DYLD_BOOL { FALSE, TRUE };
128#endif /* ENUM_DYLD_BOOL */
129
130
131/* Object file image API */
132typedef enum {
133 NSObjectFileImageFailure, /* for this a message is printed on stderr */
134 NSObjectFileImageSuccess,
135 NSObjectFileImageInappropriateFile,
136 NSObjectFileImageArch,
137 NSObjectFileImageFormat, /* for this a message is printed on stderr */
138 NSObjectFileImageAccess
139} NSObjectFileImageReturnCode;
140
141typedef struct __NSObjectFileImage* NSObjectFileImage;
142
143/* NSObjectFileImage can only be used with MH_BUNDLE files */
144extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromFile(const char* pathName, NSObjectFileImage *objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
145extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromMemory(const void *address, size_t size, NSObjectFileImage *objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
146extern bool NSDestroyObjectFileImage(NSObjectFileImage objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
147
148extern uint32_t NSSymbolDefinitionCountInObjectFileImage(NSObjectFileImage objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
149extern const char* NSSymbolDefinitionNameInObjectFileImage(NSObjectFileImage objectFileImage, uint32_t ordinal) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
150extern uint32_t NSSymbolReferenceCountInObjectFileImage(NSObjectFileImage objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
151extern const char* NSSymbolReferenceNameInObjectFileImage(NSObjectFileImage objectFileImage, uint32_t ordinal, bool *tentative_definition) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
152extern bool NSIsSymbolDefinedInObjectFileImage(NSObjectFileImage objectFileImage, const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
153extern void* NSGetSectionDataInObjectFileImage(NSObjectFileImage objectFileImage, const char* segmentName, const char* sectionName, size_t *size) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
154extern bool NSHasModInitObjectFileImage(NSObjectFileImage objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
155
156typedef struct __NSModule* NSModule;
157extern const char* NSNameOfModule(NSModule m) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
158extern const char* NSLibraryNameForModule(NSModule m) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
159
160extern NSModule NSLinkModule(NSObjectFileImage objectFileImage, const char* moduleName, uint32_t options) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
161#define NSLINKMODULE_OPTION_NONE 0x0
162#define NSLINKMODULE_OPTION_BINDNOW 0x1
163#define NSLINKMODULE_OPTION_PRIVATE 0x2
164#define NSLINKMODULE_OPTION_RETURN_ON_ERROR 0x4
165#define NSLINKMODULE_OPTION_DONT_CALL_MOD_INIT_ROUTINES 0x8
166#define NSLINKMODULE_OPTION_TRAILING_PHYS_NAME 0x10
167
168extern bool NSUnLinkModule(NSModule module, uint32_t options) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
169#define NSUNLINKMODULE_OPTION_NONE 0x0
170#define NSUNLINKMODULE_OPTION_KEEP_MEMORY_MAPPED 0x1
171#define NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES0x2
172
173/* symbol API */
174typedef struct __NSSymbol* NSSymbol;
175extern bool NSIsSymbolNameDefined(const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
176extern bool NSIsSymbolNameDefinedWithHint(const char* symbolName, const char* libraryNameHint) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
177extern bool NSIsSymbolNameDefinedInImage(const struct mach_header* image, const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
178extern NSSymbol NSLookupAndBindSymbol(const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
179extern NSSymbol NSLookupAndBindSymbolWithHint(const char* symbolName, const char* libraryNameHint) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
180extern NSSymbol NSLookupSymbolInModule(NSModule module, const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
181extern NSSymbol NSLookupSymbolInImage(const struct mach_header* image, const char* symbolName, uint32_t options) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
182#define NSLOOKUPSYMBOLINIMAGE_OPTION_BIND 0x0
183#define NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW 0x1
184#define NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_FULLY 0x2
185#define NSLOOKUPSYMBOLINIMAGE_OPTION_RETURN_ON_ERROR 0x4
186extern const char* NSNameOfSymbol(NSSymbol symbol) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
187extern void * NSAddressOfSymbol(NSSymbol symbol) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
188extern NSModule NSModuleForSymbol(NSSymbol symbol) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
189
190/* error handling API */
191typedef enum {
192 NSLinkEditFileAccessError,
193 NSLinkEditFileFormatError,
194 NSLinkEditMachResourceError,
195 NSLinkEditUnixResourceError,
196 NSLinkEditOtherError,
197 NSLinkEditWarningError,
198 NSLinkEditMultiplyDefinedError,
199 NSLinkEditUndefinedError
200} NSLinkEditErrors;
201
202/*
203 * For the NSLinkEditErrors value NSLinkEditOtherError these are the values
204 * passed to the link edit error handler as the errorNumber (what would be an
205 * errno value for NSLinkEditUnixResourceError or a kern_return_t value for
206 * NSLinkEditMachResourceError).
207 */
208typedef enum {
209 NSOtherErrorRelocation,
210 NSOtherErrorLazyBind,
211 NSOtherErrorIndrLoop,
212 NSOtherErrorLazyInit,
213 NSOtherErrorInvalidArgs
214} NSOtherErrorNumbers;
215
216extern void NSLinkEditError(NSLinkEditErrors *c, int *errorNumber, const char** fileName, const char** errorString) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
217
218typedef struct {
219 void (*undefined)(const char* symbolName);
220 NSModule (*multiple)(NSSymbol s, NSModule oldModule, NSModule newModule);
221 void (*linkEdit)(NSLinkEditErrors errorClass, int errorNumber,
222 const char* fileName, const char* errorString);
223} NSLinkEditErrorHandlers;
224
225extern void NSInstallLinkEditErrorHandlers(const NSLinkEditErrorHandlers *handlers) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
226
227extern bool NSAddLibrary(const char* pathName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
228extern bool NSAddLibraryWithSearching(const char* pathName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
229extern const struct mach_header* NSAddImage(const char* image_name, uint32_t options) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
230#define NSADDIMAGE_OPTION_NONE 0x0
231#define NSADDIMAGE_OPTION_RETURN_ON_ERROR 0x1
232#define NSADDIMAGE_OPTION_WITH_SEARCHING 0x2
233#define NSADDIMAGE_OPTION_RETURN_ONLY_IF_LOADED 0x4
234#define NSADDIMAGE_OPTION_MATCH_FILENAME_BY_INSTALLNAME0x8
235
236extern bool _dyld_present(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
237extern bool _dyld_launched_prebound(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
238extern bool _dyld_all_twolevel_modules_prebound(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
239extern void _dyld_bind_objc_module(const void* objc_module) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
240extern bool _dyld_bind_fully_image_containing_address(const void* address) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
241extern bool _dyld_image_containing_address(const void* address) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
242extern void _dyld_lookup_and_bind(const char* symbol_name, void **address, NSModule* module) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
243extern void _dyld_lookup_and_bind_with_hint(const char* symbol_name, const char* library_name_hint, void** address, NSModule* module) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);
244extern void _dyld_lookup_and_bind_fully(const char* symbol_name, void** address, NSModule* module) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
245
246extern const struct mach_header* _dyld_get_image_header_containing_address(const void* address) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);
247
248
249#if __cplusplus
250}
251#endif
252
253#endif /* _MACH_O_DYLD_H_ */
254

Archive Download this file

Revision: 1146