diff --git a/compiler-rt/lib/sanitizer_common/CMakeLists.txt b/compiler-rt/lib/sanitizer_common/CMakeLists.txt index b9768212de97..2683a37a32ca 100644 --- a/compiler-rt/lib/sanitizer_common/CMakeLists.txt +++ b/compiler-rt/lib/sanitizer_common/CMakeLists.txt @@ -13,9 +13,7 @@ set(SANITIZER_SOURCES sanitizer_printf.cc sanitizer_stackdepot.cc sanitizer_stacktrace.cc - sanitizer_symbolizer.cc sanitizer_symbolizer_itanium.cc - sanitizer_symbolizer_linux.cc sanitizer_symbolizer_mac.cc sanitizer_symbolizer_win.cc sanitizer_thread_registry.cc @@ -27,6 +25,8 @@ set(SANITIZER_LIBCDEP_SOURCES sanitizer_linux_libcdep.cc sanitizer_posix_libcdep.cc sanitizer_stoptheworld_linux_libcdep.cc + sanitizer_symbolizer_libcdep.cc + sanitizer_symbolizer_linux_libcdep.cc ) # Explicitly list all sanitizer_common headers. Not all of these are diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc b/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc index 143019b9efeb..1114638f15ec 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_stacktrace.cc @@ -85,7 +85,7 @@ void StackTrace::PrintStack(const uptr *addr, uptr size, frame_num++; } } - if (symbolize && addr_frames_num == 0) { + if (symbolize && addr_frames_num == 0 && SymbolizeCode) { // Use our own (online) symbolizer, if necessary. addr_frames_num = SymbolizeCode(pc, addr_frames.data(), addr_frames.size()); diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h index d029ccdba1e9..54f3c682cf16 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.h @@ -66,7 +66,8 @@ struct DataInfo { // for a given address (in all inlined functions). Returns the number // of descriptions actually filled. // This function should NOT be called from two threads simultaneously. -uptr SymbolizeCode(uptr address, AddressInfo *frames, uptr max_frames); +uptr SymbolizeCode(uptr address, AddressInfo *frames, uptr max_frames) + SANITIZER_WEAK_ATTRIBUTE; bool SymbolizeData(uptr address, DataInfo *info); bool IsSymbolizerAvailable(); diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc similarity index 99% rename from compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc rename to compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc index 15fd057774a7..ad339e21a927 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cc @@ -1,4 +1,4 @@ -//===-- sanitizer_symbolizer.cc -------------------------------------------===// +//===-- sanitizer_symbolizer_libcdep.cc -----------------------------------===// // // The LLVM Compiler Infrastructure // diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_linux.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_linux_libcdep.cc similarity index 98% rename from compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_linux.cc rename to compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_linux_libcdep.cc index 5b2910d1f9f1..d0795b71a34a 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_linux.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_linux_libcdep.cc @@ -1,4 +1,4 @@ -//===-- sanitizer_symbolizer_linux.cc -------------------------------------===// +//===-- sanitizer_symbolizer_linux_libcdep.cc -----------------------------===// // // The LLVM Compiler Infrastructure //