binutils-gdb/gas/doc
Sam Tebbs 3a67e1a6b4 [aarch64] Add support for pointer authentication B key
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.

2018-12-05  Sam Tebbs  <sam.tebbs@arm.com>

bfd/
	* elf-eh-frame.c (_bfd_elf_parse_eh_frame): Add check for 'B'.

gas/
	* dw2gencfi.c (struct cie_entry): Add tc_cie_entry_extras invocation.
	(alloc_fde_entry): Add tc_fde_entry_init_extra invocation.
	(output_cie): Add tc_output_cie_extra invocation.
	(select_cie_for_fde): Add tc_cie_fde_equivalent_extra and
	tc_cie_entry_init_extra invocation.
	(frch_cfi_data, cfa_save_data): Move to dwgencfi.h.
	* config/tc-aarch64.c (s_aarch64_cfi_b_key_frame): Declare.
	(md_pseudo_table): Add "cfi_b_key_frame".
	* config/tc-aarch64.h (tc_fde_entry_extras, tc_cie_entry_extras,
	tc_fde_entry_init_extra, tc_output_cie_extra,
	tc_cie_fde_equivalent_extra, tc_cie_entry_init_extra): Define.
	* dw2gencfi.h (struct fde_entry): Add tc_fde_entry_extras invocation.
	(pointer_auth_key): Define.
	(frch_cfi_data, cfa_save_data): Move from dwgencfi.c.
	* doc/c-aarch64.texi (.cfi_b_key_frame): Add documentation.
	* testsuite/gas/aarch64/(pac_ab_key.d, pac_ab_key.s): New file.
2018-12-05 18:30:08 +00:00
..
all.texi or1k: Add OpenRISC gas documentation 2018-10-05 11:41:42 +09:00
as.texi GAS/MIPS: Add `-mfix-r5900' option for the R5900 short loop erratum 2018-11-30 18:32:36 +00:00
c-aarch64.texi [aarch64] Add support for pointer authentication B key 2018-12-05 18:30:08 +00:00
c-alpha.texi
c-arc.texi
c-arm.texi [Arm, 3/3] Add Execution and Data Prediction instructions for AArch32 2018-10-05 11:31:21 +01:00
c-avr.texi
c-bfin.texi
c-cr16.texi
c-cris.texi
c-csky.texi
c-d10v.texi
c-d30v.texi
c-epiphany.texi
c-h8300.texi
c-hppa.texi
c-i386.texi
c-ia64.texi
c-ip2k.texi
c-lm32.texi
c-m32c.texi
c-m32r.texi
c-m68hc11.texi
c-m68k.texi
c-metag.texi
c-microblaze.texi
c-mips.texi GAS/MIPS: Add `-mfix-r5900' option for the R5900 short loop erratum 2018-11-30 18:32:36 +00:00
c-mmix.texi
c-msp430.texi
c-mt.texi
c-nds32.texi
c-nios2.texi
c-ns32k.texi
c-or1k.texi or1k: Add OpenRISC gas documentation 2018-10-05 11:41:42 +09:00
c-pdp11.texi
c-pj.texi
c-ppc.texi
c-pru.texi
c-riscv.texi RISC-V: Add .insn CA support. 2018-11-27 11:29:23 -08:00
c-rl78.texi
c-rx.texi
c-s12z.texi
c-s390.texi
c-score.texi
c-sh.texi
c-sparc.texi
c-tic6x.texi
c-tic54x.texi
c-tilegx.texi
c-tilepro.texi
c-v850.texi
c-vax.texi
c-visium.texi
c-wasm32.texi
c-xc16x.texi
c-xgate.texi
c-xstormy16.texi
c-xtensa.texi
c-z8k.texi
c-z80.texi
fdl.texi
h8.texi
internals.texi Move struc-symbol.h to symbols.c 2018-10-29 18:20:48 +10:30
Makefile.am or1k: Add OpenRISC gas documentation 2018-10-05 11:41:42 +09:00
Makefile.in or1k: Add OpenRISC gas documentation 2018-10-05 11:41:42 +09:00