[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