summaryrefslogtreecommitdiffstats
path: root/libcorkscrew/backtrace.c
diff options
context:
space:
mode:
Diffstat (limited to 'libcorkscrew/backtrace.c')
-rw-r--r--libcorkscrew/backtrace.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libcorkscrew/backtrace.c b/libcorkscrew/backtrace.c
index 03dbd53..3697d18 100644
--- a/libcorkscrew/backtrace.c
+++ b/libcorkscrew/backtrace.c
@@ -35,8 +35,10 @@
#include <cutils/atomic.h>
#include <elf.h>
+#if HAVE_DLADDR
#define __USE_GNU // For dladdr(3) in glibc.
#include <dlfcn.h>
+#endif
#if defined(__BIONIC__)
@@ -254,6 +256,7 @@ void get_backtrace_symbols(const backtrace_frame_t* backtrace, size_t frames,
if (mi->name[0]) {
symbol->map_name = strdup(mi->name);
}
+#if HAVE_DLADDR
Dl_info info;
if (dladdr((const void*)frame->absolute_pc, &info) && info.dli_sname) {
symbol->relative_symbol_addr = (uintptr_t)info.dli_saddr
@@ -261,6 +264,7 @@ void get_backtrace_symbols(const backtrace_frame_t* backtrace, size_t frames,
symbol->symbol_name = strdup(info.dli_sname);
symbol->demangled_name = demangle_symbol_name(symbol->symbol_name);
}
+#endif
}
}
release_my_map_info_list(milist);