[compiler-rt] [compiler-rt] Add libbacktrace support on Windows (PR #216584)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 16 10:36:54 PDT 2026
https://github.com/oltolm created https://github.com/llvm/llvm-project/pull/216584
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.
>From 2c272ebe37360c83803dcc888ef8066db6fc0b59 Mon Sep 17 00:00:00 2001
From: Oleg Tolmatcev <oleg.tolmatcev at gmail.com>
Date: Thu, 30 Jul 2026 19:51:40 +0200
Subject: [PATCH] [compiler-rt] Add libbacktrace support on Windows
Co-authored-by: Hannes Domani <ssbssa at yahoo.de>
---
.../sanitizer_symbolizer_libbacktrace.cpp | 16 ++++++++--------
.../sanitizer_symbolizer_win.cpp | 8 ++++++++
2 files changed, 16 insertions(+), 8 deletions(-)
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());
More information about the llvm-commits
mailing list