[Lldb-commits] [lldb] 8485ee7 - [lldb/DWARF] Fix dwo flavour of TestTypeGetModule
Pavel Labath via lldb-commits
lldb-commits at lists.llvm.org
Fri Oct 30 07:20:38 PDT 2020
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)
More information about the lldb-commits
mailing list