binutils-gdb/include
Sudakshina Das 37c18eedff [BFD, LD, AArch64, 2/3] Add --force-bti to enable BTI and to select BTI enabled PLTs
This is part of the patch series to add support for BTI and
PAC in AArch64 linker.

1) This patch adds a new ld command line option: --force-bti.
In the presence of this option, the linker enables BTI with the
GNU_PROPERTY_AARCH64_FEATURE_1_BTI feature. This gives out warning
in case of missing gnu notes for BTI in inputs.
2) It also defines a new set of BTI enabled PLTs. These are used either
when all the inputs are marked with GNU_PROPERTY_AARCH64_FEATURE_1_BTI
or when the new --force-bti option is used. This required adding new
fields in elf_aarch64_link_hash_table so that we could make the PLT
related information more generic.
3) It also defines a dynamic tag DT_AARCH64_BTI_PLT. The linker uses
this whenever it picks BTI enabled PLTs.
All these are made according to the new AArch64 ELF ABI
https://developer.arm.com/docs/ihi0056/latest/elf-for-the-arm-64-bit-architecture-aarch64-abi-2018q4

*** bfd/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>
	    Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* bfd-in.h (aarch64_plt_type, aarch64_enable_bti_type): New.
	(aarch64_bti_pac_info): New.
	(bfd_elf64_aarch64_set_options): Add aarch64_bti_pac_info argument.
	(bfd_elf32_aarch64_set_options): Likewise.
	* bfd-in2.h: Regenerate
	* elfnn-aarch64.c (PLT_BTI_ENTRY_SIZE): New.
	(PLT_BTI_SMALL_ENTRY_SIZE, PLT_BTI_TLSDESC_ENTRY_SIZE): New.
	(elfNN_aarch64_small_plt0_bti_entry): New.
	(elfNN_aarch64_small_plt_bti_entry): New.
	(elfNN_aarch64_tlsdesc_small_plt_bti_entry): New.
	(elf_aarch64_obj_tdata): Add no_bti_warn and plt_type fields.
	(elf_aarch64_link_hash_table): Add plt0_entry, plt_entry and
	tlsdesc_plt_entry_size fields.
	(elfNN_aarch64_link_hash_table_create): Initialise the new fields.
	(setup_plt_values): New helper function.
	(bfd_elfNN_aarch64_set_options): Use new bp_info to set plt sizes and
	bti enable type.
	(elfNN_aarch64_allocate_dynrelocs): Use new size members instead of
	fixed macros.
	(elfNN_aarch64_size_dynamic_sections): Likewise and add checks.
	(elfNN_aarch64_create_small_pltn_entry): Use new generic pointers
	to plt stubs instead of fixed ones and update filling them according
	to the need for bti.
	(elfNN_aarch64_init_small_plt0_entry): Likewise.
	(elfNN_aarch64_finish_dynamic_sections): Likewise.
	(get_plt_type, elfNN_aarch64_get_synthetic_symtab): New.
	(elfNN_aarch64_plt_sym_val): Update size accordingly.
	(elfNN_aarch64_link_setup_gnu_properties): Set up plts if BTI GNU NOTE
	is set.
	(bfd_elfNN_get_synthetic_symtab): Define.
	(elfNN_aarch64_merge_gnu_properties): Give out warning with --force-bti
	and mising BTI NOTE SECTION.

*** binutils/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>
	    Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* readelf.c (get_aarch64_dynamic_type): New.
	(get_dynamic_type): Use above for EM_AARCH64.
	(dynamic_section_aarch64_val): New.
	(process_dynamic_section): Use above for EM_AARCH64.

*** include/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>
	    Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* elf/aarch64.h (DT_AARCH64_BTI_PLT): New.

*** ld/ChangeLog ***

2019-03-13  Sudakshina Das  <sudi.das@arm.com>
	    Szabolcs Nagy  <szabolcs.nagy@arm.com>

	* NEWS: Document --force-bti.
	* emultempl/aarch64elf.em (plt_type, bti_type, OPTION_FORCE_BTI): New.
	(PARSE_AND_LIST_SHORTOPTS, PARSE_AND_LIST_OPTIONS): Add force-bti.
	(PARSE_AND_LIST_ARGS_CASES): Handle OPTION_FORCE_BTI.
	* testsuite/ld-aarch64/aarch64-elf.exp: Add all the tests below.
	* testsuite/ld-aarch64/bti-plt-1.d: New test.
	* testsuite/ld-aarch64/bti-plt-1.s: New test.
	* testsuite/ld-aarch64/bti-plt-2.s: New test.
	* testsuite/ld-aarch64/bti-plt-2.d: New test.
	* testsuite/ld-aarch64/bti-plt-3.d: New test.
	* testsuite/ld-aarch64/bti-plt-4.d: New test.
	* testsuite/ld-aarch64/bti-plt-5.d: New test.
	* testsuite/ld-aarch64/bti-plt-6.d: New test.
	* testsuite/ld-aarch64/bti-plt-7.d: New test.
	* testsuite/ld-aarch64/bti-plt-so.s: New test.
	* testsuite/ld-aarch64/bti-plt.ld: New test.
2019-03-13 11:47:07 +00:00
..
aout Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
cgen Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
coff PR24272, out-of-bounds read in pex64_xdata_print_uwd_codes 2019-03-01 13:30:38 +10:30
elf [BFD, LD, AArch64, 2/3] Add --force-bti to enable BTI and to select BTI enabled PLTs 2019-03-13 11:47:07 +00:00
gdb Update copyright year range in all GDB files. 2019-01-01 10:01:51 +04:00
mach-o Use the correct name for various MACH-O based operating systems in comments. 2019-02-15 12:50:52 +00:00
opcode S/390: Implement instruction set extensions 2019-01-31 17:32:18 +01:00
som Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
vms Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
alloca-conf.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
ansidecl.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
bfdlink.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
binary-io.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
bout.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
ChangeLog [BFD, LD, AArch64, 2/3] Add --force-bti to enable BTI and to select BTI enabled PLTs 2019-03-13 11:47:07 +00:00
ChangeLog-0415 binutils ChangeLog rotation 2016-01-01 22:59:17 +10:30
ChangeLog-2016 ChangeLog rotation 2017-01-02 13:55:05 +10:30
ChangeLog-2017 ChangeLog rotation 2018-01-03 17:49:42 +10:30
ChangeLog-2018 ChangeLog rotation 2019-01-01 21:25:40 +10:30
ChangeLog-9103 Add copyright notices 2012-12-10 12:48:03 +00:00
COPYING
COPYING3
demangle.h Sync libiberty sources with gcc master versions. 2019-01-10 09:44:13 +00:00
diagnostics.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
dis-asm.h Include <string.h> to dis-asm.h to get strchr declaration 2019-01-14 16:41:03 -05:00
dwarf2.def Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
dwarf2.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
dyn-string.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
environ.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
fibheap.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
filenames.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
floatformat.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
fnmatch.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
fopen-bin.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
fopen-same.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
fopen-vms.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
gcc-c-fe.def Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
gcc-c-interface.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
gcc-cp-fe.def Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
gcc-cp-interface.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
gcc-interface.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
getopt.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
hashtab.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
hp-symtab.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
leb128.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
libiberty.h Merge from gcc: use "cannot" instead of "can not" in libiberty and include. 2019-01-09 13:59:16 -08:00
longlong.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
lto-symtab.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
MAINTAINERS Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
md5.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
oasys.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
objalloc.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
obstack.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
os9k.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
partition.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
plugin-api.h Merge from gcc: use "cannot" instead of "can not" in libiberty and include. 2019-01-09 13:59:16 -08:00
progress.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
safe-ctype.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
sha1.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
simple-object.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
sort.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
splay-tree.h Fix splay tree KEY leak detected in GDB test gdb.base/macscp.exp 2019-02-12 06:06:19 -07:00
symcat.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
timeval-utils.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
vtv-change-permission.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
xregex2.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
xregex.h merge from gcc 2011-07-25 17:11:48 +00:00
xtensa-config.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
xtensa-isa-internal.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30
xtensa-isa.h Update year range in copyright notice of binutils files 2019-01-01 22:06:53 +10:30