implement minimal dlinfo function
[musl] / include / dlfcn.h
index 81b829c..db26194 100644 (file)
@@ -1,19 +1,42 @@
 #ifndef        _DLFCN_H
 #define        _DLFCN_H
 
-#define RTLD_LAZY   0x10000
-#define RTLD_NOW    0x20000
-#define RTLD_GLOBAL 0x40000
-#define RTLD_LOCAL  0x80000
-
-#if 1
-#define RTLD_NEXT    ((void *) -1l)
-#define RTLD_DEFAULT ((void *) 0)
+#ifdef __cplusplus
+extern "C" {
 #endif
 
+#include <features.h>
+
+#define RTLD_LAZY   1
+#define RTLD_NOW    2
+#define RTLD_NOLOAD 4
+#define RTLD_NODELETE 4096
+#define RTLD_GLOBAL 256
+#define RTLD_LOCAL  0
+
+#define RTLD_NEXT    ((void *)-1)
+#define RTLD_DEFAULT ((void *)0)
+
+#define RTLD_DI_LINKMAP 2
+
 int    dlclose(void *);
 char  *dlerror(void);
 void  *dlopen(const char *, int);
-void  *dlsym(void *, const char *);
+void  *dlsym(void *__restrict, const char *__restrict);
+
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+typedef struct {
+       const char *dli_fname;
+       void *dli_fbase;
+       const char *dli_sname;
+       void *dli_saddr;
+} Dl_info;
+int dladdr(void *, Dl_info *);
+int dlinfo(void *, int, void *);
+#endif
+
+#ifdef __cplusplus
+}
+#endif
 
 #endif