// ------------------------------ // glibc: // gcc hello.c -o hello -ldl // // ret:1 // dli_fname:./hello:0x400000 // dli_sname:puts:0x4004c0 // ------------------------------ // musl: // musl-gcc hello.c -o hello // // ret:0 // dli_fname:(null):0 // dli_sname:(null):0 // ------------------------------ #define _GNU_SOURCE #include #include #include int main(void) { puts("\nhello world!\n"); Dl_info dl = {0}; int ret = dladdr(puts + 0, &dl); printf("ret:%d\n" "dli_fname:%s:%p\n" "dli_sname:%s:%p\n\n", ret, dl.dli_fname, dl.dli_fbase, dl.dli_sname, dl.dli_saddr); return 0; }