summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp')
-rw-r--r--llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp32
1 files changed, 8 insertions, 24 deletions
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp b/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
index b662e88816f..e5d33e13644 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFUnit.cpp
@@ -186,16 +186,9 @@ DWARFUnit::DWARFUnit(DWARFContext &DC, const DWARFSection &Section,
if (auto *IndexEntry = Header.getIndexEntry())
if (const auto *C = IndexEntry->getOffset(DW_SECT_LOC))
Data = Data.substr(C->Offset, C->Length);
-
- DWARFDataExtractor DWARFData =
- Header.getVersion() >= 5
- ? DWARFDataExtractor(Context.getDWARFObj(),
- Context.getDWARFObj().getLoclistsDWOSection(),
- isLittleEndian, getAddressByteSize())
- : DWARFDataExtractor(Data, isLittleEndian, getAddressByteSize());
- LocTable =
- std::make_unique<DWARFDebugLoclists>(DWARFData, Header.getVersion());
-
+ LocTable = std::make_unique<DWARFDebugLoclists>(
+ DWARFDataExtractor(Data, isLittleEndian, getAddressByteSize()),
+ Header.getVersion());
} else if (Header.getVersion() >= 5) {
LocTable = std::make_unique<DWARFDebugLoclists>(
DWARFDataExtractor(Context.getDWARFObj(),
@@ -509,23 +502,14 @@ Error DWARFUnit::tryExtractDIEsIfNeeded(bool CUDieOnly) {
RangeSectionBase = RngListTable->getHeaderSize();
}
- // In a split dwarf unit, there is no DW_AT_loclists_base attribute.
- // Setting LocSectionBase to point past the table header.
- if (IsDWO)
- setLocSection(&Context.getDWARFObj().getLoclistsDWOSection(),
- DWARFListTableHeader::getHeaderSize(Header.getFormat()));
- else
- setLocSection(&Context.getDWARFObj().getLoclistsSection(),
- toSectionOffset(UnitDie.find(DW_AT_loclists_base), 0));
+ // FIXME: add loclists.dwo support
+ setLocSection(&Context.getDWARFObj().getLoclistsSection(),
+ toSectionOffset(UnitDie.find(DW_AT_loclists_base), 0));
if (LocSection->Data.size()) {
- if (IsDWO)
- LoclistTableHeader.emplace(".debug_loclists.dwo", "locations");
- else
- LoclistTableHeader.emplace(".debug_loclists", "locations");
-
+ LoclistTableHeader.emplace(".debug_loclists", "locations");
+ uint64_t Offset = LocSectionBase;
uint64_t HeaderSize = DWARFListTableHeader::getHeaderSize(Header.getFormat());
- uint64_t Offset = getLocSectionBase();
DWARFDataExtractor Data(Context.getDWARFObj(), *LocSection,
isLittleEndian, getAddressByteSize());
if (Offset < HeaderSize)
OpenPOWER on IntegriCloud