mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-27 03:51:15 +08:00
[gas] Implement .cfi_negate_ra_state directive
This patch implements the .cfi_negate_ra_state to be consistent with LLVM (https://reviews.llvm.org/D50136). The relevant DWARF code DW_CFA_AARCH64_negate_ra_state is multiplexed on top of DW_CFA_GNU_window_save, as per https://gcc.gnu.org/ml/gcc-patches/2017-08/msg00753.html I believe this is the simplest patch implementing this and is needed to allow users to build, for example, the Linux kernel with Armv8.3-A pointer authentication support with Clang while using gas as the assembler, which is a common usecase. gas/ 2019-12-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * dw2gencfi.c (cfi_pseudo_table): Add cfi_negate_ra_state. * testsuite/gas/aarch64/pac_negate_ra_state.s: New file. * testsuite/gas/aarch64/pac_negate_ra_state.d: Likewise.
This commit is contained in:
parent
e6b39f6f8e
commit
e8dc9b5bfd
@ -1,3 +1,9 @@
|
||||
2019-12-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
|
||||
|
||||
* dw2gencfi.c (cfi_pseudo_table): Add cfi_negate_ra_state.
|
||||
* testsuite/gas/aarch64/pac_negate_ra_state.s: New file.
|
||||
* testsuite/gas/aarch64/pac_negate_ra_state.d: Likewise.
|
||||
|
||||
2019-12-05 Jan Beulich <jbeulich@suse.com>
|
||||
|
||||
* config/tc-aarch64.c (aarch64_features): Drop redundant AES and
|
||||
|
@ -726,6 +726,7 @@ const pseudo_typeS cfi_pseudo_table[] =
|
||||
{ "cfi_remember_state", dot_cfi, DW_CFA_remember_state },
|
||||
{ "cfi_restore_state", dot_cfi, DW_CFA_restore_state },
|
||||
{ "cfi_window_save", dot_cfi, DW_CFA_GNU_window_save },
|
||||
{ "cfi_negate_ra_state", dot_cfi, DW_CFA_AARCH64_negate_ra_state },
|
||||
{ "cfi_escape", dot_cfi_escape, 0 },
|
||||
{ "cfi_signal_frame", dot_cfi, CFI_signal_frame },
|
||||
{ "cfi_personality", dot_cfi_personality, 0 },
|
||||
|
26
gas/testsuite/gas/aarch64/pac_negate_ra_state.d
Normal file
26
gas/testsuite/gas/aarch64/pac_negate_ra_state.d
Normal file
@ -0,0 +1,26 @@
|
||||
#objdump: --dwarf=frames
|
||||
|
||||
.+: file .+
|
||||
|
||||
Contents of the .eh_frame section:
|
||||
|
||||
00000000 0000000000000010 00000000 CIE
|
||||
Version: 1
|
||||
Augmentation: "zR"
|
||||
Code alignment factor: 4
|
||||
Data alignment factor: -8
|
||||
Return address column: 30
|
||||
Augmentation data: 1b
|
||||
DW_CFA_def_cfa: r31 \(sp\) ofs 0
|
||||
|
||||
00000014 0000000000000018 00000018 FDE cie=00000000 pc=0000000000000000..0000000000000008
|
||||
DW_CFA_advance_loc: 4 to 0000000000000004
|
||||
DW_CFA_GNU_window_save
|
||||
DW_CFA_advance_loc: 4 to 0000000000000008
|
||||
DW_CFA_def_cfa_offset: 16
|
||||
DW_CFA_offset: r29 \(x29\) at cfa-16
|
||||
DW_CFA_offset: r30 \(x30\) at cfa-8
|
||||
DW_CFA_nop
|
||||
DW_CFA_nop
|
||||
|
||||
|
20
gas/testsuite/gas/aarch64/pac_negate_ra_state.s
Normal file
20
gas/testsuite/gas/aarch64/pac_negate_ra_state.s
Normal file
@ -0,0 +1,20 @@
|
||||
.arch armv8-a
|
||||
.text
|
||||
.align 2
|
||||
.global _Z5foo_av
|
||||
.type _Z5foo_av, %function
|
||||
_Z5foo_av:
|
||||
.LFB0:
|
||||
.cfi_startproc
|
||||
hint 25 // paciasp
|
||||
.cfi_negate_ra_state
|
||||
stp x29, x30, [sp, -16]!
|
||||
.cfi_def_cfa_offset 16
|
||||
.cfi_offset 29, -16
|
||||
.cfi_offset 30, -8
|
||||
.cfi_endproc
|
||||
.LFE0:
|
||||
.size _Z5foo_av, .-_Z5foo_av
|
||||
.align 2
|
||||
.global _Z5foo_bv
|
||||
.type _Z5foo_bv, %function
|
Loading…
Reference in New Issue
Block a user