[gas] Implement .cfi_negate_ra_state directive
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 6 Dec 2019 10:46:32 +0000 (10:46 +0000)
committerKyrylo Tkachov <kyrylo.tkachov@arm.com>
Fri, 6 Dec 2019 10:46:32 +0000 (10:46 +0000)
commite8dc9b5bfd234f61c6127d23cb80fbd4b0382115
treea650ca3b84d27677a739e95eea7b922f40270169
parente6b39f6f8e5418ba2a237ef16460c22b49833ca6
[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.
gas/ChangeLog
gas/dw2gencfi.c
gas/testsuite/gas/aarch64/pac_negate_ra_state.d [new file with mode: 0644]
gas/testsuite/gas/aarch64/pac_negate_ra_state.s [new file with mode: 0644]