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/