1#define _GNU_SOURCE
2#include <dlfcn.h>
3
4__attribute__((__visibility__("hidden"))) int __dl_invalid_handle(void*);
5
6__attribute__((__visibility__("hidden"))) void __dl_seterr(const char*, ...);
7
8int dlinfo(void* dso, int req, void* res) {
9    if (__dl_invalid_handle(dso))
10        return -1;
11    if (req != RTLD_DI_LINKMAP) {
12        __dl_seterr("Unsupported request %d", req);
13        return -1;
14    }
15    *(struct link_map**)res = dso;
16    return 0;
17}
18