mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-06 12:09:26 +08:00
252dcdf432
ppc64 ld optimises sequences like the following addis 3,13,wot@tprel@ha lwz 3,wot@tprel@l(3) to nop lwz 3,wot@tprel(13) when "wot" is located near enough to the thread pointer. However, the ABI doesn't require that R_PPC64_TPREL16_HA always be on an addis rt,13,imm instruction, and while ld checked for that on the high-part instruction it didn't disable the optimisation on the low-part instruction. This patch fixes that problem, disabling the tprel optimisation globally if high-part instructions don't pass sanity checks. The optimisation is also enabled for ppc32, where before ld.bfd had the code in the wrong place and ld.gold had it in a block only enabled for ppc64. bfd/ * elf32-ppc.c (ppc_elf_check_relocs): Set has_tls_reloc for high part tprel16 relocs. (ppc_elf_tls_optimize): Sanity check high part tprel16 relocs. Clear do_tls_opt on odd instructions. (ppc_elf_relocate_section): Move TPREL16_HA/LO optimisation later. Don't sanity check them here. * elf64-ppc.c (ppc64_elf_check_relocs): Set has_tls_reloc for high part tprel16 relocs. (ppc64_elf_tls_optimize): Sanity check high part tprel16 relocs. Clear do_tls_opt on odd instructions. (ppc64_elf_relocate_section): Don't sanity check TPREL16_HA. ld/ * testsuite/ld-powerpc/tls32.d: Update for TPREL_HA/LO optimisation. * testsuite/ld-powerpc/tlsexe32.d: Likewise. * testsuite/ld-powerpc/tlsldopt32.d: Likewise. * testsuite/ld-powerpc/tlsmark32.d: Likewise. * testsuite/ld-powerpc/tlsopt4_32.d: Likewise. * testsuite/ld-powerpc/tprel.s, * testsuite/ld-powerpc/tprel.d, * testsuite/ld-powerpc/tprel32.d: New tests. * testsuite/ld-powerpc/tprelbad.s, * testsuite/ld-powerpc/tprelbad.d: New test. * testsuite/ld-powerpc/powerpc.exp: Run them. gold/ * powerpc.cc (Target_powerpc): Add tprel_opt_ and accessors. (Target_powerpc::Scan::local): Sanity check tprel high relocs. (Target_powerpc::Scan::global): Likewise. (Target_powerpc::Relocate::relocate): Control tprel optimisation with tprel_opt_ and enable for 32-bit.
262 lines
8.4 KiB
Plaintext
262 lines
8.4 KiB
Plaintext
2020-08-24 Alan Modra <amodra@gmail.com>
|
||
|
||
* powerpc.cc (Target_powerpc): Add tprel_opt_ and accessors.
|
||
(Target_powerpc::Scan::local): Sanity check tprel high relocs.
|
||
(Target_powerpc::Scan::global): Likewise.
|
||
(Target_powerpc::Relocate::relocate): Control tprel optimisation
|
||
with tprel_opt_ and enable for 32-bit.
|
||
|
||
2020-08-12 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/sr.po: Updated Serbian translation.
|
||
|
||
2020-07-27 Alan Modra <amodra@gmail.com>
|
||
|
||
* options.h (DEFINE_enum): Add optional_arg__ param, adjust
|
||
all uses.
|
||
(General_options): Add --power10-stubs and --no-power10-stubs.
|
||
* options.cc (General_options::parse_no_power10_stubs): New.
|
||
(General_options::finalize): Handle --power10-stubs.
|
||
* powerpc.cc (set_power10_stubs): Don't set when --power10-stubs=no.
|
||
(power10_stubs_auto): New.
|
||
(struct Plt_stub_ent): Add toc_ and tocoff_. Don't use a bitfield
|
||
for indx_.
|
||
(struct Branch_stub_ent): Add toc_and tocoff_. Use bitfields for
|
||
iter_, notoc_ and save_res_.
|
||
(add_plt_call_entry): Set toc_. Adjust resizing conditions for
|
||
--power10-stubs=auto.
|
||
(add_long_branch_entry): Set toc_.
|
||
(add_eh_frame, define_stub_syms): No longer use const_iterators
|
||
for plt and long branch stub iteration.
|
||
(build_tls_opt_head, build_tls_opt_tail): Change parameters and
|
||
return value. Move tests for __tls_get_addr to callers.
|
||
(plt_call_size): Handle --power10-stubs=auto.
|
||
(branch_stub_size): Likewise.
|
||
(Stub_table::do_write): Likewise.
|
||
(relocate): Likewise.
|
||
|
||
2020-07-19 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
* testsuite/bnd_ifunc_1.sh: Updated.
|
||
* testsuite/bnd_plt_1.sh: Likewise.
|
||
* testsuite/split_x32.sh: Likewise.
|
||
* testsuite/split_x86_64.sh: Likewise.
|
||
* testsuite/x86_64_indirect_call_to_direct.sh: Likewise.
|
||
|
||
2020-07-08 Nick Clifton <nickc@redhat.com>
|
||
|
||
* testsuite/script_test_7.sh: Adjust expected address of the .bss
|
||
section.
|
||
* testsuite/script_test_9.sh: Do not expect the .init section to
|
||
immediately follow the .text section in the mapping of sections to
|
||
segments.
|
||
|
||
2020-07-07 Nick Clifton <nickc@redhat.com>
|
||
|
||
* target-reloc.h: (Default_comdat_behaviour:get): Ignore discarded
|
||
relocs that refer to the .gnu.build.attributes section.
|
||
|
||
2020-07-06 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/fr.po: Updated French translation.
|
||
* po/uk.po: Updated Ukranian translation.
|
||
|
||
2020-07-04 Nick Clifton <nickc@redhat.com>
|
||
|
||
Binutils 2.35 branch created.
|
||
|
||
2020-07-03 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 26028
|
||
* testsuite/Makefile.am (file_in_many_sections.stdout): Add -W
|
||
to readelf options.
|
||
* testsuite/Makefile.in: Regenerate.
|
||
|
||
2020-06-26 Nick Alcock <nick.alcock@oracle.com>
|
||
|
||
* configure.ac: Check for bswap_16, bswap_32, and bswap_64 decls.
|
||
* configure: Regenerated.
|
||
* config.h.in: Likewise.
|
||
|
||
2020-06-24 Nick Clifton <nickc@redhat.com>
|
||
|
||
* target-reloc.h (issue_discarded_error): Initialise the
|
||
key_symndx variable.
|
||
|
||
2020-06-23 Roland McGrath <mcgrathr@google.com>
|
||
|
||
PR 22843
|
||
* options.h (class General_options): Add --dependency-file option.
|
||
* fileread.cc (File_read::files_read): New static variable.
|
||
(File_read::open): Add the file to the files_read list.
|
||
(File_read::record_file_read): New static member function.
|
||
(File_read::write_dependency_file): New static member function.
|
||
* fileread.h (class File_read): Declare them.
|
||
* layout.cc (Layout::read_layout_from_file): Call record_file_read.
|
||
(Close_task_runner::run): Call write_dependency_file if
|
||
--dependency-file was passed.
|
||
|
||
2020-06-18 Fangrui Song <i@maskray.me>
|
||
|
||
PR gold/26039
|
||
* layout.cc (Layout::finish_dynamic_section): Set DF_1_PIE.
|
||
|
||
2020-06-16 Alan Modra <amodra@gmail.com>
|
||
|
||
* testsuite/discard_locals_test.c: Replace uses of asm with __asm__.
|
||
* testsuite/discard_locals_relocatable_test.c: Likewise.
|
||
|
||
2020-06-16 Alan Modra <amodra@gmail.com>
|
||
|
||
* testsuite/Makefile.am (export_dynamic_plugin.o): Use CXXCOMPILE.
|
||
(plugin_test_wrap_symbols_1.o): Likewise.
|
||
(plugin_test_wrap_symbols_2.o): Likewise.
|
||
* testsuite/Makefile.in: Regenerate.
|
||
|
||
2020-06-15 Roland McGrath <mcgrathr@google.com>
|
||
|
||
Implement -z start-stop-visibility=... option.
|
||
* options.h (class General_options): Handle -z start-stop-visibility=.
|
||
(General_options::start_stop_visibility_enum): New public method.
|
||
(General_options::set_start_stop_visibility_enum): New private method.
|
||
(General_options::start_stop_visibility_enum_): New private member.
|
||
* options.cc (General_options::General_options): Add initializer.
|
||
(General_options::finalize): Set this->start_stop_visibility_enum_
|
||
from string value.
|
||
* layout.cc (Layout::define_section_symbols): Use option setting.
|
||
|
||
2020-06-06 Alan Modra <amodra@gmail.com>
|
||
|
||
* powerpc.cc: Update throughout for reloc renaming.
|
||
|
||
2020-05-22 Alan Modra <amodra@gmail.com>
|
||
|
||
PR 25882
|
||
* powerpc.cc (merge_object_attributes): Replace name param with
|
||
obj param. Update callers. Don't init FP attributes from shared
|
||
libraries, and do not emit an error if they don't match.
|
||
|
||
2020-05-15 Nikita Ermakov <coffe92@gmail.com>
|
||
|
||
* powerpc.cc (do_gc_mark_symbol): Don't segfault on plugin symbols.
|
||
|
||
2020-05-14 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/sr.po: New Serbian translation.
|
||
|
||
2020-05-11 Alan Modra <amodra@gmail.com>
|
||
|
||
* powerpc.cc: Rename powerxx to power10 throughout.
|
||
|
||
2020-05-02 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR gold/25904
|
||
* testsuite/Makefile.am (COMMON_TEST_C_CFLAGS): New.
|
||
(common_test_1.o): New rule.
|
||
(common_test_2.o): Likewise.
|
||
(common_test_3.o): Likewise.
|
||
(plugin_common_test_1.o): Likewise.
|
||
(plugin_common_test_2.o): Likewise.
|
||
(common_test_1_v1.o): Likewise.
|
||
(common_test_1_v2.o): Likewise.
|
||
(common_test_2_pic.o): Compile with $(COMMON_TEST_C_CFLAGS).
|
||
(common_test_3_pic.o): Likewise.
|
||
* testsuite/Makefile.in: Regenerated.
|
||
|
||
2020-05-01 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR gold/25426
|
||
* x86_64.cc (Target_x86_64<size>::Relocate::tls_desc_gd_to_ie):
|
||
For x32, relax "rex leal foo@tlsdesc(%rip), %reg" to
|
||
"rex movl foo@gottpoff(%rip), %eax" and relax ""call *(%eax)"
|
||
to "nopl (%rax)".
|
||
(Target_x86_64<size>::Relocate::tls_desc_gd_to_le): For x32,
|
||
relax "rex leal foo@tlsdesc(%rip), %reg" to
|
||
"rex movl foo@tpoff, %eax" and relax "call *foo@tlscall(%eax)"
|
||
to "nopl (%rax)".
|
||
* testsuite/Makefile.am (tls_test_gnu2.o): Depend on
|
||
gcctestdir/as.
|
||
(tls_test_file2_gnu2.o): Likewise.
|
||
(tls_test_c_gnu2.o): Likewise.
|
||
* testsuite/Makefile.in: Regenerated.
|
||
|
||
2020-05-01 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR gold/25473
|
||
* x86_64.cc (Target_x86_64<size>::Relocate::tls_desc_gd_to_ie):
|
||
Properly check r8 - r15 in "lea foo@TLSDESC(%rip), %reg".
|
||
(Target_x86_64<size>::Relocate::tls_desc_gd_to_le): Properly
|
||
relax r8 - r15 in "lea foo@TLSDESC(%rip), %reg".
|
||
* testsuite/Makefile.am (check_SCRIPTS): Add x86_64_gd_to_le.sh.
|
||
(check_DATA): Add x86_64_gd_to_le.stdout.
|
||
(MOSTLYCLEANFILES): Add x86_64_gd_to_le.
|
||
(x86_64_gd_to_le.o): New target.
|
||
(x86_64_gd_to_le): Likewise.
|
||
(x86_64_gd_to_le.stdout): Likewise.
|
||
* testsuite/Makefile.in: Regenerated.
|
||
* testsuite/x86_64_gd_to_le.s: New file.
|
||
* testsuite/x86_64_gd_to_le.sh: Likewise.
|
||
|
||
2020-05-01 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
* testsuite/odr_violation2.cc (Ordering::operator()): Make
|
||
expression even more complex.
|
||
|
||
2020-05-01 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
* testsuite/ver_test_pr16504.sh: Updated.
|
||
|
||
2020-05-01 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR gold/25872
|
||
* x86_64.cc (Output_data_plt_x86_64_bnd::do_write): Increment
|
||
plt_offset after setting the reserved TLSDESC PLT entry.
|
||
(Output_data_plt_x86_64_ibt<size>::do_write): Likewise.
|
||
|
||
2020-05-01 H.J. Lu <hongjiu.lu@intel.com>
|
||
|
||
PR gold/25872
|
||
* x86_64.cc (Output_data_plt_x86_64_bnd::do_address_for_local):
|
||
Handle local IFUNC symbol.
|
||
(Output_data_plt_x86_64_ibt::do_address_for_local): Likewise.
|
||
|
||
2020-03-19 Fangrui Song <maskray@google.com>
|
||
|
||
* options.h (General_options): Add --no-rosegment option.
|
||
|
||
2020-02-24 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/fr.po: Update French translation.
|
||
|
||
2020-01-20 Nick Clifton <nickc@redhat.com>
|
||
|
||
* po/uk.po: Updated Ukranian translation.
|
||
|
||
2020-01-18 Nick Clifton <nickc@redhat.com>
|
||
|
||
* configure: Regenerate.
|
||
* po/gold.pot: Regenerate.
|
||
|
||
2020-01-18 Nick Clifton <nickc@redhat.com>
|
||
|
||
Binutils 2.34 branch created.
|
||
|
||
2020-01-01 Alan Modra <amodra@gmail.com>
|
||
|
||
Update year range in copyright notice of all files.
|
||
|
||
For older changes see ChangeLog-2019
|
||
|
||
Copyright (C) 2020 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:
|