Skip to content

Commit 4933ab2

Browse files
committed
[DebugInfo] Report the format of call frame information entries [6/10]
Differential Revision: https://reviews.llvm.org/D80523
1 parent 2ea94c8 commit 4933ab2

File tree

10 files changed

+25
-3
lines changed

10 files changed

+25
-3
lines changed

lld/test/ELF/eh-frame-hdr-augmentation.s

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// CHECK: .eh_frame contents:
77

88
// CHECK: 00000000 0000001c 00000000 CIE
9+
// CHECK-NEXT: Format: DWARF32
910
// CHECK-NEXT: Version: 1
1011
// CHECK-NEXT: Augmentation: "zPLR"
1112
// CHECK-NEXT: Code alignment factor: 1
@@ -20,6 +21,7 @@
2021
// CHECK-NEXT: DW_CFA_nop:
2122

2223
// CHECK: 00000020 00000014 00000024 FDE cie=00000000 pc=00001014...00001014
24+
// CHECK-NEXT: Format: DWARF32
2325
// CHECK-NEXT: LSDA Address: 000000000000100b
2426
// CHECK-NEXT: DW_CFA_nop:
2527
// CHECK-NEXT: DW_CFA_nop:

llvm/include/llvm/BinaryFormat/Dwarf.h

+1
Original file line numberDiff line numberDiff line change
@@ -482,6 +482,7 @@ StringRef GDBIndexEntryKindString(GDBIndexEntryKind Kind);
482482
StringRef GDBIndexEntryLinkageString(GDBIndexEntryLinkage Linkage);
483483
StringRef IndexString(unsigned Idx);
484484
StringRef FormatString(DwarfFormat Format);
485+
StringRef FormatString(bool IsDWARF64);
485486
/// @}
486487

487488
/// \defgroup DwarfConstantsParsing Dwarf constants parsing functions

llvm/lib/BinaryFormat/Dwarf.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,10 @@ StringRef llvm::dwarf::FormatString(DwarfFormat Format) {
780780
return StringRef();
781781
}
782782

783+
StringRef llvm::dwarf::FormatString(bool IsDWARF64) {
784+
return FormatString(IsDWARF64 ? DWARF64 : DWARF32);
785+
}
786+
783787
constexpr char llvm::dwarf::EnumTraits<Attribute>::Type[];
784788
constexpr char llvm::dwarf::EnumTraits<Form>::Type[];
785789
constexpr char llvm::dwarf::EnumTraits<Index>::Type[];

llvm/lib/DebugInfo/DWARF/DWARFDebugFrame.cpp

+5-3
Original file line numberDiff line numberDiff line change
@@ -314,9 +314,10 @@ void CIE::dump(raw_ostream &OS, const MCRegisterInfo *MRI, bool IsEH) const {
314314
<< format(" %0*" PRIx64, IsDWARF64 ? 16 : 8, Length)
315315
<< format(" %0*" PRIx64, IsDWARF64 && !IsEH ? 16 : 8,
316316
getCIEId(IsDWARF64, IsEH))
317-
<< " CIE\n";
318-
OS << format(" Version: %d\n", Version);
319-
OS << " Augmentation: \"" << Augmentation << "\"\n";
317+
<< " CIE\n"
318+
<< " Format: " << FormatString(IsDWARF64) << "\n"
319+
<< format(" Version: %d\n", Version)
320+
<< " Augmentation: \"" << Augmentation << "\"\n";
320321
if (Version >= 4) {
321322
OS << format(" Address size: %u\n", (uint32_t)AddressSize);
322323
OS << format(" Segment desc size: %u\n",
@@ -349,6 +350,7 @@ void FDE::dump(raw_ostream &OS, const MCRegisterInfo *MRI, bool IsEH) const {
349350
OS << "<invalid offset>";
350351
OS << format(" pc=%08" PRIx64 "...%08" PRIx64 "\n", InitialLocation,
351352
InitialLocation + AddressRange);
353+
OS << " Format: " << FormatString(IsDWARF64) << "\n";
352354
if (LSDAAddress)
353355
OS << format(" LSDA Address: %016" PRIx64 "\n", *LSDAAddress);
354356
CFIs.dump(OS, MRI, IsEH);

llvm/test/DebugInfo/X86/debug-frame-dwarf64.s

+2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
# RUN: FileCheck %s
44

55
# CHECK: 00000000 0000000000000010 ffffffffffffffff CIE
6+
# CHECK-NEXT: Format: DWARF64
67
# CHECK-NEXT: Version: 4
78
# CHECK-NEXT: Augmentation: ""
89
# CHECK-NEXT: Address size: 8
@@ -14,6 +15,7 @@
1415
# CHECK-NEXT: DW_CFA_nop:
1516

1617
# CHECK: 0000001c 0000000000000018 0000000000000000 FDE cie=00000000 pc=00112233...00122233
18+
# CHECK-NEXT: Format: DWARF64
1719

1820
.section .debug_frame, "", @progbits
1921
.LCIE:

llvm/test/MC/Mips/eh-frame.s

+4
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ func:
5555
// RELOCS-NEXT: }
5656

5757
// DWARF32: 00000000 00000010 00000000 CIE
58+
// DWARF32-NEXT: Format: DWARF32
5859
// DWARF32-NEXT: Version: 1
5960
// DWARF32-NEXT: Augmentation: "zR"
6061
// DWARF32-NEXT: Code alignment factor: 1
@@ -68,12 +69,14 @@ func:
6869
// DWARF32-NEXT: DW_CFA_def_cfa_register: reg29
6970
//
7071
// DWARF32: 00000014 00000010 00000018 FDE cie=00000000 pc=00000000...00000000
72+
// DWARF32-NEXT: Format: DWARF32
7173
// DWARF32-NEXT: DW_CFA_nop:
7274
// DWARF32-NEXT: DW_CFA_nop:
7375
// DWARF32-NEXT: DW_CFA_nop:
7476

7577

7678
// DWARF64: 00000000 00000010 00000000 CIE
79+
// DWARF64-NEXT: Format: DWARF32
7780
// DWARF64-NEXT: Version: 1
7881
// DWARF64-NEXT: Augmentation: "zR"
7982
// DWARF64-NEXT: Code alignment factor: 1
@@ -91,6 +94,7 @@ func:
9194
//
9295
// DWARF64_ABS: 00000014 00000018 00000018 FDE cie=00000000 pc=00000000...00000000
9396
// DWARF64_PIC: 00000014 00000010 00000018 FDE cie=00000000 pc=00000000...00000000
97+
// DWARF64-NEXT: Format: DWARF32
9498
// DWARF64-NEXT: DW_CFA_nop:
9599
// DWARF64-NEXT: DW_CFA_nop:
96100
// DWARF64-NEXT: DW_CFA_nop:

llvm/test/tools/dsymutil/X86/frame-2.test

+3
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,21 @@ objects:
2727

2828
# CHECK: .debug_frame contents:
2929
# CHECK: 00000000 {{[0-9a-f]*}} ffffffff CIE
30+
# CHECK-NEXT: Format: DWARF32
3031
# CHECK-NEXT: Version:{{.*}}1
3132
# CHECK-NOT: FDE
3233
# CHECK: FDE cie=00000000 pc=00001000...00001
3334
# CHECK-NOT: FDE
3435
# CHECK: FDE cie=00000000 pc=00002000...00002
3536
# CHECK-NOT: FDE
3637
# CHECK: [[CIEDW4:[0-9a-f]*]] 00000010 ffffffff CIE
38+
# CHECK-NEXT: Format: DWARF32
3739
# CHECK-NEXT: Version:{{.*}}4
3840
# CHECK-NOT: FDE
3941
# CHECK: FDE cie=[[CIEDW4]] pc=00003000...00003
4042
# CHECK-NOT: FDE
4143
# CHECK: [[CIEDW2:[0-9a-f]*]] {{[0-9a-f]*}} ffffffff CIE
44+
# CHECK-NEXT: Format: DWARF32
4245
# CHECK-NEXT: Version:{{.*}}1
4346
# CHECK-NOT: FDE
4447
# CHECK: FDE cie=[[CIEDW2]] pc=00004000...00004

llvm/test/tools/llvm-dwarfdump/X86/debug_frame_GNU_args_size.s

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
# CHECK: .eh_frame contents:
55
# CHECK: 00000018 00000010 0000001c FDE cie=00000000 pc=00000000...00000000
6+
# CHECK-NEXT: Format: DWARF32
67
# CHECK-NEXT: DW_CFA_GNU_args_size: +16
78
# CHECK-NEXT: DW_CFA_nop:
89

llvm/test/tools/llvm-dwarfdump/X86/debug_frame_offset.test

+2
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@ RUN: llc -filetype=obj %p/../../dsymutil/Inputs/frame-dw2.ll -o - \
22
RUN: | llvm-dwarfdump -debug-frame=0x00000014 - | FileCheck %s
33
CHECK: .debug_frame contents:
44
CHECK-NEXT: 00000014 00000014 00000000 FDE cie=00000000 pc=00000000...0000001d
5+
CHECK-NEXT: Format: DWARF32
56
CHECK-NEXT: DW_CFA_advance_loc: 1
67
CHECK-NOT: pc
78

89
RUN: llvm-dwarfdump %p/../../dsymutil/Inputs/basic1.macho.x86_64.o \
910
RUN: -eh-frame=0x00000018 | FileCheck %s --check-prefix=EH
1011
EH: .eh_frame contents:
1112
EH-NEXT: 00000018 00000024 0000001c FDE cie=00000000 pc=fffffffffffffd00...fffffffffffffd24
13+
EH-NEXT: Format: DWARF32
1214
EH-NEXT: DW_CFA_advance_loc: 1
1315
EH-NOT: pc
1416
EH-NOT: CIE

llvm/test/tools/llvm-dwarfdump/X86/eh-frame-return-address-reg.s

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
# CHECK: .eh_frame contents:
1313
# CHECK: 00000000 00000010 00000000 CIE
14+
# CHECK-NEXT: Format: DWARF32
1415
# CHECK-NEXT: Version: 1
1516
# CHECK-NEXT: Augmentation: "zR"
1617
# CHECK-NEXT: Code alignment factor: 1

0 commit comments

Comments
 (0)