summaryrefslogtreecommitdiff
path: root/debuggerd/libdebuggerd/backtrace.cpp
diff options
context:
space:
mode:
authorTamas Petz <tamas.petz@arm.com>2020-01-22 14:22:41 +0100
committerElliott Hughes <enh@google.com>2020-07-14 13:31:59 -0700
commit6835d019b22a4b643189d4ace2f8cae375ce89e5 (patch)
treef74b0068e4b55e61d0f0d48952efb8fd26d0495b /debuggerd/libdebuggerd/backtrace.cpp
parent7ca7680ec579ecc9bff2237edc2148db606cc6a7 (diff)
libunwindstack: support for Armv8.3-A Pointer Authentication
This patch adds support for handling return addresses signed with pointer authentication. It simply strips the authentication code without verifying its correctness, and thus works with both A and B keys and through key-change boundaries. Additons: * DW_CFA_AARCH64_negate_ra_state: new CFA operation. * RA_SIGN_STATE: new pseudo register. * Pass the arch to DwarfCfa so that the new op is only executed on aarch64. The stripping uses the xpaclri instruction. This is a hint space instruction which is compatible with pre Armv8.3-A devices. For cases where it cannot be used, a mask can be set instead. Test: libunwindstack_test Without this patch all UnwindTest.* testcases should fail if compiled with Pointer Authentication. The tests should be executed with both -mbranch-protection=pac-ret and pac-ret+leaf flags so that either some or all functions have pointer authentication instructions. Change-Id: Id7c3f1d0e2fc7fccb19bd1430826264405a9df7c
Diffstat (limited to 'debuggerd/libdebuggerd/backtrace.cpp')
0 files changed, 0 insertions, 0 deletions