xref: /aosp_15_r20/external/iproute2/include/dlfcn.h (revision de1e4e894b0c224df933550f0afdecc354b238c4)
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 Worker static 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 Worker static 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 Worker static 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 Worker static 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