diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2019-12-06 10:46:32 +0000 |
---|---|---|
committer | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2019-12-06 10:46:32 +0000 |
commit | e8dc9b5bfd234f61c6127d23cb80fbd4b0382115 (patch) | |
tree | a650ca3b84d27677a739e95eea7b922f40270169 /gas/dw2gencfi.c | |
parent | e6b39f6f8e5418ba2a237ef16460c22b49833ca6 (diff) | |
download | gdb-e8dc9b5bfd234f61c6127d23cb80fbd4b0382115.zip gdb-e8dc9b5bfd234f61c6127d23cb80fbd4b0382115.tar.gz gdb-e8dc9b5bfd234f61c6127d23cb80fbd4b0382115.tar.bz2 |
[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.
Diffstat (limited to 'gas/dw2gencfi.c')
-rw-r--r-- | gas/dw2gencfi.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/gas/dw2gencfi.c b/gas/dw2gencfi.c index c1b5bec..39f9de4 100644 --- a/gas/dw2gencfi.c +++ b/gas/dw2gencfi.c @@ -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 }, |