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