diff options
Diffstat (limited to 'include/dlfcn.h')
-rw-r--r-- | include/dlfcn.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/dlfcn.h b/include/dlfcn.h new file mode 100644 index 0000000..1d8890a --- /dev/null +++ b/include/dlfcn.h @@ -0,0 +1,41 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * 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 RTLD_GLOBAL 1 +#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; +} + +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 |