summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Watson <davejwatson@fb.com>2019-01-09 09:26:37 -0800
committerDave Watson <davejwatson@fb.com>2019-01-09 09:28:09 -0800
commitea40ad71f776f37e232afc52577404b9fe26bdb7 (patch)
treee13a5529947b7c5375ba9d2f7ad66a237f224871
parent6fdb704bd5499886f6d31ce8fb01632e9657594b (diff)
downloadlibunwind-ea40ad71f776f37e232afc52577404b9fe26bdb7.tar.gz
dwarf: clang doesn't respect the static alias (#102)
Clang doesn't respect the static alias, resulting in global instead of local symbols, and name collisions. Work around for clang by always going through the PLT (at a small perf hit)
-rw-r--r--src/dwarf/Gfind_proc_info-lsb.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/dwarf/Gfind_proc_info-lsb.c b/src/dwarf/Gfind_proc_info-lsb.c
index c18783e0..5e27a501 100644
--- a/src/dwarf/Gfind_proc_info-lsb.c
+++ b/src/dwarf/Gfind_proc_info-lsb.c
@@ -46,12 +46,17 @@ struct table_entry
#include "os-linux.h"
#endif
+#ifndef __clang__
static ALIAS(dwarf_search_unwind_table) int
dwarf_search_unwind_table_int (unw_addr_space_t as,
unw_word_t ip,
unw_dyn_info_t *di,
unw_proc_info_t *pi,
int need_unwind_info, void *arg);
+#else
+#define dwarf_search_unwind_table_int dwarf_search_unwind_table
+#endif
+
static int
linear_search (unw_addr_space_t as, unw_word_t ip,
unw_word_t eh_frame_start, unw_word_t eh_frame_end,