1*de1e4e89SAndroid Build Coastguard Worker /* 2*de1e4e89SAndroid Build Coastguard Worker * Stub dlfcn implementation for systems that lack shared library support 3*de1e4e89SAndroid Build Coastguard Worker * but obviously can still reference compiled-in symbols. 4*de1e4e89SAndroid Build Coastguard Worker */ 5*de1e4e89SAndroid Build Coastguard Worker 6*de1e4e89SAndroid Build Coastguard Worker #ifndef NO_SHARED_LIBS 7*de1e4e89SAndroid Build Coastguard Worker #include_next <dlfcn.h> 8*de1e4e89SAndroid Build Coastguard Worker #else 9*de1e4e89SAndroid Build Coastguard Worker 10*de1e4e89SAndroid Build Coastguard Worker #define RTLD_LAZY 0 11*de1e4e89SAndroid Build Coastguard Worker #define RTLD_GLOBAL 1 12*de1e4e89SAndroid Build Coastguard Worker #define _FAKE_DLFCN_HDL (void *)0xbeefcafe 13*de1e4e89SAndroid Build Coastguard Worker dlopen(const char * file,int flag)14*de1e4e89SAndroid Build Coastguard Workerstatic inline void *dlopen(const char *file, int flag) 15*de1e4e89SAndroid Build Coastguard Worker { 16*de1e4e89SAndroid Build Coastguard Worker if (file == NULL) 17*de1e4e89SAndroid Build Coastguard Worker return _FAKE_DLFCN_HDL; 18*de1e4e89SAndroid Build Coastguard Worker else 19*de1e4e89SAndroid Build Coastguard Worker return NULL; 20*de1e4e89SAndroid Build Coastguard Worker } 21*de1e4e89SAndroid Build Coastguard Worker 22*de1e4e89SAndroid Build Coastguard Worker void *_dlsym(const char *sym); dlsym(void * handle,const char * sym)23*de1e4e89SAndroid Build Coastguard Workerstatic inline void *dlsym(void *handle, const char *sym) 24*de1e4e89SAndroid Build Coastguard Worker { 25*de1e4e89SAndroid Build Coastguard Worker if (handle != _FAKE_DLFCN_HDL) 26*de1e4e89SAndroid Build Coastguard Worker return NULL; 27*de1e4e89SAndroid Build Coastguard Worker return _dlsym(sym); 28*de1e4e89SAndroid Build Coastguard Worker } 29*de1e4e89SAndroid Build Coastguard Worker dlerror(void)30*de1e4e89SAndroid Build Coastguard Workerstatic inline char *dlerror(void) 31*de1e4e89SAndroid Build Coastguard Worker { 32*de1e4e89SAndroid Build Coastguard Worker return NULL; 33*de1e4e89SAndroid Build Coastguard Worker } 34*de1e4e89SAndroid Build Coastguard Worker dlclose(void * handle)35*de1e4e89SAndroid Build Coastguard Workerstatic inline int dlclose(void *handle) 36*de1e4e89SAndroid Build Coastguard Worker { 37*de1e4e89SAndroid Build Coastguard Worker return (handle == _FAKE_DLFCN_HDL) ? 0 : 1; 38*de1e4e89SAndroid Build Coastguard Worker } 39*de1e4e89SAndroid Build Coastguard Worker 40*de1e4e89SAndroid Build Coastguard Worker #endif 41