mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-11 21:56:15 +00:00
Add support for the pubnames section to llvm-dwarfdump.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174976 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
de53477c91
commit
e38825f490
@ -106,6 +106,7 @@ enum DIDumpType {
|
||||
DIDT_InfoDwo,
|
||||
DIDT_Line,
|
||||
DIDT_Ranges,
|
||||
DIDT_Pubnames,
|
||||
DIDT_Str,
|
||||
DIDT_StrDwo,
|
||||
DIDT_StrOffsetsDwo
|
||||
|
@ -88,6 +88,24 @@ void DWARFContext::dump(raw_ostream &OS, DIDumpType DumpType) {
|
||||
rangeList.dump(OS);
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_Pubnames) {
|
||||
OS << "\n.debug_pubnames contents:\n";
|
||||
DataExtractor pubNames(getPubNamesSection(), isLittleEndian(), 0);
|
||||
offset = 0;
|
||||
OS << "Length: " << pubNames.getU32(&offset) << "\n";
|
||||
OS << "Version: " << pubNames.getU16(&offset) << "\n";
|
||||
OS << "Offset in .debug_info: " << pubNames.getU32(&offset) << "\n";
|
||||
OS << "Size: " << pubNames.getU32(&offset) << "\n";
|
||||
OS << "\n Offset Name\n";
|
||||
while (offset < getPubNamesSection().size()) {
|
||||
uint32_t n = pubNames.getU32(&offset);
|
||||
if (n == 0)
|
||||
break;
|
||||
OS << format("%8x ", n);
|
||||
OS << pubNames.getCStr(&offset) << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
if (DumpType == DIDT_All || DumpType == DIDT_AbbrevDwo) {
|
||||
OS << "\n.debug_abbrev.dwo contents:\n";
|
||||
getDebugAbbrevDWO()->dump(OS);
|
||||
@ -494,6 +512,8 @@ DWARFContextInMemory::DWARFContextInMemory(object::ObjectFile *Obj) :
|
||||
RangeDWOSection = data;
|
||||
RangeSection = data;
|
||||
}
|
||||
else if (name == "debug_pubnames")
|
||||
PubNamesSection = data;
|
||||
else if (name == "debug_info.dwo")
|
||||
InfoDWOSection = data;
|
||||
else if (name == "debug_abbrev.dwo")
|
||||
|
@ -111,6 +111,7 @@ public:
|
||||
virtual StringRef getLineSection() = 0;
|
||||
virtual StringRef getStringSection() = 0;
|
||||
virtual StringRef getRangeSection() = 0;
|
||||
virtual StringRef getPubNamesSection() = 0;
|
||||
|
||||
// Sections for DWARF5 split dwarf proposal.
|
||||
virtual StringRef getInfoDWOSection() = 0;
|
||||
@ -149,6 +150,7 @@ class DWARFContextInMemory : public DWARFContext {
|
||||
StringRef LineSection;
|
||||
StringRef StringSection;
|
||||
StringRef RangeSection;
|
||||
StringRef PubNamesSection;
|
||||
|
||||
// Sections for DWARF5 split dwarf proposal.
|
||||
RelocAddrMap InfoDWORelocMap;
|
||||
@ -172,6 +174,7 @@ public:
|
||||
virtual StringRef getLineSection() { return LineSection; }
|
||||
virtual StringRef getStringSection() { return StringSection; }
|
||||
virtual StringRef getRangeSection() { return RangeSection; }
|
||||
virtual StringRef getPubNamesSection() { return PubNamesSection; }
|
||||
|
||||
// Sections for DWARF5 split dwarf proposal.
|
||||
virtual StringRef getInfoDWOSection() { return InfoDWOSection; }
|
||||
|
@ -65,6 +65,7 @@ DumpType("debug-dump", cl::init(DIDT_All),
|
||||
clEnumValN(DIDT_Line, "line", ".debug_line"),
|
||||
clEnumValN(DIDT_Frames, "frames", ".debug_frame"),
|
||||
clEnumValN(DIDT_Ranges, "ranges", ".debug_ranges"),
|
||||
clEnumValN(DIDT_Pubnames, "pubnames", ".debug_pubnames"),
|
||||
clEnumValN(DIDT_Str, "str", ".debug_str"),
|
||||
clEnumValN(DIDT_StrDwo, "str.dwo", ".debug_str.dwo"),
|
||||
clEnumValN(DIDT_StrOffsetsDwo, "str_offsets.dwo", ".debug_str_offsets.dwo"),
|
||||
|
Loading…
Reference in New Issue
Block a user