[llvm] b7d5d1e - [DWARFYAML] Replace InitialLength with Format and Length. NFC.
Xing GUO via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 13 03:39:20 PDT 2020
Author: Xing GUO
Date: 2020-08-13T18:39:03+08:00
New Revision: b7d5d1ec64340fc38fe1c7416814b9369ed1a818
URL: https://github.com/llvm/llvm-project/commit/b7d5d1ec64340fc38fe1c7416814b9369ed1a818
DIFF: https://github.com/llvm/llvm-project/commit/b7d5d1ec64340fc38fe1c7416814b9369ed1a818.diff
LOG: [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
Added:
Modified:
llvm/include/llvm/ObjectYAML/DWARFYAML.h
llvm/lib/ObjectYAML/DWARFEmitter.cpp
llvm/lib/ObjectYAML/DWARFYAML.cpp
llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml
llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml
llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml
llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml
llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml
llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml
llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubnames.yaml
llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubtypes.yaml
llvm/tools/obj2yaml/dwarf2yaml.cpp
llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/ObjectYAML/DWARFYAML.h b/llvm/include/llvm/ObjectYAML/DWARFYAML.h
index e548f2a236f0e..88a0543b1c9fe 100644
--- a/llvm/include/llvm/ObjectYAML/DWARFYAML.h
+++ b/llvm/include/llvm/ObjectYAML/DWARFYAML.h
@@ -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);
diff --git a/llvm/lib/ObjectYAML/DWARFEmitter.cpp b/llvm/lib/ObjectYAML/DWARFEmitter.cpp
index a20322cc766d5..b0d2a8b42b9b6 100644
--- a/llvm/lib/ObjectYAML/DWARFEmitter.cpp
+++ b/llvm/lib/ObjectYAML/DWARFEmitter.cpp
@@ -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);
diff --git a/llvm/lib/ObjectYAML/DWARFYAML.cpp b/llvm/lib/ObjectYAML/DWARFYAML.cpp
index 01a5d75c50b6a..1cd2b8bd54ab1 100644
--- a/llvm/lib/ObjectYAML/DWARFYAML.cpp
+++ b/llvm/lib/ObjectYAML/DWARFYAML.cpp
@@ -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
diff --git a/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml b/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml
index 5acca5ccb7fc3..0b21ce77f8f9c 100644
--- a/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml
+++ b/llvm/test/ObjectYAML/MachO/DWARF-debug_line.yaml
@@ -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
diff --git a/llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml b/llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml
index 05c4f66603154..4350fcc6cad15 100644
--- a/llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml
+++ b/llvm/test/ObjectYAML/MachO/DWARF-pubsections.yaml
@@ -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
diff --git a/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml
index ebb82b5492e6a..34f0285a169c0 100644
--- a/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml
+++ b/llvm/test/tools/llvm-gsymutil/ARM_AArch64/fat-macho-dwarf.yaml
@@ -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
diff --git a/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml b/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml
index fa642d1120679..f32bcc8566e32 100644
--- a/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml
+++ b/llvm/test/tools/llvm-gsymutil/X86/mach-dwarf.yaml
@@ -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
diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml
index 71c7981117554..d5db4b4bd61d9 100644
--- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml
+++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubnames.yaml
@@ -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
diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml
index b88d21b5fc7af..18eca47fb24e5 100644
--- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml
+++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-gnu-pubtypes.yaml
@@ -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
diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubnames.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubnames.yaml
index 2dce4b69f57f2..f62da793ff8bd 100644
--- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubnames.yaml
+++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubnames.yaml
@@ -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
diff --git a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubtypes.yaml b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubtypes.yaml
index 71e8193eb1d68..d286f27f8fd42 100644
--- a/llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubtypes.yaml
+++ b/llvm/test/tools/yaml2obj/ELF/DWARF/debug-pubtypes.yaml
@@ -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
diff --git a/llvm/tools/obj2yaml/dwarf2yaml.cpp b/llvm/tools/obj2yaml/dwarf2yaml.cpp
index 65315ca01fa4b..6ae94bf340f11 100644
--- a/llvm/tools/obj2yaml/dwarf2yaml.cpp
+++ b/llvm/tools/obj2yaml/dwarf2yaml.cpp
@@ -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)
diff --git a/llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp b/llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp
index a2addc8f2fa50..91febffdfcc3a 100644
--- a/llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp
+++ b/llvm/unittests/ObjectYAML/DWARFYAMLTest.cpp
@@ -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 @@ TEST(DebugPubSection, TestDebugPubSection) {
- DieOffset: 0x4321
Name: def
debug_pubtypes:
- Length:
- TotalLength: 0x1234
+ Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@@ -115,8 +113,7 @@ TEST(DebugPubSection, TestDebugPubSection) {
TEST(DebugPubSection, TestUnexpectedDescriptor) {
StringRef Yaml = R"(
debug_pubnames:
- Length:
- TotalLength: 0x1234
+ Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@@ -133,8 +130,7 @@ TEST(DebugPubSection, TestUnexpectedDescriptor) {
TEST(DebugGNUPubSection, TestDebugGNUPubSections) {
StringRef Yaml = R"(
debug_gnu_pubnames:
- Length:
- TotalLength: 0x1234
+ Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@@ -146,8 +142,7 @@ TEST(DebugGNUPubSection, TestDebugGNUPubSections) {
Descriptor: 0x34
Name: def
debug_gnu_pubtypes:
- Length:
- TotalLength: 0x1234
+ Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
@@ -188,8 +183,7 @@ TEST(DebugGNUPubSection, TestDebugGNUPubSections) {
TEST(DebugGNUPubSection, TestMissingDescriptor) {
StringRef Yaml = R"(
debug_gnu_pubnames:
- Length:
- TotalLength: 0x1234
+ Length: 0x1234
Version: 2
UnitOffset: 0x4321
UnitSize: 0x00
More information about the llvm-commits
mailing list