sframe.h: add support for .cfi_negate_ra_state
authorIndu Bhagat <indu.bhagat@oracle.com>
Sat, 17 Dec 2022 06:01:40 +0000 (22:01 -0800)
committerIndu Bhagat <indu.bhagat@oracle.com>
Sat, 17 Dec 2022 06:01:40 +0000 (22:01 -0800)
commit4604c7294166199f89a0122ee35095d7e0cd2d07
treef45f3b7040d11693c15c3c153018ba23a3f06af8
parent1c57b841ac1f06db523db720affc9f056a4ee76c
sframe.h: add support for .cfi_negate_ra_state

Use the last remaining bit in the 'SFrame FRE info' word to store whether
the RA is signed/unsigned with PAC authorization code: this bit is named
as the "mangled RA" bit.  This bit is still unused for x86-64.

The behaviour of the mangled-RA info bit in SFrame format closely
follows the behaviour of DW_CFA_AARCH64_negate_ra_state in DWARF.  During
unwinding, whenever an SFrame FRE with non-zero "mangled RA" bit is
encountered, it means the upper bits of the return address contain Pointer
Authentication code.  The unwinder, hence, must use appropriate means to
restore LR correctly in such cases.

include/ChangeLog:

* sframe.h (SFRAME_V1_FRE_INFO_UPDATE_MANGLED_RA_P): New macro.
(SFRAME_V1_FRE_MANGLED_RA_P): Likewise.
include/sframe.h