/* * Stub dlfcn implementation for systems that lack shared library support * but obviously can still reference compiled-in symbols. */ #ifndef NO_SHARED_LIBS #include_next <dlfcn.h> #else #define RTLD_LAZY 0 #define _FAKE_DLFCN_HDL (void *)0xbeefcafe static inline void *dlopen(const char *file, int flag) { if (file == NULL) return _FAKE_DLFCN_HDL; else return NULL; } extern void *_dlsym(const char *sym); static inline void *dlsym(void *handle, const char *sym) { if (handle != _FAKE_DLFCN_HDL) return NULL; return _dlsym(sym); } static inline char *dlerror(void) { return NULL; } static inline int dlclose(void *handle) { return (handle == _FAKE_DLFCN_HDL) ? 0 : 1; } #endif