1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#include <features.h>
8
9#define RTLD_LAZY 1
10#define RTLD_NOW 2
11#define RTLD_NOLOAD 4
12#define RTLD_NODELETE 4096
13#define RTLD_GLOBAL 256
14#define RTLD_LOCAL 0
15
16#define RTLD_NEXT ((void*)-1)
17#define RTLD_DEFAULT ((void*)0)
18
19#define RTLD_DI_LINKMAP 2
20
21int dlclose(void*);
22char* dlerror(void);
23void* dlopen(const char*, int);
24void* dlsym(void* __restrict, const char* __restrict);
25
26#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
27typedef struct {
28    const char* dli_fname;
29    void* dli_fbase;
30    const char* dli_sname;
31    void* dli_saddr;
32} Dl_info;
33int dladdr(const void*, Dl_info*);
34int dlinfo(void*, int, void*);
35#endif
36
37#ifdef __cplusplus
38}
39#endif
40