1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00

[DWARFYAML] Replace InitialLength with Format and Length. NFC.

This change replaces the InitialLength of pub-tables with Format and
Length. All the InitialLength fields have been removed.

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D85880
This commit is contained in:
Xing GUO 2020-08-13 18:37:58 +08:00
parent ac8a8b4ad9
commit b9e787ce80
13 changed files with 52 additions and 123 deletions

View File

@ -26,26 +26,6 @@
namespace llvm {
namespace DWARFYAML {
struct InitialLength {
uint32_t TotalLength;
uint64_t TotalLength64;
bool isDWARF64() const { return TotalLength == UINT32_MAX; }
uint64_t getLength() const {
return isDWARF64() ? TotalLength64 : TotalLength;
}
void setLength(uint64_t Len) {
if (Len >= (uint64_t)UINT32_MAX) {
TotalLength64 = Len;
TotalLength = UINT32_MAX;
} else {
TotalLength = Len;
}
}
};
struct AttributeAbbrev {
llvm::dwarf::Attribute Attribute;
llvm::dwarf::Form Form;
@ -95,7 +75,8 @@ struct PubEntry {
};
struct PubSection {
InitialLength Length;
dwarf::DwarfFormat Format;
yaml::Hex64 Length;
uint16_t Version;
uint32_t UnitOffset;
uint32_t UnitSize;
@ -375,10 +356,6 @@ template <> struct MappingTraits<DWARFYAML::StringOffsetsTable> {
static void mapping(IO &IO, DWARFYAML::StringOffsetsTable &StrOffsetsTable);
};
template <> struct MappingTraits<DWARFYAML::InitialLength> {
static void mapping(IO &IO, DWARFYAML::InitialLength &DWARF);
};
template <> struct ScalarEnumerationTraits<dwarf::DwarfFormat> {
static void enumeration(IO &IO, dwarf::DwarfFormat &Format) {
IO.enumCase(Format, "DWARF32", dwarf::DWARF32);

View File

@ -68,13 +68,6 @@ static void ZeroFillBytes(raw_ostream &OS, size_t Size) {
OS.write(reinterpret_cast<char *>(FillData.data()), Size);
}
static void writeInitialLength(const DWARFYAML::InitialLength &Length,
raw_ostream &OS, bool IsLittleEndian) {
writeInteger((uint32_t)Length.TotalLength, OS, IsLittleEndian);
if (Length.isDWARF64())
writeInteger((uint64_t)Length.TotalLength64, OS, IsLittleEndian);
}
static void writeInitialLength(const dwarf::DwarfFormat Format,
const uint64_t Length, raw_ostream &OS,
bool IsLittleEndian) {
@ -213,7 +206,7 @@ Error DWARFYAML::emitDebugRanges(raw_ostream &OS, const DWARFYAML::Data &DI) {
static Error emitPubSection(raw_ostream &OS, const DWARFYAML::PubSection &Sect,
bool IsLittleEndian, bool IsGNUPubSec = false) {
writeInitialLength(Sect.Length, OS, IsLittleEndian);
writeInitialLength(Sect.Format, Sect.Length, OS, IsLittleEndian);
writeInteger((uint16_t)Sect.Version, OS, IsLittleEndian);
writeInteger((uint32_t)Sect.UnitOffset, OS, IsLittleEndian);
writeInteger((uint32_t)Sect.UnitSize, OS, IsLittleEndian);

View File

@ -136,6 +136,7 @@ void MappingTraits<DWARFYAML::PubEntry>::mapping(IO &IO,
void MappingTraits<DWARFYAML::PubSection>::mapping(
IO &IO, DWARFYAML::PubSection &Section) {
IO.mapOptional("Format", Section.Format, dwarf::DWARF32);
IO.mapRequired("Length", Section.Length);
IO.mapRequired("Version", Section.Version);
IO.mapRequired("UnitOffset", Section.UnitOffset);
@ -286,13 +287,6 @@ void MappingTraits<DWARFYAML::ListTable<EntryType>>::mapping(
IO.mapOptional("Lists", ListTable.Lists);
}
void MappingTraits<DWARFYAML::InitialLength>::mapping(
IO &IO, DWARFYAML::InitialLength &InitialLength) {
IO.mapRequired("TotalLength", InitialLength.TotalLength);
if (InitialLength.isDWARF64())
IO.mapRequired("TotalLength64", InitialLength.TotalLength64);
}
} // end namespace yaml
} // end namespace llvm

View File

@ -403,8 +403,7 @@ DWARF:
- Address: 0x0000000100000F50
Length: 52
debug_pubnames:
Length:
TotalLength: 23
Length: 23
Version: 2
UnitOffset: 0
UnitSize: 121
@ -412,8 +411,7 @@ DWARF:
- DieOffset: 0x0000002A
Name: main
debug_pubtypes:
Length:
TotalLength: 31
Length: 31
Version: 2
UnitOffset: 0
UnitSize: 121

View File

@ -308,8 +308,7 @@ DWARF:
- int
- char
debug_pubnames:
Length:
TotalLength: 23
Length: 23
Version: 2
UnitOffset: 0
UnitSize: 121
@ -317,8 +316,7 @@ DWARF:
- DieOffset: 0x0000002A
Name: main
debug_pubtypes:
Length:
TotalLength: 31
Length: 31
Version: 2
UnitOffset: 0
UnitSize: 121
@ -331,8 +329,7 @@ DWARF:
#CHECK: DWARF:
#CHECK: debug_pubnames:
#CHECK: Length:
#CHECK: TotalLength: 23
#CHECK: Length: 0x0000000000000017
#CHECK: Version: 2
#CHECK: UnitOffset: 0
#CHECK: UnitSize: 121
@ -340,8 +337,7 @@ DWARF:
#CHECK: - DieOffset: 0x0000002A
#CHECK: Name: main
#CHECK: debug_pubtypes:
#CHECK: Length:
#CHECK: TotalLength: 31
#CHECK: Length: 0x000000000000001F
#CHECK: Version: 2
#CHECK: UnitOffset: 0
#CHECK: UnitSize: 121

View File

@ -387,8 +387,7 @@ Slices:
- Address: 0x000000000000BFF0
Length: 16
debug_pubnames:
Length:
TotalLength: 23
Length: 23
Version: 2
UnitOffset: 0
UnitSize: 119
@ -396,8 +395,7 @@ Slices:
- DieOffset: 0x00000026
Name: main
debug_pubtypes:
Length:
TotalLength: 31
Length: 31
Version: 2
UnitOffset: 0
UnitSize: 119
@ -865,8 +863,7 @@ Slices:
- Address: 0x0000000100007F9C
Length: 28
debug_pubnames:
Length:
TotalLength: 23
Length: 23
Version: 2
UnitOffset: 0
UnitSize: 126
@ -874,8 +871,7 @@ Slices:
- DieOffset: 0x0000002A
Name: main
debug_pubtypes:
Length:
TotalLength: 31
Length: 31
Version: 2
UnitOffset: 0
UnitSize: 126

View File

@ -550,8 +550,7 @@ DWARF:
- Address: 0x0000000100000F90
Length: 37
debug_pubnames:
Length:
TotalLength: 43
Length: 43
Version: 2
UnitOffset: 0
UnitSize: 224
@ -563,8 +562,7 @@ DWARF:
- DieOffset: 0x00000069
Name: main
debug_pubtypes:
Length:
TotalLength: 31
Length: 31
Version: 2
UnitOffset: 0
UnitSize: 224

View File

@ -44,8 +44,7 @@ FileHeader:
Machine: EM_X86_64
DWARF:
debug_gnu_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -140,8 +139,7 @@ Sections:
Size: 0x10
DWARF:
debug_gnu_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -164,8 +162,7 @@ Sections:
Content: "00"
DWARF:
debug_gnu_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -227,8 +224,7 @@ Sections:
Type: SHT_STRTAB
DWARF:
debug_gnu_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -238,7 +234,7 @@ DWARF:
# RUN: not yaml2obj --docnum=8 %s -o %t8.o 2>&1 | FileCheck %s --check-prefix=MISSING-KEY --ignore-case
# MISSING-KEY: YAML:260:9: error: missing required key 'Descriptor'
# MISSING-KEY: YAML:{{.*}}:9: error: missing required key 'Descriptor'
# MISSING-KEY-NEXT: - DieOffset: 0x12345678
# MISSING-KEY-NEXT: ^
# MISSING-KEY-NEXT: yaml2obj: error: failed to parse YAML input: Invalid argument
@ -251,8 +247,7 @@ FileHeader:
Machine: EM_X86_64
DWARF:
debug_gnu_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321

View File

@ -44,8 +44,7 @@ FileHeader:
Machine: EM_X86_64
DWARF:
debug_gnu_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -140,8 +139,7 @@ Sections:
Size: 0x10
DWARF:
debug_gnu_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -164,8 +162,7 @@ Sections:
Content: "00"
DWARF:
debug_gnu_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -227,8 +224,7 @@ Sections:
Type: SHT_STRTAB
DWARF:
debug_gnu_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -238,7 +234,7 @@ DWARF:
# RUN: not yaml2obj --docnum=8 %s -o %t8.o 2>&1 | FileCheck %s --check-prefix=MISSING-KEY --ignore-case
# MISSING-KEY: YAML:260:9: error: missing required key 'Descriptor'
# MISSING-KEY: YAML:{{.*}}:9: error: missing required key 'Descriptor'
# MISSING-KEY-NEXT: - DieOffset: 0x12345678
# MISSING-KEY-NEXT: ^
# MISSING-KEY-NEXT: yaml2obj: error: failed to parse YAML input: Invalid argument
@ -251,8 +247,7 @@ FileHeader:
Machine: EM_X86_64
DWARF:
debug_gnu_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321

View File

@ -43,8 +43,7 @@ FileHeader:
Machine: EM_X86_64
DWARF:
debug_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -136,8 +135,7 @@ Sections:
Size: 0x10
DWARF:
debug_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -160,8 +158,7 @@ Sections:
Content: "00"
DWARF:
debug_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -223,8 +220,7 @@ Sections:
Type: SHT_STRTAB
DWARF:
debug_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321

View File

@ -43,8 +43,8 @@ FileHeader:
Machine: EM_X86_64
DWARF:
debug_pubtypes:
Length:
TotalLength: 0x1234
Format: [[FORMAT=DWARF32]]
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -136,8 +136,7 @@ Sections:
Size: 0x10
DWARF:
debug_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -160,8 +159,7 @@ Sections:
Content: "00"
DWARF:
debug_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321
@ -223,8 +221,7 @@ Sections:
Type: SHT_STRTAB
DWARF:
debug_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x1234
UnitSize: 0x4321

View File

@ -19,13 +19,6 @@
using namespace llvm;
void dumpInitialLength(DataExtractor &Data, uint64_t &Offset,
DWARFYAML::InitialLength &InitialLength) {
InitialLength.TotalLength = Data.getU32(&Offset);
if (InitialLength.isDWARF64())
InitialLength.TotalLength64 = Data.getU64(&Offset);
}
void dumpDebugAbbrev(DWARFContext &DCtx, DWARFYAML::Data &Y) {
auto AbbrevSetPtr = DCtx.getDebugAbbrev();
if (AbbrevSetPtr) {
@ -132,11 +125,18 @@ static DWARFYAML::PubSection dumpPubSection(const DWARFContext &DCtx,
DCtx.isLittleEndian(), 0);
DWARFYAML::PubSection Y;
uint64_t Offset = 0;
dumpInitialLength(PubSectionData, Offset, Y.Length);
uint64_t Length = PubSectionData.getU32(&Offset);
if (Length == dwarf::DW_LENGTH_DWARF64) {
Y.Format = dwarf::DWARF64;
Y.Length = PubSectionData.getU64(&Offset);
} else {
Y.Format = dwarf::DWARF32;
Y.Length = Length;
}
Y.Version = PubSectionData.getU16(&Offset);
Y.UnitOffset = PubSectionData.getU32(&Offset);
Y.UnitSize = PubSectionData.getU32(&Offset);
while (Offset < Y.Length.getLength()) {
while (Offset < Y.Length) {
DWARFYAML::PubEntry NewEntry;
NewEntry.DieOffset = PubSectionData.getU32(&Offset);
if (IsGNUStyle)

View File

@ -68,8 +68,7 @@ Blah: unexpected
TEST(DebugPubSection, TestDebugPubSection) {
StringRef Yaml = R"(
debug_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@ -79,8 +78,7 @@ debug_pubnames:
- DieOffset: 0x4321
Name: def
debug_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@ -115,8 +113,7 @@ debug_pubtypes:
TEST(DebugPubSection, TestUnexpectedDescriptor) {
StringRef Yaml = R"(
debug_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@ -133,8 +130,7 @@ debug_pubnames:
TEST(DebugGNUPubSection, TestDebugGNUPubSections) {
StringRef Yaml = R"(
debug_gnu_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@ -146,8 +142,7 @@ debug_gnu_pubnames:
Descriptor: 0x34
Name: def
debug_gnu_pubtypes:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@ -188,8 +183,7 @@ debug_gnu_pubtypes:
TEST(DebugGNUPubSection, TestMissingDescriptor) {
StringRef Yaml = R"(
debug_gnu_pubnames:
Length:
TotalLength: 0x1234
Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00