This introduces DWARF support to enable unwinders to authenticate return
addresses signed using FEAT_PAuth_LR, where the value of PC is used as
an extra diversifier.
To achieve that, this proposes the following changes to the aadwarf64
document:
Expanding usage of the RA_SIGN_STATE pseudo-register, allocating
it's bit[1] to indicate wether the value of PC has been used for
return address signing.
Introducing a new vendor call frame instruction,
DW_CFA_AARCH64_negate_ra_state_with_pc, which negates both bit[0]
and bit[1] of RA_SIGN_STATE and instructs the unwinder to capture
the current code location to be used when authenticating the return
address.
This introduces DWARF support to enable unwinders to authenticate return addresses signed using FEAT_PAuth_LR, where the value of PC is used as an extra diversifier.
To achieve that, this proposes the following changes to the aadwarf64 document:
RA_SIGN_STATE
pseudo-register, allocating it's bit[1] to indicate wether the value of PC has been used for return address signing.DW_CFA_AARCH64_negate_ra_state_with_pc
, which negates both bit[0] and bit[1] ofRA_SIGN_STATE
and instructs the unwinder to capture the current code location to be used when authenticating the return address.Co-authored-by: Oliver Stannard oliver.stannard@arm.com