On 11/01/2018 11:56 AM, Sam Tebbs wrote:

> Hi all,
>
> Armv8.3-A has another key used in pointer authentication called the B-key 
> (other
> than the A-key that is already supported). In order for stack unwinders to 
> work
> it is necessary to be able to identify frames that have been signed with the
> B-key rather than the A-key and it was felt that keeping this as an 
> augmentation
> character in the CIE was the best bet. The DWARF extensions for ARM therefore
> propose to add a new augmentation character 'B' to the CIE augmentation string
> and the corresponding cfi directive ".cfi_b_key_frame". I've made the relevant
> changes to GAS and LD to add support for B-key unwinding, which required
> modifying LD to check for 'B' in the augmentation string, adding the
> ".cfi_b_key_frame" directive to GAS and adding a "pauth_key" field to GAS's
> fde_entry and cie_entry structs.
>
> The pointer authentication instructions will behave as NOPs on architectures
> that don't support them, and so a check for the architecture being assembled
> for is not necessary since there will be no behavioural difference between
> augmentation strings with and without the 'B' character on such architectures.
>
> Built on aarch64-linux-gnu and aarch64-none-elf, and tested on 
> aarch64-none-elf
> with no regressions. This patch has been tested with the corresponding patch
> that enables B-key support in GCC.
>
> OK for trunk?
>
> bfd/
> 2018-11-01  Sam Tebbs<sam.te...@arm.com>
>
>       * elf-eh-frame.c (_bfd_elf_parse_eh_frame): Add check for 'B'.
>
> gas/
> 2018-11-01  Sam Tebbs<sam.te...@arm.com>
>
>       * dw2gencfi.c (struct cie_entry): Add pauth_key field.
>       (alloc_fde_entry): Set pauth_key to AARCH64_PAUTH_KEY_A by default.
>       (output_cie): Output 'B' if pauth_key == AARCH64_PAUTH_KEY_B.
>       (select_cie_for_fde): Add check for pauth_key. Set cie's pauth_key to
>       fde's pauth_key.
>       (frch_cfi_data, cfa_save_data): Move to dwgencfi.h.
>       * config/tc-aarch64.c (dot_cfi_b_key_frame): Declare.
>       (md_pseudo_table): Add "cfi_b_key_frame".
>       * dw2gencfi.h (pointer_auth_key): Define.
>       (struct fde_entry): Add pauth_key field.
>       (frch_cfi_data, cfa_save_data): Move from dwgencfi.c.
>
> gas/doc/
> 2018-11-01  Sam Tebbs<sam.te...@arm.com>
>
>       * c-aarch64.texi (.cfi_b_key_frame): Add documentation.
>
> gas/testsuite
> 2018-11-01  Sam Tebbs<sam.te...@arm.com>
>
>       * gas/aarch64/(pac_ab_key.d, pac_ab_key.s): New file.
>

Apologies all, this was sent to the wrong mailing list.

Reply via email to