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 13:41:55 -0800
commit5ea02ede42b336fe6e9a5bfe5565d49d622d3914 (patch)
tree36ea26b3b88f476d9799f1deed1cee14c6082fa5
parent070ae59f851d96cb31d3d7f538e3db7e74de7346 (diff)
downloadlibunwind-5ea02ede42b336fe6e9a5bfe5565d49d622d3914.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 a186f870..275419d9 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,