On second thought, let's not use dladdr. It's a silly extension.

This commit is contained in:
Dan Hirsch 2013-05-24 02:56:14 +02:00
parent de38f7bce8
commit c1b7d9307d

View file

@ -8,14 +8,17 @@
// This is some spectacularly non-portable code... but whee! // This is some spectacularly non-portable code... but whee!
#include <dlfcn.h> #include <dlfcn.h>
char* getsym(void* addr) { char* getsym(void* addr) {
Dl_info dli;
char* retstr; char* retstr;
#if 0
// This will be fixed later.
Dl_info dli;
if (dladdr(addr, &dli) != 0 && dli.dli_sname != NULL) { if (dladdr(addr, &dli) != 0 && dli.dli_sname != NULL) {
if (dli.dli_saddr == addr) if (dli.dli_saddr == addr)
return strdup(dli.dli_sname); return strdup(dli.dli_sname);
else else
asprintf(&retstr, "%s+0x%lx", dli.dli_sname, addr - dli.dli_saddr); asprintf(&retstr, "%s+0x%lx", dli.dli_sname, addr - dli.dli_saddr);
} else } else
#endif
asprintf(&retstr, "%p", addr); asprintf(&retstr, "%p", addr);
return retstr; return retstr;