diff options
Diffstat (limited to 'llvm/lib/DebugInfo/DWARF/DWARFUnitIndex.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/DWARF/DWARFUnitIndex.cpp | 64 |
1 files changed, 5 insertions, 59 deletions
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFUnitIndex.cpp b/llvm/lib/DebugInfo/DWARF/DWARFUnitIndex.cpp index 0bb786d7b72..f97a68f860a 100644 --- a/llvm/lib/DebugInfo/DWARF/DWARFUnitIndex.cpp +++ b/llvm/lib/DebugInfo/DWARF/DWARFUnitIndex.cpp @@ -26,7 +26,10 @@ bool DWARFUnitIndex::Header::parse(DataExtractor IndexData, } void DWARFUnitIndex::Header::dump(raw_ostream &OS) const { - OS << format("version = %u slots = %u\n\n", Version, NumBuckets); + OS << "Index header:\n" << format(" version: %u\n", Version) + << format(" columns: %u\n", NumColumns) + << format(" units: %u\n", NumUnits) + << format(" buckets: %u\n", NumBuckets); } bool DWARFUnitIndex::parse(DataExtractor IndexData) { @@ -39,45 +42,6 @@ bool DWARFUnitIndex::parse(DataExtractor IndexData) { (2 * Header.NumUnits + 1) * 4 * Header.NumColumns)) return false; - Rows = llvm::make_unique<HashRow[]>(Header.NumBuckets); - auto Contribs = - llvm::make_unique<HashRow::SectionContribution *[]>(Header.NumUnits); - ColumnKinds = llvm::make_unique<DwarfSection[]>(Header.NumColumns); - - // Read Hash Table of Signatures - for (unsigned i = 0; i != Header.NumBuckets; ++i) - Rows[i].Signature = IndexData.getU64(&Offset); - - // Read Parallel Table of Indexes - for (unsigned i = 0; i != Header.NumBuckets; ++i) { - auto Index = IndexData.getU32(&Offset); - if (!Index) - continue; - Rows[i].Contributions = - llvm::make_unique<HashRow::SectionContribution[]>(Header.NumColumns); - Contribs[Index - 1] = Rows[i].Contributions.get(); - } - - // Read the Column Headers - for (unsigned i = 0; i != Header.NumColumns; ++i) - ColumnKinds[i] = static_cast<DwarfSection>(IndexData.getU32(&Offset)); - - // Read Table of Section Offsets - for (unsigned i = 0; i != Header.NumUnits; ++i) { - auto *Contrib = Contribs[i]; - for (unsigned i = 0; i != Header.NumColumns; ++i) { - Contrib[i].Offset = IndexData.getU32(&Offset); - } - } - - // Read Table of Section Sizes - for (unsigned i = 0; i != Header.NumUnits; ++i) { - auto *Contrib = Contribs[i]; - for (unsigned i = 0; i != Header.NumColumns; ++i) { - Contrib[i].Size = IndexData.getU32(&Offset); - } - } - return true; } @@ -100,24 +64,6 @@ StringRef DWARFUnitIndex::getColumnHeader(DwarfSection DS) { void DWARFUnitIndex::dump(raw_ostream &OS) const { Header.dump(OS); - OS << "Index Signature "; - for (unsigned i = 0; i != Header.NumColumns; ++i) - OS << format(" %-24s", getColumnHeader(ColumnKinds[i])); - OS << "\n----- ------------------"; - for (unsigned i = 0; i != Header.NumColumns; ++i) - OS << " ------------------------"; - OS << '\n'; - for (unsigned i = 0; i != Header.NumBuckets; ++i) { - auto &Row = Rows[i]; - if (auto *Contribs = Row.Contributions.get()) { - OS << format("%5u 0x%016" PRIx64 " ", i, Row.Signature); - for (unsigned i = 0; i != Header.NumColumns; ++i) { - auto &Contrib = Contribs[i]; - OS << format("[0x%08u, 0x%08u) ", Contrib.Offset, - Contrib.Offset + Contrib.Size); - } - OS << '\n'; - } - } } + } |