[lld] 4933ab2 - [DebugInfo] Report the format of call frame information entries [6/10]

Igor Kudrin via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 2 03:57:14 PDT 2020


Author: Igor Kudrin
Date: 2020-06-02T17:55:30+07:00
New Revision: 4933ab2ccb3a10a89ffe88e4d25e38544791caf8

URL: https://github.com/llvm/llvm-project/commit/4933ab2ccb3a10a89ffe88e4d25e38544791caf8
DIFF: https://github.com/llvm/llvm-project/commit/4933ab2ccb3a10a89ffe88e4d25e38544791caf8.diff

LOG: [DebugInfo] Report the format of call frame information entries [6/10]

Differential Revision: https://reviews.llvm.org/D80523

Added: 
    

Modified: 
    lld/test/ELF/eh-frame-hdr-augmentation.s
    llvm/include/llvm/BinaryFormat/Dwarf.h
    llvm/lib/BinaryFormat/Dwarf.cpp
    llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
    llvm/test/DebugInfo/X86/debug-frame-dwarf64.s
    llvm/test/MC/Mips/eh-frame.s
    llvm/test/tools/dsymutil/X86/frame-2.test
    llvm/test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s
    llvm/test/tools/llvm-dwarfdump/X86/debug_frame_offset.test
    llvm/test/tools/llvm-dwarfdump/X86/eh-frame-return-address-reg.s

Removed: 
    


################################################################################
diff  --git a/lld/test/ELF/eh-frame-hdr-augmentation.s b/lld/test/ELF/eh-frame-hdr-augmentation.s
index 6a9a9e64c8d8..dbec54a1a8a2 100644
--- a/lld/test/ELF/eh-frame-hdr-augmentation.s
+++ b/lld/test/ELF/eh-frame-hdr-augmentation.s
@@ -6,6 +6,7 @@
 // CHECK: .eh_frame contents:
 
 // CHECK:      00000000 0000001c 00000000 CIE
+// CHECK-NEXT:   Format:                DWARF32
 // CHECK-NEXT:   Version:                       1
 // CHECK-NEXT:   Augmentation:             "zPLR"
 // CHECK-NEXT:   Code alignment factor: 1
@@ -20,6 +21,7 @@
 // CHECK-NEXT: DW_CFA_nop:
 
 // CHECK:      00000020 00000014 00000024 FDE cie=00000000 pc=00001014...00001014
+// CHECK-NEXT:   Format:       DWARF32
 // CHECK-NEXT:   LSDA Address: 000000000000100b
 // CHECK-NEXT:   DW_CFA_nop:
 // CHECK-NEXT:   DW_CFA_nop:

diff  --git a/llvm/include/llvm/BinaryFormat/Dwarf.h b/llvm/include/llvm/BinaryFormat/Dwarf.h
index 1caf4d9291e3..00e580bbe450 100644
--- a/llvm/include/llvm/BinaryFormat/Dwarf.h
+++ b/llvm/include/llvm/BinaryFormat/Dwarf.h
@@ -482,6 +482,7 @@ StringRef GDBIndexEntryKindString(GDBIndexEntryKind Kind);
 StringRef GDBIndexEntryLinkageString(GDBIndexEntryLinkage Linkage);
 StringRef IndexString(unsigned Idx);
 StringRef FormatString(DwarfFormat Format);
+StringRef FormatString(bool IsDWARF64);
 /// @}
 
 /// \defgroup DwarfConstantsParsing Dwarf constants parsing functions

diff  --git a/llvm/lib/BinaryFormat/Dwarf.cpp b/llvm/lib/BinaryFormat/Dwarf.cpp
index 08ecd77966c3..971b850a09cc 100644
--- a/llvm/lib/BinaryFormat/Dwarf.cpp
+++ b/llvm/lib/BinaryFormat/Dwarf.cpp
@@ -780,6 +780,10 @@ StringRef llvm::dwarf::FormatString(DwarfFormat Format) {
   return StringRef();
 }
 
+StringRef llvm::dwarf::FormatString(bool IsDWARF64) {
+  return FormatString(IsDWARF64 ? DWARF64 : DWARF32);
+}
+
 constexpr char llvm::dwarf::EnumTraits<Attribute>::Type[];
 constexpr char llvm::dwarf::EnumTraits<Form>::Type[];
 constexpr char llvm::dwarf::EnumTraits<Index>::Type[];

diff  --git a/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp b/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
index fe24f3942ffb..159bde9adf16 100644
--- a/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
+++ b/llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp
@@ -314,9 +314,10 @@ void CIE::dump(raw_ostream &OS, const MCRegisterInfo *MRI, bool IsEH) const {
      << format(" %0*" PRIx64, IsDWARF64 ? 16 : 8, Length)
      << format(" %0*" PRIx64, IsDWARF64 && !IsEH ? 16 : 8,
                getCIEId(IsDWARF64, IsEH))
-     << " CIE\n";
-  OS << format("  Version:               %d\n", Version);
-  OS << "  Augmentation:          \"" << Augmentation << "\"\n";
+     << " CIE\n"
+     << "  Format:                " << FormatString(IsDWARF64) << "\n"
+     << format("  Version:               %d\n", Version)
+     << "  Augmentation:          \"" << Augmentation << "\"\n";
   if (Version >= 4) {
     OS << format("  Address size:          %u\n", (uint32_t)AddressSize);
     OS << format("  Segment desc size:     %u\n",
@@ -349,6 +350,7 @@ void FDE::dump(raw_ostream &OS, const MCRegisterInfo *MRI, bool IsEH) const {
     OS << "<invalid offset>";
   OS << format(" pc=%08" PRIx64 "...%08" PRIx64 "\n", InitialLocation,
                InitialLocation + AddressRange);
+  OS << "  Format:       " << FormatString(IsDWARF64) << "\n";
   if (LSDAAddress)
     OS << format("  LSDA Address: %016" PRIx64 "\n", *LSDAAddress);
   CFIs.dump(OS, MRI, IsEH);

diff  --git a/llvm/test/DebugInfo/X86/debug-frame-dwarf64.s b/llvm/test/DebugInfo/X86/debug-frame-dwarf64.s
index e9820c58c46f..9253cede16a4 100644
--- a/llvm/test/DebugInfo/X86/debug-frame-dwarf64.s
+++ b/llvm/test/DebugInfo/X86/debug-frame-dwarf64.s
@@ -3,6 +3,7 @@
 # RUN:   FileCheck %s
 
 # CHECK:      00000000 0000000000000010 ffffffffffffffff CIE
+# CHECK-NEXT:   Format:                DWARF64
 # CHECK-NEXT:   Version:               4
 # CHECK-NEXT:   Augmentation:          ""
 # CHECK-NEXT:   Address size:          8
@@ -14,6 +15,7 @@
 # CHECK-NEXT:   DW_CFA_nop:
 
 # CHECK:      0000001c 0000000000000018 0000000000000000 FDE cie=00000000 pc=00112233...00122233
+# CHECK-NEXT:   Format:       DWARF64
 
     .section .debug_frame, "", @progbits
 .LCIE:

diff  --git a/llvm/test/MC/Mips/eh-frame.s b/llvm/test/MC/Mips/eh-frame.s
index 1de56b66ddb7..5be0d709a896 100644
--- a/llvm/test/MC/Mips/eh-frame.s
+++ b/llvm/test/MC/Mips/eh-frame.s
@@ -55,6 +55,7 @@ func:
 // RELOCS-NEXT:   }
 
 // DWARF32: 00000000 00000010 00000000 CIE
+// DWARF32-NEXT:     Format:                DWARF32
 // DWARF32-NEXT:     Version:               1
 // DWARF32-NEXT:     Augmentation:          "zR"
 // DWARF32-NEXT:     Code alignment factor: 1
@@ -68,12 +69,14 @@ func:
 // DWARF32-NEXT:     DW_CFA_def_cfa_register: reg29
 //
 // DWARF32: 00000014 00000010 00000018 FDE cie=00000000 pc=00000000...00000000
+// DWARF32-NEXT:     Format:       DWARF32
 // DWARF32-NEXT:     DW_CFA_nop:
 // DWARF32-NEXT:     DW_CFA_nop:
 // DWARF32-NEXT:     DW_CFA_nop:
 
 
 // DWARF64: 00000000 00000010 00000000 CIE
+// DWARF64-NEXT:     Format:                DWARF32
 // DWARF64-NEXT:     Version:               1
 // DWARF64-NEXT:     Augmentation:          "zR"
 // DWARF64-NEXT:     Code alignment factor: 1
@@ -91,6 +94,7 @@ func:
 //
 // DWARF64_ABS:      00000014 00000018 00000018 FDE cie=00000000 pc=00000000...00000000
 // DWARF64_PIC:      00000014 00000010 00000018 FDE cie=00000000 pc=00000000...00000000
+// DWARF64-NEXT:     Format:       DWARF32
 // DWARF64-NEXT:     DW_CFA_nop:
 // DWARF64-NEXT:     DW_CFA_nop:
 // DWARF64-NEXT:     DW_CFA_nop:

diff  --git a/llvm/test/tools/dsymutil/X86/frame-2.test b/llvm/test/tools/dsymutil/X86/frame-2.test
index ab47e573cc45..235d2ca18ca1 100644
--- a/llvm/test/tools/dsymutil/X86/frame-2.test
+++ b/llvm/test/tools/dsymutil/X86/frame-2.test
@@ -27,6 +27,7 @@ objects:
 
 # CHECK: .debug_frame contents:
 # CHECK: 00000000 {{[0-9a-f]*}} ffffffff CIE
+# CHECK-NEXT: Format: DWARF32
 # CHECK-NEXT: Version:{{.*}}1
 # CHECK-NOT: FDE
 # CHECK:  FDE cie=00000000 pc=00001000...00001
@@ -34,11 +35,13 @@ objects:
 # CHECK:  FDE cie=00000000 pc=00002000...00002
 # CHECK-NOT: FDE
 # CHECK: [[CIEDW4:[0-9a-f]*]] 00000010 ffffffff CIE
+# CHECK-NEXT: Format: DWARF32
 # CHECK-NEXT: Version:{{.*}}4
 # CHECK-NOT: FDE
 # CHECK:  FDE cie=[[CIEDW4]] pc=00003000...00003
 # CHECK-NOT: FDE
 # CHECK: [[CIEDW2:[0-9a-f]*]] {{[0-9a-f]*}} ffffffff CIE
+# CHECK-NEXT: Format: DWARF32
 # CHECK-NEXT: Version:{{.*}}1
 # CHECK-NOT: FDE
 # CHECK:  FDE cie=[[CIEDW2]] pc=00004000...00004

diff  --git a/llvm/test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s b/llvm/test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s
index 0adf5e5d37d1..f31b938cc04a 100644
--- a/llvm/test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s
+++ b/llvm/test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s
@@ -3,6 +3,7 @@
 
 # CHECK:      .eh_frame contents:
 # CHECK:        00000018 00000010 0000001c FDE cie=00000000 pc=00000000...00000000
+# CHECK-NEXT:     Format:       DWARF32
 # CHECK-NEXT:     DW_CFA_GNU_args_size: +16
 # CHECK-NEXT:     DW_CFA_nop:
 

diff  --git a/llvm/test/tools/llvm-dwarfdump/X86/debug_frame_offset.test b/llvm/test/tools/llvm-dwarfdump/X86/debug_frame_offset.test
index 269ef47f9756..598f80379c38 100644
--- a/llvm/test/tools/llvm-dwarfdump/X86/debug_frame_offset.test
+++ b/llvm/test/tools/llvm-dwarfdump/X86/debug_frame_offset.test
@@ -2,6 +2,7 @@ RUN: llc -filetype=obj %p/../../dsymutil/Inputs/frame-dw2.ll -o - \
 RUN:   | llvm-dwarfdump -debug-frame=0x00000014 - | FileCheck %s
 CHECK: .debug_frame contents:
 CHECK-NEXT: 00000014 00000014 00000000 FDE cie=00000000 pc=00000000...0000001d
+CHECK-NEXT:   Format:       DWARF32
 CHECK-NEXT:   DW_CFA_advance_loc: 1
 CHECK-NOT: pc
 
@@ -9,6 +10,7 @@ RUN: llvm-dwarfdump %p/../../dsymutil/Inputs/basic1.macho.x86_64.o \
 RUN:   -eh-frame=0x00000018 | FileCheck %s --check-prefix=EH
 EH: .eh_frame contents:
 EH-NEXT: 00000018 00000024 0000001c FDE cie=00000000 pc=fffffffffffffd00...fffffffffffffd24
+EH-NEXT:   Format:       DWARF32
 EH-NEXT:   DW_CFA_advance_loc: 1
 EH-NOT: pc
 EH-NOT: CIE

diff  --git a/llvm/test/tools/llvm-dwarfdump/X86/eh-frame-return-address-reg.s b/llvm/test/tools/llvm-dwarfdump/X86/eh-frame-return-address-reg.s
index 48d8320eb24f..fa9f95c9a4da 100644
--- a/llvm/test/tools/llvm-dwarfdump/X86/eh-frame-return-address-reg.s
+++ b/llvm/test/tools/llvm-dwarfdump/X86/eh-frame-return-address-reg.s
@@ -11,6 +11,7 @@
 
 # CHECK:      .eh_frame contents:
 # CHECK:      00000000 00000010 00000000 CIE
+# CHECK-NEXT:   Format:                DWARF32
 # CHECK-NEXT:   Version:               1
 # CHECK-NEXT:   Augmentation:          "zR"
 # CHECK-NEXT:   Code alignment factor: 1


        


More information about the llvm-commits mailing list