[compiler-rt] [compiler-rt] Add libbacktrace support on Windows (PR #216584)

via llvm-commits llvm-commits at lists.llvm.org
Sun Aug 16 10:37:30 PDT 2026


llvmorg-github-actions[bot] wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: oltolm (oltolm)

<details>
<summary>Changes</summary>

I have split this PR from https://github.com/llvm/llvm-project/pull/209902. It's one of the patches that enables ASan and UBSan in GCC for Windows.

---
Full diff: https://github.com/llvm/llvm-project/pull/216584.diff


2 Files Affected:

- (modified) compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp (+8-8) 
- (modified) compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cpp (+8) 


``````````diff
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
index d78dab93487f1..849e5ee475eb5 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
@@ -19,15 +19,15 @@
 
 #if SANITIZER_LIBBACKTRACE
 # include "backtrace-supported.h"
-# if SANITIZER_POSIX && BACKTRACE_SUPPORTED && !BACKTRACE_USES_MALLOC
-#  include "backtrace.h"
-#  if SANITIZER_CP_DEMANGLE
-#   undef ARRAY_SIZE
-#   include "demangle.h"
+#  if BACKTRACE_SUPPORTED && !BACKTRACE_USES_MALLOC
+#    include "backtrace.h"
+#    if SANITIZER_CP_DEMANGLE
+#      undef ARRAY_SIZE
+#      include "demangle.h"
+#    endif
+#  else
+#    define SANITIZER_LIBBACKTRACE 0
 #  endif
-# else
-#  define SANITIZER_LIBBACKTRACE 0
-# endif
 #endif
 
 namespace __sanitizer {
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cpp
index 1ff8b8f1bab48..af6639d740f49 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cpp
@@ -16,6 +16,7 @@
 
 #  include "sanitizer_dbghelp.h"
 #  include "sanitizer_symbolizer_internal.h"
+#  include "sanitizer_symbolizer_libbacktrace.h"
 
 namespace __sanitizer {
 
@@ -279,6 +280,12 @@ static void ChooseSymbolizerTools(IntrusiveList<SymbolizerTool> *list,
     return;
   }
 
+#  if defined(__GNUC__) && !defined(__clang__)
+  if (SymbolizerTool* tool = LibbacktraceSymbolizer::get(allocator)) {
+    VReport(2, "Using libbacktrace symbolizer.\n");
+    list->push_back(tool);
+  }
+#  else
   // Add llvm-symbolizer.
   const char *user_path = common_flags()->external_symbolizer_path;
 
@@ -301,6 +308,7 @@ static void ChooseSymbolizerTools(IntrusiveList<SymbolizerTool> *list,
   } else {
     VReport(2, "External symbolizer is not present.\n");
   }
+#  endif
 
   // Add the dbghelp based symbolizer.
   list->push_back(new(*allocator) WinSymbolizerTool());

``````````

</details>


https://github.com/llvm/llvm-project/pull/216584


More information about the llvm-commits mailing list