1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
Igor Kudrin 84c56f2c7c [DebugInfo] Fix printing CIE offsets in EH FDEs.
While the value of the CIE pointer field in a DWARF FDE record is
an offset to the corresponding CIE record from the beginning of
the section, for EH FDE records it is relative to the current offset.
Previously, we did not make that distinction when dumped both kinds
of FDE records and just printed the same value for the CIE pointer
field and the CIE offset; that was acceptable for DWARF FDEs but was
wrong for EH FDEs.

This patch fixes the issue by explicitly printing the offset of the
linked CIE object.

Differential Revision: https://reviews.llvm.org/D74613
2020-02-25 17:10:29 +07:00

35 lines
1.1 KiB
ArmAsm

# RUN: llvm-mc -filetype=obj -triple=riscv32 < %s | llvm-dwarfdump -eh-frame - \
# RUN: | FileCheck --check-prefixes=CHECK,RV32 %s
# RUN: llvm-mc -filetype=obj -triple=riscv64 < %s | llvm-dwarfdump -eh-frame - \
# RUN: | FileCheck --check-prefixes=CHECK,RV64 %s
func:
.cfi_startproc
ret
.cfi_endproc
# CHECK: 00000000 00000010 00000000 CIE
# CHECK: Version: 1
# CHECK: Augmentation: "zR"
# CHECK: Code alignment factor: 1
# TODO: gas uses -4 for the data alignment factor for both RV32 and RV64. They
# do so on the basis that on RV64F, F registers may only be 4 bytes
# (DWARF2_CIE_DATA_ALIGNMENT).
# RV32: Data alignment factor: -4
# RV64: Data alignment factor: -8
# CHECK: Return address column: 1
# Check the pointer encoding for address pointers used in FDE. This is set by
# FDECFIEncoding and should be DW_EH_PE_pcrel | DW_EH_PE_sdata4 (0x1b).
# CHECK: Augmentation data: 1B
# CHECK: DW_CFA_def_cfa: reg2 +0
#
# CHECK: 00000014 00000010 00000018 FDE cie=00000000 pc=00000000...00000004
# CHECK: DW_CFA_nop:
# CHECK: DW_CFA_nop:
# CHECK: DW_CFA_nop: