@@ -552,31 +552,22 @@ DWARFDebugNames::NameIndex::extractAbbrev(uint64_t *Offset) {
552
552
return Abbrev (Code, dwarf::Tag (Tag), AbbrevOffset, std::move (*AttrEncOr));
553
553
}
554
554
555
- void llvm::findDebugNamesOffsets (
556
- DWARFDebugNames::DWARFDebugNamesOffsets &Offsets, uint64_t HdrSize,
557
- dwarf::DwarfFormat Format, const DWARFDebugNames::Header &Hdr) {
558
- uint32_t DwarfSize = (Format == llvm::dwarf::DwarfFormat::DWARF64) ? 8 : 4 ;
559
- uint64_t Offset = HdrSize;
560
- Offsets.CUsBase = Offset;
561
- Offset += Hdr.CompUnitCount * DwarfSize;
562
- Offset += Hdr.LocalTypeUnitCount * DwarfSize;
563
- Offset += Hdr.ForeignTypeUnitCount * 8 ;
564
-
565
- Offsets.BucketsBase = Offset;
566
- Offset += Hdr.BucketCount * 4 ;
567
-
568
- Offsets.HashesBase = Offset;
569
- if (Hdr.BucketCount > 0 )
570
- Offset += Hdr.NameCount * 4 ;
571
-
572
- Offsets.StringOffsetsBase = Offset;
573
- Offset += Hdr.NameCount * DwarfSize;
574
-
575
- Offsets.EntryOffsetsBase = Offset;
576
- Offset += Hdr.NameCount * DwarfSize;
577
-
578
- Offset += Hdr.AbbrevTableSize ;
579
- Offsets.EntriesBase = Offset;
555
+ DWARFDebugNames::DWARFDebugNamesOffsets
556
+ dwarf::findDebugNamesOffsets (uint64_t EndOfHeaderOffset,
557
+ const DWARFDebugNames::Header &Hdr) {
558
+ uint64_t DwarfSize = getDwarfOffsetByteSize (Hdr.Format );
559
+ DWARFDebugNames::DWARFDebugNamesOffsets Ret;
560
+ Ret.CUsBase = EndOfHeaderOffset;
561
+ Ret.BucketsBase = Ret.CUsBase + Hdr.CompUnitCount * DwarfSize +
562
+ Hdr.LocalTypeUnitCount * DwarfSize +
563
+ Hdr.ForeignTypeUnitCount * 8 ;
564
+ Ret.HashesBase = Ret.BucketsBase + Hdr.BucketCount * 4 ;
565
+ Ret.StringOffsetsBase =
566
+ Ret.HashesBase + (Hdr.BucketCount > 0 ? Hdr.NameCount * 4 : 0 );
567
+ Ret.EntryOffsetsBase = Ret.StringOffsetsBase + Hdr.NameCount * DwarfSize;
568
+ Ret.EntriesBase =
569
+ Ret.EntryOffsetsBase + Hdr.NameCount * DwarfSize + Hdr.AbbrevTableSize ;
570
+ return Ret;
580
571
}
581
572
582
573
Error DWARFDebugNames::NameIndex::extract () {
@@ -586,7 +577,7 @@ Error DWARFDebugNames::NameIndex::extract() {
586
577
return E;
587
578
588
579
const unsigned SectionOffsetSize = dwarf::getDwarfOffsetByteSize (Hdr.Format );
589
- findDebugNamesOffsets ( Offsets, hdrSize, Hdr. Format , Hdr);
580
+ Offsets = dwarf::findDebugNamesOffsets (hdrSize , Hdr);
590
581
591
582
uint64_t Offset =
592
583
Offsets.EntryOffsetsBase + (Hdr.NameCount * SectionOffsetSize);
0 commit comments