Author: Pavel Labath Date: 2020-10-30T15:20:27+01:00 New Revision: 8485ee781fcfcc2e8335093ece985d8366d3906b
URL: https://github.com/llvm/llvm-project/commit/8485ee781fcfcc2e8335093ece985d8366d3906b DIFF: https://github.com/llvm/llvm-project/commit/8485ee781fcfcc2e8335093ece985d8366d3906b.diff LOG: [lldb/DWARF] Fix dwo flavour of TestTypeGetModule SymbolFileDWARF::GetTypes was not handling dwo correctly. The fix is simple -- adding a GetNonSkeletonUnit call -- but I've snuck in a small refactor as well. Added: Modified: lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py Removed: ################################################################################ diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp index 4036b01105ea..9d6733e6a4f0 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp @@ -372,24 +372,23 @@ void SymbolFileDWARF::GetTypes(SymbolContextScope *sc_scope, TypeSet type_set; CompileUnit *comp_unit = nullptr; - DWARFUnit *dwarf_cu = nullptr; if (sc_scope) comp_unit = sc_scope->CalculateSymbolContextCompileUnit(); - if (comp_unit) { - dwarf_cu = GetDWARFCompileUnit(comp_unit); - if (!dwarf_cu) + const auto &get = [&](DWARFUnit *unit) { + if (!unit) return; - GetTypes(dwarf_cu->DIE(), dwarf_cu->GetOffset(), - dwarf_cu->GetNextUnitOffset(), type_mask, type_set); + unit = &unit->GetNonSkeletonUnit(); + GetTypes(unit->DIE(), unit->GetOffset(), unit->GetNextUnitOffset(), + type_mask, type_set); + }; + if (comp_unit) { + get(GetDWARFCompileUnit(comp_unit)); } else { DWARFDebugInfo &info = DebugInfo(); const size_t num_cus = info.GetNumUnits(); - for (size_t cu_idx = 0; cu_idx < num_cus; ++cu_idx) { - dwarf_cu = info.GetUnitAtIndex(cu_idx); - if (dwarf_cu) - GetTypes(dwarf_cu->DIE(), 0, UINT32_MAX, type_mask, type_set); - } + for (size_t cu_idx = 0; cu_idx < num_cus; ++cu_idx) + get(info.GetUnitAtIndex(cu_idx)); } std::set<CompilerType> compiler_type_set; diff --git a/lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py b/lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py index 80ce005e7ed1..14edc0a14675 100644 --- a/lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py +++ b/lldb/test/API/functionalities/type_get_module/TestTypeGetModule.py @@ -58,7 +58,6 @@ def find_type(self, type_list, name): return result - @expectedFailureAll(debug_info=["dwo"]) def test(self): self.build() target = lldbutil.run_to_breakpoint_make_target(self) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits