diff options
| author | Pavel Labath <pavel@labath.sk> | 2019-11-25 14:03:51 +0100 |
|---|---|---|
| committer | Pavel Labath <pavel@labath.sk> | 2019-12-12 15:28:11 +0100 |
| commit | 6ce1a897b6a82e18059fd3b75b8d52ff12c2a605 (patch) | |
| tree | b6274b8e0b950aa6ae436753519b20bed4634aa1 /lldb/source | |
| parent | 84a9756a72d81c32972b85c1d11cfd391f5b93a6 (diff) | |
| download | bcm5719-llvm-6ce1a897b6a82e18059fd3b75b8d52ff12c2a605.tar.gz bcm5719-llvm-6ce1a897b6a82e18059fd3b75b8d52ff12c2a605.zip | |
[lldb/DWARF] Fix v5 location lists for dwo files
Dwo files don't have a DW_AT_loclists_base -- set one explicitly. Also,
make sure we use the correct location list flavour for v5.
Diffstat (limited to 'lldb/source')
| -rw-r--r-- | lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp | 5 | ||||
| -rw-r--r-- | lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.cpp | 4 |
2 files changed, 8 insertions, 1 deletions
diff --git a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp index 77c3b9835cd..a7df540ba56 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/DWARFUnit.cpp @@ -377,6 +377,11 @@ void DWARFUnit::AddUnitDIE(const DWARFDebugInfoEntry &cu_die) { .GetByteSize() > 0) dwo_cu->SetRangesBase(llvm::DWARFListTableHeader::getHeaderSize(DWARF32)); + if (GetVersion() >= 5 && + m_dwo_symbol_file->get_debug_loclists_data().GetByteSize() > 0) + dwo_cu->SetLoclistsBase(llvm::DWARFListTableHeader::getHeaderSize(DWARF32)); + dwo_cu->SetBaseAddress(GetBaseAddress()); + for (size_t i = 0; i < m_dwo_symbol_file->DebugInfo()->GetNumUnits(); ++i) { DWARFUnit *unit = m_dwo_symbol_file->DebugInfo()->GetUnitAtIndex(i); SetDwoStrOffsetsBase(unit); diff --git a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.cpp b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.cpp index de5f79602d4..331417fe5cd 100644 --- a/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.cpp +++ b/lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.cpp @@ -139,7 +139,9 @@ SymbolFileDWARF &SymbolFileDWARFDwo::GetBaseSymbolFile() { DWARFExpression::LocationListFormat SymbolFileDWARFDwo::GetLocationListFormat() const { - return DWARFExpression::SplitDwarfLocationList; + return m_base_dwarf_cu.GetVersion() >= 5 + ? DWARFExpression::LocLists + : DWARFExpression::SplitDwarfLocationList; } llvm::Expected<TypeSystem &> |

