[llvm] 9797a7e - [DWARF] Refactor findDebugNamesOffsets
via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 9 12:32:19 PDT 2024
Author: Fangrui Song
Date: 2024-04-09T12:32:15-07:00
New Revision: 9797a7ea6bf84b48f267c781be209951d62bc6c9
URL: https://github.com/llvm/llvm-project/commit/9797a7ea6bf84b48f267c781be209951d62bc6c9
DIFF: https://github.com/llvm/llvm-project/commit/9797a7ea6bf84b48f267c781be209951d62bc6c9.diff
LOG: [DWARF] Refactor findDebugNamesOffsets
Address some post-review comments in #82153 and move the function inside
llvm::dwarf, used by certain free functions.
Pull Request: https://github.com/llvm/llvm-project/pull/88064
Added:
Modified:
llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h b/llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
index f1d4fc72d5a727..9543b78ea61309 100644
--- a/llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
+++ b/llvm/include/llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h
@@ -804,9 +804,11 @@ class DWARFDebugNames : public DWARFAcceleratorTable {
/// Calculates the starting offsets for various sections within the
/// .debug_names section.
-void findDebugNamesOffsets(DWARFDebugNames::DWARFDebugNamesOffsets &Offsets,
- uint64_t HdrSize, const dwarf::DwarfFormat Format,
- const DWARFDebugNames::Header &Hdr);
+namespace dwarf {
+DWARFDebugNames::DWARFDebugNamesOffsets
+findDebugNamesOffsets(uint64_t EndOfHeaderOffset,
+ const DWARFDebugNames::Header &Hdr);
+}
/// If `Name` is the name of a templated function that includes template
/// parameters, returns a substring of `Name` containing no template
diff --git a/llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp b/llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp
index 9c65d85985f1bb..22c9e8cd143c2e 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFAcceleratorTable.cpp
@@ -552,31 +552,22 @@ DWARFDebugNames::NameIndex::extractAbbrev(uint64_t *Offset) {
return Abbrev(Code, dwarf::Tag(Tag), AbbrevOffset, std::move(*AttrEncOr));
}
-void llvm::findDebugNamesOffsets(
- DWARFDebugNames::DWARFDebugNamesOffsets &Offsets, uint64_t HdrSize,
- dwarf::DwarfFormat Format, const DWARFDebugNames::Header &Hdr) {
- uint32_t DwarfSize = (Format == llvm::dwarf::DwarfFormat::DWARF64) ? 8 : 4;
- uint64_t Offset = HdrSize;
- Offsets.CUsBase = Offset;
- Offset += Hdr.CompUnitCount * DwarfSize;
- Offset += Hdr.LocalTypeUnitCount * DwarfSize;
- Offset += Hdr.ForeignTypeUnitCount * 8;
-
- Offsets.BucketsBase = Offset;
- Offset += Hdr.BucketCount * 4;
-
- Offsets.HashesBase = Offset;
- if (Hdr.BucketCount > 0)
- Offset += Hdr.NameCount * 4;
-
- Offsets.StringOffsetsBase = Offset;
- Offset += Hdr.NameCount * DwarfSize;
-
- Offsets.EntryOffsetsBase = Offset;
- Offset += Hdr.NameCount * DwarfSize;
-
- Offset += Hdr.AbbrevTableSize;
- Offsets.EntriesBase = Offset;
+DWARFDebugNames::DWARFDebugNamesOffsets
+dwarf::findDebugNamesOffsets(uint64_t EndOfHeaderOffset,
+ const DWARFDebugNames::Header &Hdr) {
+ uint64_t DwarfSize = getDwarfOffsetByteSize(Hdr.Format);
+ DWARFDebugNames::DWARFDebugNamesOffsets Ret;
+ Ret.CUsBase = EndOfHeaderOffset;
+ Ret.BucketsBase = Ret.CUsBase + Hdr.CompUnitCount * DwarfSize +
+ Hdr.LocalTypeUnitCount * DwarfSize +
+ Hdr.ForeignTypeUnitCount * 8;
+ Ret.HashesBase = Ret.BucketsBase + Hdr.BucketCount * 4;
+ Ret.StringOffsetsBase =
+ Ret.HashesBase + (Hdr.BucketCount > 0 ? Hdr.NameCount * 4 : 0);
+ Ret.EntryOffsetsBase = Ret.StringOffsetsBase + Hdr.NameCount * DwarfSize;
+ Ret.EntriesBase =
+ Ret.EntryOffsetsBase + Hdr.NameCount * DwarfSize + Hdr.AbbrevTableSize;
+ return Ret;
}
Error DWARFDebugNames::NameIndex::extract() {
@@ -586,7 +577,7 @@ Error DWARFDebugNames::NameIndex::extract() {
return E;
const unsigned SectionOffsetSize = dwarf::getDwarfOffsetByteSize(Hdr.Format);
- findDebugNamesOffsets(Offsets, hdrSize, Hdr.Format, Hdr);
+ Offsets = dwarf::findDebugNamesOffsets(hdrSize, Hdr);
uint64_t Offset =
Offsets.EntryOffsetsBase + (Hdr.NameCount * SectionOffsetSize);
More information about the llvm-commits
mailing list