partial-revert-llvmorg-15-init-11205-gcead4eceb01b.patch (1671B)
1 This partially reverts commit cead4eceb01b935fae07bf4a7e91911b344d2fec for 2 causing timeouts on some webrtc tests under TSan (bug 1798613), presumably 3 because the change made llvm-symbolizer too slow. 4 5 diff --git a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp 6 index 33168abbdc38..7729d2b91c8a 100644 7 --- a/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp 8 +++ b/llvm/lib/DebugInfo/DWARF/DWARFContext.cpp 9 @@ -1173,25 +1173,7 @@ DWARFCompileUnit *DWARFContext::getCompileUnitForCodeAddress(uint64_t Address) { 10 11 DWARFCompileUnit *DWARFContext::getCompileUnitForDataAddress(uint64_t Address) { 12 uint64_t CUOffset = getDebugAranges()->findAddress(Address); 13 - if (DWARFCompileUnit *OffsetCU = getCompileUnitForOffset(CUOffset)) 14 - return OffsetCU; 15 - 16 - // Global variables are often missed by the above search, for one of two 17 - // reasons: 18 - // 1. .debug_aranges may not include global variables. On clang, it seems we 19 - // put the globals in the aranges, but this isn't true for gcc. 20 - // 2. Even if the global variable is in a .debug_arange, global variables 21 - // may not be captured in the [start, end) addresses described by the 22 - // parent compile unit. 23 - // 24 - // So, we walk the CU's and their child DI's manually, looking for the 25 - // specific global variable. 26 - for (std::unique_ptr<DWARFUnit> &CU : compile_units()) { 27 - if (DWARFDie Die = CU->getVariableForAddress(Address)) { 28 - return static_cast<DWARFCompileUnit *>(CU.get()); 29 - } 30 - } 31 - return nullptr; 32 + return getCompileUnitForOffset(CUOffset); 33 } 34 35 DWARFContext::DIEsForAddress DWARFContext::getDIEsForAddress(uint64_t Address) {