| #define _GNU_SOURCE | |
| #include <dlfcn.h> | |
| __attribute__((__visibility__("hidden"))) int __dl_invalid_handle(void*); | |
| __attribute__((__visibility__("hidden"))) void __dl_seterr(const char*, ...); | |
| int dlinfo(void* dso, int req, void* res) { | |
| if (__dl_invalid_handle(dso)) | |
| return -1; | |
| if (req != RTLD_DI_LINKMAP) { | |
| __dl_seterr("Unsupported request %d", req); | |
| return -1; | |
| } | |
| *(struct link_map**)res = dso; | |
| return 0; | |
| } |