summaryrefslogtreecommitdiffstats
path: root/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch
diff options
context:
space:
mode:
Diffstat (limited to 'build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch')
-rw-r--r--build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch b/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch
new file mode 100644
index 0000000000..85621ab450
--- /dev/null
+++ b/build/build-clang/partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch
@@ -0,0 +1,35 @@
+This partially reverts commit cead4eceb01b935fae07bf4a7e91911b344d2fec for
+causing timeouts on some webrtc tests under TSan (bug 1798613), presumably
+because the change made llvm-symbolizer too slow.
+
+diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+index 33168abbdc38..7729d2b91c8a 100644
+--- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
++++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp
+@@ -1173,25 +1173,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForCodeAddress(uint64_t Address) {
+
+ DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) {
+ uint64_t CUOffset = getDebugAranges()->findAddress(Address);
+- if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset))
+- return OffsetCU;
+-
+- // Global variables are often missed by the above search, for one of two
+- // reasons:
+- // 1. .debug_aranges may not include global variables. On clang, it seems we
+- // put the globals in the aranges, but this isn't true for gcc.
+- // 2. Even if the global variable is in a .debug_arange, global variables
+- // may not be captured in the [start, end) addresses described by the
+- // parent compile unit.
+- //
+- // So, we walk the CU's and their child DI's manually, looking for the
+- // specific global variable.
+- for (std::unique_ptr<DWARFUnit> &CU : compile_units()) {
+- if (DWARFDie Die = CU->getVariableForAddress(Address)) {
+- return static_cast<DWARFCompileUnit *>(CU.get());
+- }
+- }
+- return nullptr;
++ return getCompileUnitForOffset(CUOffset);
+ }
+
+ DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address) {