summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
authorPavel Labath <pavel@labath.sk>2019-11-25 14:03:51 +0100
committerPavel Labath <pavel@labath.sk>2019-12-12 15:28:11 +0100
commit6ce1a897b6a82e18059fd3b75b8d52ff12c2a605 (patch)
treeb6274b8e0b950aa6ae436753519b20bed4634aa1 /lldb/source
parent84a9756a72d81c32972b85c1d11cfd391f5b93a6 (diff)
downloadbcm5719-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.cpp5
-rw-r--r--lldb/source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDwo.cpp4
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 &>
OpenPOWER on IntegriCloud