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 Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-arc.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
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 Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-bfin.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-cr16.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-cris.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-csky.texi Add support for the C_SKY series of processors. 2018-07-30 12:24:14 +01:00
c-d10v.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-d30v.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-epiphany.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-h8300.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-hppa.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-i386.texi x86: Add -mvexwig=[0|1] option to assembler 2018-09-17 09:26:29 -07:00
c-ia64.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-ip2k.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-lm32.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-m32c.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-m32r.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-m68hc11.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-m68k.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-metag.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-microblaze.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
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 Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-msp430.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-mt.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-nds32.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-nios2.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-ns32k.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-or1k.texi or1k: Add OpenRISC gas documentation 2018-10-05 11:41:42 +09:00
c-pdp11.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-pj.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-ppc.texi PowerPC Improve support for Gekko & Broadway 2018-07-26 17:42:47 +09:30
c-pru.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-riscv.texi RISC-V: Add .insn CA support. 2018-11-27 11:29:23 -08:00
c-rl78.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-rx.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-s12z.texi Add support for the Freescale s12z processor. 2018-05-18 15:26:18 +01:00
c-s390.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-score.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-sh.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-sparc.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-tic6x.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-tic54x.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-tilegx.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-tilepro.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-v850.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-vax.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-visium.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-wasm32.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-xc16x.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-xgate.texi Update year range in copyright notice of binutils files 2018-01-03 17:49:56 +10:30
c-xstormy16.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-xtensa.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-z8k.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
c-z80.texi Fix use of "command line X" in binutils doc 2018-07-02 11:18:24 +01:00
fdl.texi Change documentation license to FDL v1.3 2008-11-19 16:22:48 +00:00
h8.texi Remove i860, i960, bout and aout-adobe targets 2018-04-11 21:49:30 +09:30
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