1/* 2 * Copyright (c) 2004-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 24/* 25 Based on the dlcompat work done by: 26 Jorge Acereda <jacereda@users.sourceforge.net> & 27 Peter O'Gorman <ogorman@users.sourceforge.net> 28*/ 29 30#ifndef _DLFCN_H_ 31#define _DLFCN_H_ 32 33#ifdef __cplusplus 34extern "C" { 35#endif 36 37#include <sys/cdefs.h> 38 39#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 40#include <stdbool.h> 41#include <Availability.h> 42/* 43 * Structure filled in by dladdr(). 44 */ 45typedef struct dl_info { 46 const char *dli_fname; /* Pathname of shared object */ 47 void *dli_fbase; /* Base address of shared object */ 48 const char *dli_sname; /* Name of nearest symbol */ 49 void *dli_saddr; /* Address of nearest symbol */ 50} Dl_info; 51 52extern int dladdr(const void *, Dl_info *); 53#endif /* not POSIX */ 54 55extern int dlclose(void * __handle); 56extern char * dlerror(void); 57extern void * dlopen(const char * __path, int __mode); 58extern void * dlsym(void * __handle, const char * __symbol); 59 60#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 61extern bool dlopen_preflight(const char* __path) __OSX_AVAILABLE_STARTING(__MAC_10_5, __IPHONE_2_0); 62#endif /* not POSIX */ 63 64 65#define RTLD_LAZY 0x1 66#define RTLD_NOW 0x2 67#define RTLD_LOCAL 0x4 68#define RTLD_GLOBAL 0x8 69 70#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE) 71#define RTLD_NOLOAD 0x10 72#define RTLD_NODELETE 0x80 73#define RTLD_FIRST 0x100 /* Mac OS X 10.5 and later */ 74 75/* 76 * Special handle arguments for dlsym(). 77 */ 78#define RTLD_NEXT ((void *) -1) /* Search subsequent objects. */ 79#define RTLD_DEFAULT ((void *) -2) /* Use default search algorithm. */ 80#define RTLD_SELF ((void *) -3) /* Search this and subsequent objects (Mac OS X 10.5 and later) */ 81#define RTLD_MAIN_ONLY ((void *) -5) /* Search main executable only (Mac OS X 10.5 and later) */ 82#endif /* not POSIX */ 83 84#ifdef __cplusplus 85} 86#endif 87 88#endif /* _DLFCN_H_ */ 89