summaryrefslogtreecommitdiffstats
path: root/libcorkscrew
diff options
context:
space:
mode:
Diffstat (limited to 'libcorkscrew')
-rw-r--r--libcorkscrew/backtrace.c4
-rw-r--r--libcorkscrew/map_info.c11
2 files changed, 6 insertions, 9 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);
diff --git a/libcorkscrew/map_info.c b/libcorkscrew/map_info.c
index 6a27664..3c52854 100644
--- a/libcorkscrew/map_info.c
+++ b/libcorkscrew/map_info.c
@@ -57,15 +57,13 @@ static map_info_t* parse_maps_line(const char* line)
mi->start = start;
mi->end = end;
mi->is_readable = strlen(permissions) == 4 && permissions[0] == 'r';
- mi->is_writable = strlen(permissions) == 4 && permissions[1] == 'w';
mi->is_executable = strlen(permissions) == 4 && permissions[2] == 'x';
mi->data = NULL;
memcpy(mi->name, name, name_len);
mi->name[name_len] = '\0';
ALOGV("Parsed map: start=0x%08x, end=0x%08x, "
- "is_readable=%d, is_writable=%d, is_executable=%d, name=%s",
- mi->start, mi->end,
- mi->is_readable, mi->is_writable, mi->is_executable, mi->name);
+ "is_readable=%d, is_executable=%d, name=%s",
+ mi->start, mi->end, mi->is_readable, mi->is_executable, mi->name);
}
return mi;
}
@@ -112,11 +110,6 @@ bool is_readable_map(const map_info_t* milist, uintptr_t addr) {
return mi && mi->is_readable;
}
-bool is_writable_map(const map_info_t* milist, uintptr_t addr) {
- const map_info_t* mi = find_map_info(milist, addr);
- return mi && mi->is_writable;
-}
-
bool is_executable_map(const map_info_t* milist, uintptr_t addr) {
const map_info_t* mi = find_map_info(milist, addr);
return mi && mi->is_executable;