Root/
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␊ |
35 | extern "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 | */␊ |
47 | extern uint32_t _dyld_image_count(void) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);␊ |
48 | extern const struct mach_header* _dyld_get_image_header(uint32_t image_index) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);␊ |
49 | extern intptr_t _dyld_get_image_vmaddr_slide(uint32_t image_index) __OSX_AVAILABLE_STARTING(__MAC_10_1, __IPHONE_2_0);␊ |
50 | extern 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 | */␊ |
61 | extern 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);␊ |
62 | extern 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 | */␊ |
70 | extern 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 | */␊ |
79 | extern 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 | */␊ |
92 | extern 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 | */␊ |
99 | extern 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 */␊ |
132 | typedef 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 | ␊ |
141 | typedef struct __NSObjectFileImage* NSObjectFileImage;␊ |
142 | ␊ |
143 | /* NSObjectFileImage can only be used with MH_BUNDLE files */␊ |
144 | extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromFile(const char* pathName, NSObjectFileImage *objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
145 | extern NSObjectFileImageReturnCode NSCreateObjectFileImageFromMemory(const void *address, size_t size, NSObjectFileImage *objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
146 | extern bool NSDestroyObjectFileImage(NSObjectFileImage objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
147 | ␊ |
148 | extern uint32_t NSSymbolDefinitionCountInObjectFileImage(NSObjectFileImage objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
149 | extern const char* NSSymbolDefinitionNameInObjectFileImage(NSObjectFileImage objectFileImage, uint32_t ordinal) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
150 | extern uint32_t NSSymbolReferenceCountInObjectFileImage(NSObjectFileImage objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
151 | extern 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);␊ |
152 | extern bool NSIsSymbolDefinedInObjectFileImage(NSObjectFileImage objectFileImage, const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);␊ |
153 | extern 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);␊ |
154 | extern bool NSHasModInitObjectFileImage(NSObjectFileImage objectFileImage) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
155 | ␊ |
156 | typedef struct __NSModule* NSModule;␊ |
157 | extern const char* NSNameOfModule(NSModule m) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
158 | extern const char* NSLibraryNameForModule(NSModule m) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
159 | ␊ |
160 | extern 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 | ␊ |
168 | extern 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_REFERENCES␉0x2␊ |
172 | ␊ |
173 | /* symbol API */␊ |
174 | typedef struct __NSSymbol* NSSymbol;␊ |
175 | extern bool NSIsSymbolNameDefined(const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);␊ |
176 | extern bool NSIsSymbolNameDefinedWithHint(const char* symbolName, const char* libraryNameHint) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);␊ |
177 | extern bool NSIsSymbolNameDefinedInImage(const struct mach_header* image, const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);␊ |
178 | extern NSSymbol NSLookupAndBindSymbol(const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);␊ |
179 | extern NSSymbol NSLookupAndBindSymbolWithHint(const char* symbolName, const char* libraryNameHint) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);␊ |
180 | extern NSSymbol NSLookupSymbolInModule(NSModule module, const char* symbolName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
181 | extern 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␊ |
186 | extern const char* NSNameOfSymbol(NSSymbol symbol) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
187 | extern void * NSAddressOfSymbol(NSSymbol symbol) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
188 | extern NSModule NSModuleForSymbol(NSSymbol symbol) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
189 | ␊ |
190 | /* error handling API */␊ |
191 | typedef 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 | */␊ |
208 | typedef enum {␊ |
209 | NSOtherErrorRelocation, ␊ |
210 | NSOtherErrorLazyBind,␊ |
211 | NSOtherErrorIndrLoop,␊ |
212 | NSOtherErrorLazyInit,␊ |
213 | NSOtherErrorInvalidArgs␊ |
214 | } NSOtherErrorNumbers;␊ |
215 | ␊ |
216 | extern 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 | ␊ |
218 | typedef 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 | ␊ |
225 | extern void NSInstallLinkEditErrorHandlers(const NSLinkEditErrorHandlers *handlers) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
226 | ␊ |
227 | extern bool NSAddLibrary(const char* pathName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);␊ |
228 | extern bool NSAddLibraryWithSearching(const char* pathName) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_4,__IPHONE_NA,__IPHONE_NA);␊ |
229 | extern 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_INSTALLNAME␉0x8␊ |
235 | ␊ |
236 | extern bool _dyld_present(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
237 | extern bool _dyld_launched_prebound(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
238 | extern bool _dyld_all_twolevel_modules_prebound(void) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
239 | extern void _dyld_bind_objc_module(const void* objc_module) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
240 | extern bool _dyld_bind_fully_image_containing_address(const void* address) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_1,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
241 | extern bool _dyld_image_containing_address(const void* address) __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_3,__MAC_10_5,__IPHONE_NA,__IPHONE_NA);␊ |
242 | extern 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);␊ |
243 | extern 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);␊ |
244 | extern 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 | ␊ |
246 | extern 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 |