mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
37c18eedff
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.
363 lines
12 KiB
Plaintext
363 lines
12 KiB
Plaintext
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.
|
||
|
||
|
||
2019-03-13 Sudakshina Das <sudi.das@arm.com>
|
||
|
||
* elf-properties.c (_bfd_elf_link_setup_gnu_properties): Exclude
|
||
linker created inputs from merge.
|
||
* elfnn-aarch64.c (struct elf_aarch64_obj_tdata): Add field for
|
||
GNU_PROPERTY_AARCH64_FEATURE_1_AND properties.
|
||
(elfNN_aarch64_link_setup_gnu_properties): New.
|
||
(elfNN_aarch64_merge_gnu_properties): New.
|
||
(elf_backend_setup_gnu_properties): Define for AArch64.
|
||
(elf_backend_merge_gnu_properties): Likewise.
|
||
* elfxx-aarch64.c (_bfd_aarch64_elf_link_setup_gnu_properties): Define.
|
||
(_bfd_aarch64_elf_parse_gnu_properties): Define.
|
||
(_bfd_aarch64_elf_merge_gnu_properties): Define.
|
||
* elfxx-aarch64.h (_bfd_aarch64_elf_link_setup_gnu_properties): Declare.
|
||
(_bfd_aarch64_elf_parse_gnu_properties): Declare.
|
||
(_bfd_aarch64_elf_merge_gnu_properties): Declare.
|
||
(elf_backend_parse_gnu_properties): Define for AArch64.
|
||
|
||
2019-03-13 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/24322
|
||
* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Properly
|
||
merge GNU_PROPERTY_X86_FEATURE_1_[IBT|SHSTK].
|
||
|
||
2019-03-12 Alan Modra <amodra@gmail.com>
|
||
|
||
* coffcode.h (buy_and_read): Delete unnecessary forward decl. Add
|
||
nmemb parameter. Use bfd_alloc2.
|
||
(coff_slurp_line_table): Use bfd_alloc2. Update buy_and_read calls.
|
||
Delete assertion.
|
||
(coff_slurp_symbol_table): Use bfd_alloc2 and bfd_zalloc2.
|
||
(coff_slurp_reloc_table): Use bfd_alloc2. Update buy_and_read calls.
|
||
* coffgen.c (coff_get_reloc_upper_bound): Ensure size calculation
|
||
doesn't overflow.
|
||
* elf.c (bfd_section_from_shdr): Use bfd_zalloc2. Style fix.
|
||
(assign_section_numbers): Style fix.
|
||
(swap_out_syms): Use bfd_malloc2.
|
||
(_bfd_elf_get_reloc_upper_bound): Ensure size calculation doesn't
|
||
overflow.
|
||
(_bfd_elf_make_empty_symbol): Style fix.
|
||
(elfobj_grok_stapsdt_note_1): Formatting.
|
||
* elfcode.h (elf_object_p): Use bfd_alloc2.
|
||
(elf_write_relocs, elf_write_shdrs_and_ehdr): Likewise.
|
||
(elf_slurp_symbol_table): Use bfd_zalloc2.
|
||
(elf_slurp_reloc_table): Use bfd_alloc2.
|
||
(_bfd_elf_bfd_from_remote_memory): Use bfd_malloc2.
|
||
* elf64-sparc (elf64_sparc_get_reloc_upper_bound): Ensure
|
||
size calculation doesn't overflow.
|
||
(elf64_sparc_get_dynamic_reloc_upper_bound): Likewise.
|
||
* mach-o.c (bfd_mach_o_get_reloc_upper_bound): Likewise.
|
||
* pdp11.c (get_reloc_upper_bound): Copy aoutx.h version.
|
||
|
||
2019-03-08 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 24311
|
||
* merge.c (merge_strings): Return secinfo. Don't pad section
|
||
to alignment here.
|
||
(_bfd_merge_sections): Pad section to alignment here, if input
|
||
sections contributing to merged output all pad to alignment.
|
||
Formatting.
|
||
|
||
2019-03-06 Nick Clifton <nickc@redhat.com>
|
||
|
||
* dwarf2.c (_bfd_dwarf2_find_symbol_bias): Check for a NULL symbol
|
||
table pointer.
|
||
* coffgen.c (coff_find_nearest_line_with_names): Do not call
|
||
_bfd_dwarf2_find_symbol_bias if there is no symbol table available.
|
||
|
||
2019-03-01 Andreas Krebbel <krebbel@linux.ibm.com>
|
||
|
||
This reverts commit 5a12586d44fa8d5dfc74cbca4f2f36a273a16335.
|
||
2019-01-14 Maamoun Tarsha <maamountk@hotmail.com>
|
||
|
||
PR 20113
|
||
* elf32-s390.c (allocate_dynrelocs): Update comment.
|
||
|
||
2019-02-28 Tamar Christina <tamar.christina@arm.com>
|
||
|
||
* elf-eh-frame.c (_bfd_elf_write_section_eh_frame): Correct CIE parse.
|
||
|
||
2019-02-28 Nick Clifton <nickc@redhat.com>
|
||
|
||
PR 24273
|
||
* elf.c (bfd_elf_string_from_elf_section): Check for a string
|
||
section that is not NUL terminated.
|
||
|
||
2019-02-27 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/24276
|
||
* elf64-x86-64.c (elf_x86_64_check_relocs): Skip symbol defined
|
||
by linker when checking copy reloc on protected symbol.
|
||
|
||
2019-02-24 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 24144
|
||
* pdp11.c (set_section_contents): Revert 2015-02-24 change.
|
||
|
||
2019-02-20 Eric Tsai <erictsai@cadence.com>
|
||
|
||
* elf32-xtensa.c (is_resolvable_asm_expansion): Scan output
|
||
sections between the call site and call destination and adjust
|
||
call distance by the largest alignment.
|
||
|
||
2019-02-20 Alan Hayward <alan.hayward@arm.com>
|
||
|
||
* elf-bfd.h (elfcore_write_aarch_pauth): Add declaration.
|
||
* elf.c (elfcore_grok_aarch_pauth): New function.
|
||
(elfcore_grok_note): Check for NT_ARM_PAC_MASK.
|
||
(elfcore_write_aarch_pauth): New function.
|
||
(elfcore_write_register_note): Check for AArch64 pauth section.
|
||
|
||
2019-02-20 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 24225
|
||
* elf32-nios2.c (nios2_elf32_relocate_section): Check asprintf
|
||
return value.
|
||
|
||
2019-02-20 Michael Roitzsch <reactorcontrol@icloud.com>
|
||
|
||
* configure.ac (SHARED_LIBADD): Add -liberty -lintl for all
|
||
Darwin hosts, not just or1k.
|
||
* configure: Regenerate.
|
||
|
||
2019-02-20 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 24236
|
||
* archive64.c (_bfd_archive_64_bit_slurp_armap): Move code adding
|
||
sentinel NUL to string buffer nearer to loop where it is used.
|
||
Don't go past sentinel when scanning strings, and don't write
|
||
NUL again.
|
||
* archive.c (do_slurp_coff_armap): Simplify string handling to
|
||
archive64.c style.
|
||
|
||
2019-02-19 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 24235
|
||
* pei-x86_64.c (pex64_bfd_print_pdata_section): Correct checks
|
||
attempting to prevent read past end of section.
|
||
|
||
2019-02-18 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 24225
|
||
* elf32-nios2.c (nios2_elf32_relocate_section): Use asprintf and
|
||
PRIx64 to generate warning messages. Print local sym names too.
|
||
|
||
2019-02-09 Vineet Gupta <vgupta@synopsys.com>
|
||
|
||
* elf32-arc (INIT_SYM_STRING): Delete.
|
||
(FINI_SYM_STRING): Likewise.
|
||
(init_str): Likewise.
|
||
(fini_str): Likewise.
|
||
|
||
2019-02-08 Alan Modra <amodra@gmail.com>
|
||
|
||
* elf32-ppc.c (ppc_elf_relocate_section): Add %X to "unsupported
|
||
for bss-plt" warning to make it an error.
|
||
|
||
2019-02-07 Eric Botcazou <ebotcazou@adacore.com>
|
||
|
||
PR ld/18841
|
||
* elf32-sparc.c (elf32_sparc_reloc_type_class): Return
|
||
reloc_class_ifunc for ifunc symbols.
|
||
* elf64-sparc.c (elf64_sparc_reloc_type_class): Likewise.
|
||
|
||
2019-02-07 Eric Botcazou <ebotcazou@adacore.com>
|
||
|
||
* elf32-visium.c (visium_elf_howto_parity_reloc): Minor tweak.
|
||
<R_VISIUM_PC16>: Use explicit range test to detect an overflow.
|
||
|
||
2019-02-07 Nick Clifton <nickc@redhat.com>
|
||
|
||
* config.bfd: Move the powerpc-lynxos and powerpc-windiss targets
|
||
into the definitely obsolete list.
|
||
|
||
2019-02-05 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR ld/24151
|
||
* elf64-x86-64.c (elf_x86_64_need_pic): Check
|
||
SYMBOL_DEFINED_NON_SHARED_P instead of def_regular.
|
||
(elf_x86_64_relocate_section): Move PIC check for PC-relative
|
||
relocations to ...
|
||
(elf_x86_64_check_relocs): Here.
|
||
(elf_x86_64_finish_dynamic_symbol): Use SYMBOL_DEFINED_NON_SHARED_P
|
||
to check if a symbol is defined in a non-shared object.
|
||
* elfxx-x86.h (SYMBOL_DEFINED_NON_SHARED_P): New.
|
||
|
||
2019-01-21 Sergio Durigan Junior <sergiodj@redhat.com>
|
||
|
||
* elf32-arm.c (elf32_arm_final_link_relocate): Use 'llabs' instead
|
||
of 'labs' (and fix GCC warning).
|
||
|
||
2019-01-25 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/ru.po: Updated Russian translation.
|
||
|
||
2019-01-23 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/fr.po: Updated French translation.
|
||
|
||
2019-01-21 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/pt.po: Updated Portuguese translation.
|
||
* po/uk.po: Updated Ukranian translation.
|
||
|
||
2019-01-21 Yuri Chornoivan <yurchor@ukr.net>
|
||
|
||
PR 24108
|
||
* elf32-nds32.c (nds32_relocate_section): Add space between words
|
||
in error message.
|
||
* elfnn-riscv.c (riscv_version_mismatch): Fix spelling mistake in
|
||
error message.
|
||
(riscv_i_or_e_p): Likewise.
|
||
(riscv_merge_arch_attr_info): Likewise.
|
||
|
||
2019-01-19 Nick Clifton <nickc@redhat.com>
|
||
|
||
* version.m4: Reset to 2.32.51
|
||
* configure: Regenerate.
|
||
* po/bfd.pot: Regenerate.
|
||
|
||
2018-06-24 Nick Clifton <nickc@redhat.com>
|
||
|
||
2.32 branch created.
|
||
|
||
2019-01-16 Kito Cheng <kito@andestech.com>
|
||
|
||
* elf-attrs.c (vendor_obj_attr_size): Return 0 if size is 0 even
|
||
for OBJ_ATTR_PROC.
|
||
|
||
2019-01-16 Kito Cheng <kito@andestech.com>
|
||
Nelson Chu <nelson@andestech.com>
|
||
|
||
* elfnn-riscv.c (in_subsets): New.
|
||
(out_subsets): Likewise.
|
||
(merged_subsets): Likewise.
|
||
(riscv_std_ext_p): Likewise.
|
||
(riscv_non_std_ext_p): Likewise.
|
||
(riscv_std_sv_ext_p): Likewise.
|
||
(riscv_non_std_sv_ext_p): Likewise.
|
||
(riscv_version_mismatch): Likewise.
|
||
(riscv_i_or_e_p): Likewise.
|
||
(riscv_merge_std_ext): Likewise.
|
||
(riscv_merge_non_std_and_sv_ext): Likewise.
|
||
(riscv_merge_arch_attr_info): Likewise.
|
||
(riscv_merge_attributes): Likewise.
|
||
(_bfd_riscv_elf_merge_private_bfd_data): Merge attribute.
|
||
|
||
* elfnn-riscv.c (riscv_elf_obj_attrs_arg_type): New.
|
||
(elf_backend_obj_attrs_vendor): Define.
|
||
(elf_backend_obj_attrs_section_type): Likewise.
|
||
(elf_backend_obj_attrs_section): Likewise.
|
||
(elf_backend_obj_attrs_arg_type): Define as
|
||
riscv_elf_obj_attrs_arg_type.
|
||
* elfxx-riscv.c (riscv_estimate_digit): New.
|
||
(riscv_estimate_arch_strlen1): Likewise.
|
||
(riscv_estimate_arch_strlen): Likewise.
|
||
(riscv_arch_str1): Likewise.
|
||
(riscv_arch_str): Likewise.
|
||
* elfxx-riscv.h (riscv_arch_str): Declare.
|
||
|
||
2019-01-14 John Darrington <john@darrington.wattle.id.au>
|
||
|
||
* bfd-in2.h [BFD_RELOC_S12Z_OPR]: New reloc.
|
||
* libbfd.h: regen.
|
||
* elf32-s12z.c (eld_s12z_howto_table): R_S12Z_OPR takes non zero
|
||
source field. (md_apply_fix): Apply final fix
|
||
to BFD_RELOC_S12Z_OPR.
|
||
* reloc.c[BFD_RELOC_S12Z_OPR]: New reloc.
|
||
|
||
2019-01-14 Maamoun Tarsha <maamountk@hotmail.com>
|
||
|
||
PR 20113
|
||
* elf32-s390.c (allocate_dynrelocs): Update comment.
|
||
|
||
2019-01-09 Andrew Paprocki <andrew@ishiboo.com>
|
||
|
||
* warning.m4: Adjust egrep pattern for non-GNU compilers.
|
||
* configure: Regenerate.
|
||
|
||
2019-01-08 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 23699
|
||
PR 24065
|
||
* ihex.c (ihex_write_object_contents): Properly check 32-bit
|
||
address range.
|
||
|
||
2019-01-05 Yoshinori Sato <ysato@users.sourceforge.jp>
|
||
|
||
* bfd/archures.c: Add bfd_mach_rx_v2 and bfd_mach_rx_v3.
|
||
* bfd/bfd-in2.h: Regenerate.
|
||
* bfd/cpu-rx.c (arch_info_struct): Add RXv2 and RXv3 entry.
|
||
* bfd/elf32-rx.c (elf32_rx_machine): Add RXv2 and RXv3 support.
|
||
|
||
2019-01-04 Lifang Xia <lifang_xia@c-sky.com>
|
||
|
||
* config.bfd (csky-*-elf* | csky-*-linux*): Modify the csky
|
||
default target, little endian target is more suitable.
|
||
|
||
2019-01-04 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 24061
|
||
PR 21786
|
||
* coff-rs6000.c (GET_VALUE_IN_FIELD): Add base parameter and
|
||
adjust all callers.
|
||
(EQ_VALUE_IN_FIELD): Likewise.
|
||
* coff64-rs6000.c (GET_VALUE_IN_FIELD): Likewise.
|
||
|
||
2019-01-01 Alan Modra <amodra@gmail.com>
|
||
|
||
Update year range in copyright notice of all files.
|
||
|
||
For older changes see ChangeLog-2018
|
||
|
||
Copyright (C) 2019 Free Software Foundation, Inc.
|
||
|
||
Copying and distribution of this file, with or without modification,
|
||
are permitted in any medium without royalty provided the copyright
|
||
notice and this notice are preserved.
|
||
|
||
Local Variables:
|
||
mode: change-log
|
||
left-margin: 8
|
||
fill-column: 74
|
||
version-control: never
|
||
End:
|