[DebugInfo] Fix dumping CIE ID in .eh_frame sections.

We do not keep the actual value of the CIE ID field, because it is
predefined, and use a constant when dumping a CIE record. The issue
was that the predefined value is different for .debug_frame and
.eh_frame sections, but we always printed the one which corresponds
to .debug_frame. The patch fixes that by choosing an appropriate
constant to print.

See the following for more information about .eh_frame sections:
https://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html

Differential Revision: https://reviews.llvm.org/D73627
This commit is contained in:
Igor Kudrin 2020-01-29 21:28:46 +07:00
parent 2e8c112ecf
commit 2ba4df6c11
10 changed files with 14 additions and 14 deletions

View File

@ -5,7 +5,7 @@
// CHECK: .eh_frame contents:
// CHECK: 00000000 0000001c ffffffff CIE
// CHECK: 00000000 0000001c 00000000 CIE
// CHECK-NEXT: Version: 1
// CHECK-NEXT: Augmentation: "zPLR"
// CHECK-NEXT: Code alignment factor: 1

View File

@ -287,7 +287,7 @@ void CFIProgram::dump(raw_ostream &OS, const MCRegisterInfo *MRI, bool IsEH,
void CIE::dump(raw_ostream &OS, const MCRegisterInfo *MRI, bool IsEH) const {
OS << format("%08x %08x %08x CIE", (uint32_t)Offset, (uint32_t)Length,
DW_CIE_ID)
IsEH ? 0 : DW_CIE_ID)
<< "\n";
OS << format(" Version: %d\n", Version);
OS << " Augmentation: \"" << Augmentation << "\"\n";

View File

@ -8,7 +8,7 @@ func:
ret
.cfi_endproc
# CHECK: 00000000 00000010 ffffffff CIE
# CHECK: 00000000 00000010 00000000 CIE
# CHECK: Version: 1
# CHECK: Augmentation: "zR"
# CHECK: Code alignment factor: 1

View File

@ -54,7 +54,7 @@ func:
// PIC64-NEXT: R_MIPS_PC32/R_MIPS_NONE/R_MIPS_NONE
// RELOCS-NEXT: }
// DWARF32: 00000000 00000010 ffffffff CIE
// DWARF32: 00000000 00000010 00000000 CIE
// DWARF32-NEXT: Version: 1
// DWARF32-NEXT: Augmentation: "zR"
// DWARF32-NEXT: Code alignment factor: 1
@ -73,7 +73,7 @@ func:
// DWARF32-NEXT: DW_CFA_nop:
// DWARF64: 00000000 00000010 ffffffff CIE
// DWARF64: 00000000 00000010 00000000 CIE
// DWARF64-NEXT: Version: 1
// DWARF64-NEXT: Augmentation: "zR"
// DWARF64-NEXT: Code alignment factor: 1

View File

@ -33,11 +33,11 @@ h:
// CHECK-ASM-ROUNDTRIP-NEXT: .cfi_return_column 0
// CHECK-ASM-ROUNDTRIP: .cfi_endproc
// CHECK-EH_FRAME: 00000000 00000014 ffffffff CIE
// CHECK-EH_FRAME: 00000000 00000014 00000000 CIE
// CHECK-EH_FRAME: Return address column: 0
// CHECK-EH_FRAME: 0000002c 00000014 ffffffff CIE
// CHECK-EH_FRAME: 0000002c 00000014 00000000 CIE
// CHECK-EH_FRAME: Return address column: 65
// CHECK-EH_FRAME-NOT: ........ 00000014 ffffffff CIE
// CHECK-EH_FRAME-NOT: ........ 00000014 00000000 CIE

View File

@ -10,7 +10,7 @@
# checks that we are able to dump it correctly.
# CHECK: .eh_frame contents:
# CHECK: 00000000 00000010 ffffffff CIE
# CHECK: 00000000 00000010 00000000 CIE
# CHECK-NEXT: Version: 1
# CHECK-NEXT: Augmentation: "zR"
# CHECK-NEXT: Code alignment factor: 1

View File

@ -2,7 +2,7 @@
# CHECK: .eh_frame contents:
# CHECK: 00000000 00000010 ffffffff CIE
# CHECK: 00000000 00000010 00000000 CIE
# CHECK: Version: 1
# CHECK: Augmentation: "zR"
# CHECK: Code alignment factor: 1

View File

@ -2,7 +2,7 @@
# CHECK: .eh_frame contents:
# CHECK: 00000000 0000001c ffffffff CIE
# CHECK: 00000000 0000001c 00000000 CIE
# CHECK: Version: 1
# CHECK: Augmentation: "zPLR"
# CHECK: Code alignment factor: 1

View File

@ -2,7 +2,7 @@
# CHECK: .eh_frame contents:
# CHECK: 00000000 00000018 ffffffff CIE
# CHECK: 00000000 00000018 00000000 CIE
# CHECK: Version: 1
# CHECK: Augmentation: "zPLR"
# CHECK: Code alignment factor: 1
@ -19,7 +19,7 @@
# CHECK: DW_CFA_offset: reg31 -4
# CHECK: DW_CFA_nop:
# CHECK: 00000038 00000000 ffffffff CIE
# CHECK: 00000038 00000000 00000000 CIE
# CHECK: Version: 0
# CHECK: Augmentation: ""
# CHECK: Code alignment factor: 0

View File

@ -2,7 +2,7 @@
# CHECK: .eh_frame contents:
# CHECK: 00000000 00000000 ffffffff CIE
# CHECK: 00000000 00000000 00000000 CIE
# CHECK: Version: 0
# CHECK: Augmentation: ""
# CHECK: Code alignment factor: 0