[libunwind][AArch64] Add support for DWARF expression for RA_SIGN_STATE.
authorDaniel Kiss <daniel.kiss@arm.com>
Fri, 13 May 2022 07:12:07 +0000 (09:12 +0200)
committerDaniel Kiss <daniel.kiss@arm.com>
Wed, 18 May 2022 15:56:16 +0000 (17:56 +0200)
commitc218fd3d7d3764eb123c8429bbcd33bacfe2e633
tree039b3330d1c3d9c93897d5cd58fa196958258bd1
parent69edacbcf0c232de6213297cb600b0f0313c6397
[libunwind][AArch64] Add support for DWARF expression for RA_SIGN_STATE.

Program may set the RA_SIGN_STATE pseudo register by expressions.
Libunwind expected only the DW_CFA_AARCH64_negate_ra_state could change the value
of the register which leads to runtime errors on PAC enabled systems.
In the recent version of the aadwarf64[1] a limitation is added[2] to forbid the mixing the
DW_CFA_AARCH64_negate_ra_state with other DWARF Register Rule Instructions.

[1] https://github.com/ARM-software/abi-aa/releases/tag/2022Q1
[2] https://github.com/ARM-software/abi-aa/pull/129

Reviewed By: #libunwind, MaskRay

Differential Revision: https://reviews.llvm.org/D123692
Reland: test moved because it depends on exceptions.
libcxxabi/test/native/AArch64/ra_sign_state.pass.cpp [new file with mode: 0644]
libunwind/src/DwarfInstructions.hpp