HomePhabricator

[AArch64] - Return address signing dwarf support

Authored by LukeCheeseman on Sep 26 2018, 3:14 AM.

Description

[AArch64] - Return address signing dwarf support

Functions that have signed return addresses need additional dwarf support:

  • After signing the LR, and before authenticating it, the LR register is in a state the is unusable by a debugger or unwinder
  • To account for this a new directive, .cfi_negate_ra_state, is added
  • This directive says the signed state of the LR register has now changed, i.e. unsigned -> signed or signed -> unsigned
  • This directive has the same CFA code as the SPARC directive GNU_window_save (0x2d), adding a macro to account for multiply defined codes
  • This patch matches the gcc implementation of this support: https://patchwork.ozlabs.org/patch/800271/

Differential Revision: https://reviews.llvm.org/D50136

llvm-svn: 343089

Details

Committed
LukeCheesemanSep 26 2018, 3:14 AM
Differential Revision
D50136: [AArch64] - Return address signing dwarf support
Parents
rG4e8337e001ac: [CMake] Avoid REVERSE on unset variable
Branches
Unknown
Tags
Unknown