Commit Graph

1989 Commits

Author SHA1 Message Date
Yuri Chornovian de194d8575 Fix spelling typos. 2017-07-18 16:58:14 +01:00
Cary Coutant b7d7d4598c Add missing gold/ChangeLog entry. 2017-07-12 07:24:37 -07:00
Alan Modra 429d795d50 Update PO files
bfd/
	* po/es.po: Update from translationproject.org/latest/bfd/.
	* po/fi.po: Likewise.
	* po/fr.po: Likewise.
	* po/id.po: Likewise.
	* po/ja.po: Likewise.
	* po/ro.po: Likewise.
	* po/ru.po: Likewise.
	* po/sr.po: Likewise.
	* po/sv.po: Likewise.
	* po/tr.po: Likewise.
	* po/uk.po: Likewise.
	* po/vi.po: Likewise.
	* po/zh_CN.po: Likewise.
	* po/hr.po: New file from translationproject.org.
	* configure.ac (ALL_LINGUAS): Add hr.  Sort.
	* configure: Regenerate.

binutils/
	* po/bg.po: Update from translationproject.org/latest/binutils/.
	* po/ca.po: Likewise.
	* po/da.po: Likewise.
	* po/es.po: Likewise.
	* po/fi.po: Likewise.
	* po/fr.po: Likewise.
	* po/hr.po: Likewise.
	* po/id.po: Likewise.
	* po/it.po: Likewise.
	* po/ja.po: Likewise.
	* po/ro.po: Likewise.
	* po/ru.po: Likewise.
	* po/sk.po: Likewise.
	* po/sr.po: Likewise.
	* po/sv.po: Likewise.
	* po/tr.po: Likewise.
	* po/uk.po: Likewise.
	* po/vi.po: Likewise.
	* po/zh_CN.po: Likewise.
	* po/zh_TW.po: Likewise.

gas/
	* po/es.po: Update from translationproject.org/latest/gas/.
	* po/fi.po: Likewise.
	* po/fr.po: Likewise.
	* po/id.po: Likewise.
	* po/ja.po: Likewise.
	* po/ru.po: Likewise.
	* po/sv.po: Likewise.
	* po/tr.po: Likewise.
	* po/uk.po: Likewise.
	* po/zh_CN.po: Likewise.

gold/
	* po/es.po: Update from translationproject.org/latest/gold/.
	* po/fi.po: Likewise.
	* po/fr.po: Likewise.
	* po/id.po: Likewise.
	* po/it.po: Likewise.
	* po/vi.po: Likewise.
	* po/zh_CN.po: Likewise.
	* po/ja.po: New file from translationproject.org.
	* po/sv.po: Likewise.
	* po/uk.po: Likewise.

gprof/
	* po/bg.po: Update from translationproject.org/latest/gprof/.
	* po/da.po: Likewise.
	* po/de.po: Likewise.
	* po/eo.po: Likewise.
	* po/es.po: Likewise.
	* po/fi.po: Likewise.
	* po/fr.po: Likewise.
	* po/ga.po: Likewise.
	* po/hu.po: Likewise.
	* po/id.po: Likewise.
	* po/it.po: Likewise.
	* po/ja.po: Likewise.
	* po/ms.po: Likewise.
	* po/nl.po: Likewise.
	* po/pt_BR.po: Likewise.
	* po/ro.po: Likewise.
	* po/ru.po: Likewise.
	* po/sr.po: Likewise.
	* po/sv.po: Likewise.
	* po/tr.po: Likewise.
	* po/uk.po: Likewise.
	* po/vi.po: Likewise.

ld/
	* po/bg.po: Update from translationproject.org/latest/ld/.
	* po/da.po: Likewise.
	* po/es.po: Likewise.
	* po/fi.po: Likewise.
	* po/fr.po: Likewise.
	* po/id.po: Likewise.
	* po/it.po: Likewise.
	* po/ja.po: Likewise.
	* po/tr.po: Likewise.
	* po/uk.po: Likewise.
	* po/vi.po: Likewise.
	* po/zh_CN.po: Likewise.
	* po/zh_TW.po: Likewise.
	* po/de.po: New file from translationproject.org.
	* po/ru.po: Likewise.
	* configure.ac (ALL_LINGUAS): Add de, ru.  Sort.
	* configure: Regenerate.

opcodes/
	* po/da.po: Update from translationproject.org/latest/opcodes/.
	* po/de.po: Likewise.
	* po/es.po: Likewise.
	* po/fi.po: Likewise.
	* po/fr.po: Likewise.
	* po/id.po: Likewise.
	* po/it.po: Likewise.
	* po/nl.po: Likewise.
	* po/pt_BR.po: Likewise.
	* po/ro.po: Likewise.
	* po/sv.po: Likewise.
	* po/tr.po: Likewise.
	* po/uk.po: Likewise.
	* po/vi.po: Likewise.
	* po/zh_CN.po: Likewise.
2017-07-12 23:08:59 +09:30
Han Shen df2f63a6a0 Fixing for PR gold/21491 - Errata workaround can produce broken images.
The problem is caused by the fact that gold is relocating the stubs
for an entire output section when it processes the relocations for a
particular input section that happened to be designated as the stub
table "owner". The Relocate_task for that input section may or may not
run before the Relocate_task for another input section that contains
the code that needs the erratum fix, but doesn't "own" the stub
table. If it runs before (or might even race with) that other task, it
ends up with a copy of the unrelocated original instruction.

In other words - when calling fix_errata() from
do_relocate_sections(), gold is going through the list of errata stubs
that are associated only with that object. This routine updates the
stored original instruction and replaces it in the output view with a
branch to the stub. Later, as gold is going through the object file's
input sections, it then checks for stub tables "owned" by each input
section, and writes out all the stubs from that stub table, regardless
of what object file each stub is associated with.

Fixed by relocating the erratum stub only after the corresponding
errata spot is fixed. That is to have fix_errata() call
Stub_table::relocate_erratum_stub() for each stub.

gold/ChangeLog
2017-07-06  Han Shen  <shenhan@google.com>

	PR gold/21491

	* aarch64.cc (Erratum_stub::invalidate_erratum_stub): New method.
	(Erratum_stub::is_invalidated_erratum_stub): New method.
	(Stub_table::relocate_reloc_stub): Renamed from "relocate_stub".
	(Stub_table::relocate_reloc_stubs): Renamed from "relocate_stubs".
	(Stub_table::relocate_erratum_stub): New method.
	(AArch64_relobj::fix_errata_and_relocate_erratum_stubs): Renamed from
	"fix_errata".
	(Target_aarch64::relocate_reloc_stub): Renamed from "relocate_stub".
2017-07-11 11:17:56 -07:00
Alan Modra 7ee7ff7015 [GOLD] PowerPC64 localentry:0 plt call optimization
elfcpp/
	* elfcpp.h (DT_PPC64_OPT): Define.
	* powerpc.h (PPC64_OPT_TLS, PPC64_OPT_MULTI_TOC,
	PPC64_OPT_LOCALENTRY): Define.
gold/
	* options.h (General_options): Add plt_localentry.
	* powerpc.cc (Target_powerpc::st_other): New function.
	(Target_powerpc::plt_localentry0_, plt_localentry0_init_,
	has_localentry0_): New vars.
	(Target_powerpc::plt_localentry0, set_has_localentry0,
	is_elfv2_localentry0): New functions.
	(Target_powerpc::Branch_info::mark_pltcall): Don't set tocsave or
	return true for localentry:0 calls.
	(Stub_table::Plt_stub_ent::localentry0_): New var.
	(Stub_table::add_plt_call_entry): Set localentry0_ and has_localentry0_.
	Don't set r2save_ for localentry:0 calls.
	(Output_data_glink::do_write): Save r2 in __glink_PLTresolve for elfv2.
	(Target_powerpc::scan_relocs): Default plt_localentry0_.
	(Target_powerpc::do_finalize_sections): Set DT_PPC64_OPT.
	(Target_powerpc::Relocate::relocate): Don't require nop following
	calls for localentry:0 plt calls, and don't change nop.
2017-06-23 20:39:43 +09:30
Alan Modra 7e57d19e48 [GOLD] PowerPC64 tocsave
This adds support to gold for the tocsave relocs already supported by
ld.bfd.  R_PPC64_TOCSAVE relocs are part of a scheme to move r2 saves
to the prologue of a function rather than in each plt call stub.  We
don't want a compiler to always emit the r2 save, as this would be
wasted if the calls turned out to be local.  See the tocsave*.s in
ld/testsuite/ld-powerpc/.

	* powerpc.cc (Target_powerpc::tocsave_loc_): New var.
	(Target_powerpc::mark_pltcall, add_tocsave, tocsave_loc): New functions.
	(Target_powerpc::Branch_info::tocsave_): New var.
	(Target_powerpc::Branch_info::mark_pltcall): New function.
	(Target_powerpc::Branch_info::make_stub): Pass tocsave_ to
	add_plt_call_entry.
	(Stub_table::Plt_stub_ent): Make public.  Add r2save_.
	(Stub_table::add_plt_call_entry): Add bool tocsave_ param.  Set
	r2save_.
	(Stub_table::find_plt_call_entry): Return Plt_stub_ent*.  Adjust
	use throughout.
	(Stub_table::do_write): Conditionally output r2 save in plt stubs.
	(Target_powerpc::Scan::local): Handle R_PPC64_TOCSAVE.
	(Target_powerpc::Scan::global): Likewise.
	(Target_powerpc::Relocate::relocate): Skip r2 save in plt call stub
	with tocsave reloc.  Replace header tocsave nop with r2 save.
	* symtab.h (struct Symbol_location_hash): Make public.
2017-06-23 20:37:34 +09:30
Alan Modra bdab445c82 [GOLD] PowerPC move plt indx_ out of unordered map key
I was lazy when adding indx_ to Plt_stub_ent.  The field isn't part of
the key, so ought to be part of the mapped type.  Make it so.

	* powerpc.cc (Plt_stub_key): Rename from Plt_stub_ent.  Remove indx_.
	(Plt_stub_key_hash): Rename from Plt_stub_ent_hash.
	(struct Plt_stub_ent): New.
	(Plt_stub_entries): Map from Plt_stub_key to Plt_stub_ent.  Adjust
	use throughout file.
2017-06-21 22:45:15 +09:30
Eric Christopher 69431babfb 2017-06-20 Eric Christopher <echristo@gmail.com>
* aarch64.cc (scan_reloc_for_stub): Use plt_address_for_global to
        calculate the symbol value.
        (scan_reloc_section_for_stubs): Allow stubs to be created for
        section symbols.
        (maybe_apply_stub): Handle creating stubs for weak symbols to
        match the code in scan_reloc_for_stub.
2017-06-20 16:18:58 -07:00
James Clarke 94de2a2c57 [GOLD] Avoid duplicate PLT stub symbols on ppc32
If two objects are compiled with -fPIC or -fPIE and call the same
function, two different PLT entries are created, one for each object,
but the same stub symbol name is used for both.

	* powerpc.cc (Stub_table::define_stub_syms): Always include object's
	uniq_ value.
2017-06-20 18:01:52 +09:30
Eric Christopher c092b67bf0 2017-06-15 Eric Christopher <echristo@gmail.com>
* aarch64.cc: Fix a few	typos and grammar-os.
2017-06-15 18:49:41 -07:00
Jiong Wang 37de058ab2 [GOLD] Don't install branch-to-stub for TLS relaxed ERRATUM 843419 sequences on AArch64
TLS relaxation may change erratum 843419 sequences that those offending ADRP
instructions actually transformed into other instructions in which case there
is erratum 843419 risk anymore that we should avoid installing unnecessary
branch-to-stub.

gold/
        * aarch64.cc (Insn_utilities::is_mrs_tpidr_el0): New method.
        (AArch64_relobj<size, big_endian>::try_fix_erratum_843419_optimized):
        Return ture for some TLS relaxed sequences.
2017-06-15 11:24:10 +01:00
Eric Christopher 81b6fe3bf9 2017-06-07 Eric Christopher <echristo@gmail.com>
* aarch64.cc (maybe_apply_stub): Add debug logging for looking
	up stubs to undefined symbols and early return rather than
	fail to look them up.
	(scan_reloc_for_stub): Add debug logging for no stub creation
	for undefined symbols.
2017-06-07 17:52:37 -07:00
Alan Modra 590b87ffa3 PR21503, Gold doesn't create linker stub symbols on ppc64
PR 21503
	* options.h: Add --emit-stub-syms option.
	* powerpc.cc (object_id): New.
	(Powerpc_relobj): Add uniq_ and accessor.  Sort variables for
	better packing.
	(Powerpc_dynobj): Sort variables for better packing.
	(Target_powerpc::define_local): New function.
	(Target_powerpc::group_sections): Pass stub table size to
	Stub_table constructor.
	(Target_powerpc::do_relax): Define stub and glink symbols.
	(Stub_table): Add uniq_ variable, and id param to constructor.
	(Stub_table::Plt_stub_ent): Add indx_ variable.
	(Stub_table::Branch_stub_entries): Move typedef earlier.
	(Stub_table::branch_stub_size): Replace "to" parameter with a
	Branch_stub_entries iterator.
	(Stub_table::add_long_branch_entry): Adjust to suit.
	(Stub_table::add_plt_call_entry): Set indx_.
	(Stub_table::define_stub_syms): New function.
2017-05-23 21:49:33 +09:30
Eric Christopher 0c38a3d194 2017-05-15 Eric Christopher <echristo@gmail.com>
* layout.cc (Layout::segment_precedes): Add a case for testing
        pointer equality when determining which segment precedes
        another.
2017-05-15 15:59:52 -07:00
James Clarke 67f46fed80 Fix assertion failure relaxing TLS for position-independent executables.
gold/
	PR gold/21444
	* gold.cc (Target_sparc::Relocate::relocate_tls): Local
	variables are final for position-independent executables. This
	has to be consistent with Target_sparc::Scan::local otherwise
	they will disagree as to whether local-exec is used.
2017-05-13 08:01:15 -07:00
Igor Kudrin 6bf56e7482 Fix misplacement of a relaxed section on AArch64.
gold/ChangeLog
	PR gold/21430
	* aarch64.cc
	(AArch64_relobj::convert_input_section_to_relaxed_section):
	Set the section offset to -1ULL.
	(Target_aarch64::relocate_section): Adjust the view in case
	of a relaxed input section.
	* testsuite/Makefile.am (pr21430): New test.
	* testsuite/Makefile.in: Regenerate
	* testsuite/pr21430.s: New test source file.
	* testsuite/pr21430.sh: New test script.
2017-05-12 15:24:32 -07:00
Alan Modra a61d92b7bd [GOLD] testsuite/plugin_section_order.c fix
* testsuite/plugin_section_order.c (onload): Add missing break.
2017-04-27 11:54:29 +09:30
Vladimir Radosavljevic aab2c17756 Mips: Fix TLS LDM GOT entry.
gold/
	* mips.cc (Mips_got_entry::hash()): Shift addend to reduce
	possibility of collisions.
	(Mips_got_entry::equals): Fix case for GOT_TLS_LDM
	entries.
2017-03-15 16:51:35 -07:00
Vladimir Radosavljevic 4d78db49e6 Mips: Omit empty objects for merging processor-specific data.
gold/
	* mips.cc (Mips_relobj::merge_processor_specific_data_): New data
	member.
	(Mips_relobj::merge_processor_specific_data): New method.
	(Mips_relobj::do_read_symbols): Set merge_processor_specific_data_
	to false, only if the input file is a binary or if object has no
	contents except the section name string table and an empty symbol
	table with the undefined symbol.
	(Target_mips::do_finalize_sections): Refactor.  Skip empty object files
	for merging processor-specific data.
2017-03-15 16:51:35 -07:00
Vladimir Radosavljevic 152c92b261 Mips: Add support for resolving multiple consecutive relocations.
gold/
	* mips.cc (Target_mips::Relocate::calculated_value_): New data
	member.
	(Target_mips::Relocate::calculate_only_): Likewise.
	(Target_mips::Relocate::relocate): Handle multiple consecutive
	relocations with the same offset.
2017-03-15 16:51:35 -07:00
Vladimir Radosavljevic 1e1247c89c Remove redundant checks for relocatable link (MIPS).
gold/
	* mips.cc (Target_mips::Relocate::relocate): Remove redundant
	checks for relocatable link.
	(Mips_relocate_functions::reljalr): Likewise.
2017-03-15 16:51:35 -07:00
Vladimir Radosavljevic 1728969e93 Add support for .MIPS.options section.
gold/
        * mips.cc (class Mips_output_section_options): New class.
        (Target_mips::do_make_output_section): New method.
2017-03-15 16:51:35 -07:00
Vladimir Radosavljevic c3847462f8 Improve relocation overflow errors on MIPS.
gold/
        * mips.cc (Mips_relocate_functions::rel26): Don't print relocation
        overflow error message.
        (Target_mips::relocate_special_relocatable): Improve relocation
        overflow error message.
        (Target_mips::Relocate::relocate): Likewise.
2017-03-15 16:51:35 -07:00
Vladimir Radosavljevic 453018bf44 Correct the definition of _gp and _GLOBAL_OFFSET_TABLE_ symbols for MIPS.
gold/
        * mips.cc (symbol_refs_local): Return false if a symbol
        is from a dynamic object.
        (Target_mips::got_section): Make _GLOBAL_OFFSET_TABLE_ STV_HIDDEN.
        (Target_mips::set_gp): Refactor.  Make _gp STT_NOTYPE and
        STB_LOCAL.
        (Target_mips::do_finalize_sections): Set _gp after all the checks
        for creating .got are done.
        (Target_mips::Scan::global): Remove unused code.
2017-03-15 16:51:35 -07:00
Alan Modra 6528b6eba8 PowerPC ld segfault on script discarding dynamic sections
bfd/
	* elf64-ppc.c (ppc64_elf_finish_dynamic_sections): Don't segfault
	on .got or .plt output section being discarded by script.
	* elf32-ppc.c (ppc_elf_finish_dynamic_sections): Likewise.  Move
	vxworks splt temp.
gold/
	* powerpc.cc (Target_powerpc::make_iplt_section): Check that
	output_section exists before attempting add_output_section_data.
	(Target_powerpc::make_brlt_section): Likewise.
2017-02-22 08:44:41 +10:30
Vladimir Radosavljevic f902956974 Don't give an internal error for unsupported relocations.
gold/
	* mips.cc (Target_mips::Scan::get_reference_flags): Remove
	gold_unreachable from default case.
2017-02-15 00:55:36 -08:00
Vladimir Radosavljevic e242ece1e8 Add support for R_MIPS_HIGHER/HIGHEST, R_MICROMIPS_HIGHER/HIGHEST relocations.
2017-02-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

        PR gold/21111
        * mips.cc (Mips_relocate_functions::relhigher): New method.
        (Mips_relocate_functions::relhighest): Likewise.
        (mips_get_size_for_reloc): Add support for relocs: R_MIPS_HIGHER and
        R_MIPS_HIGHEST.
        (Target_mips::Scan::local): Add support for relocs: R_MIPS_HIGHER,
        R_MIPS_HIGHEST, R_MICROMIPS_HIGHER and R_MICROMIPS_HIGHEST.
        (Target_mips::Scan::global): Likewise.
        (Target_mips::Scan::get_reference_flags): Likewise.
        (Target_mips::Relocate::relocate): Call static methods for resolving
        HIGHER and HIGHEST relocations.
2017-02-15 00:55:36 -08:00
Rahul Chaudhry 4aebb6312e Improved support for --icf=safe when used with -pie.
gold/
	* x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
	Return true even when building pie binaries.
	(Target_x86_64::possible_function_pointer_reloc): Check opcode
	for R_X86_64_PC32 relocations.
	(Target_x86_64::local_reloc_may_be_function_pointer): Pass
	extra arguments to local_reloc_may_be_function_pointer.
	(Target_x86_64::global_reloc_may_be_function_pointer): Likewise.
	* gc.h (gc_process_relocs): Add check for STT_FUNC.
	* testsuite/Makefile.am (icf_safe_pie_test): New test case.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/icf_safe_pie_test.sh: New shell script.
2017-02-15 00:37:10 -08:00
Alan Modra e666304ec6 [GOLD] PowerPC64 TOC indirect to TOC relative segfault
* powerpc.cc (Powerpc_relobj::make_toc_relative): Don't crash
	when no .toc section exists.
2017-02-03 20:06:53 +10:30
Cary Coutant ed35cc4a1c Don't allow mov-to-lea optimization for __ehdr_start.
gold/
	PR gold/21090
	* x86_64.cc (Target_x86_64::can_convert_mov_to_lea): Add check
	for predefined symbol.
	(Target_x86_64::Relocate::relocate): Fix formatting.
2017-01-31 16:33:58 -08:00
Rahul Chaudhry 741bcbe94d Add -e to test scripts where necessary.
gold/
        * testsuite/icf_safe_so_test.sh: Use "set -e".
        * testsuite/icf_safe_test.sh: Likewise.
        * testsuite/icf_test.sh: Likewise.
2017-01-23 17:34:42 -08:00
Vladimir Radosavljevic 04bc2a2854 Make the sh_info field of .rel.plt point to .plt (MIPS).
gold/
	* mips.cc (Mips_output_data_plt::rel_plt): Remove const from return
	type.
	(Target_mips::make_plt_entry): Make the sh_info field of .rel.plt
	point to .plt.
2017-01-23 17:18:00 -08:00
Vladimir Radosavljevic c1f59f8ff9 Fix MIPS GOT when global symbols are forced to local visibility.
gold/
	PR gold/21054
	* mips.cc (Mips_got_info::record_global_got_symbol): Don't add symbol
	to the dynamic symbol table if it is forced to local visibility.
	(Target_mips::do_finalize_sections): Don't add __RLD_MAP symbol to the
	dynamic symbol table if it is forced to local visibility.
2017-01-23 17:12:10 -08:00
Nick Clifton a24df30571 Fix problem in aarch64 gold sources uncovered by Coverty - using sizeof on a pointer instead of an array.
* aarch64.cc (Stub_template_repertoire): Change ST_E_835769_INSNS
        from a pointer to an array.
2017-01-20 10:21:17 +00:00
H.J. Lu 857e829e3a Gold: Fix build with GCC 4.2
PR gold/21040
	* powerpc.cc (Powerpc_relobj<size, big_endian>::make_toc_relative):
	Cast 0x80008000 to uint64_t.
2017-01-13 07:47:52 -08:00
Cary Coutant aca5eec611 Fix incorrect byte counts.
gold/
	* object.cc (Sized_relobj_file): Fix byte counts for calls to memmem.
2017-01-12 11:51:40 -08:00
Cary Coutant 6624f3a142 Fix more compile errors with GCC 4.2.
gold/
	PR gold/21040
	* x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
	Remove unnecessary 'typename' keyword.
	(Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
	(Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
	(Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
	(Output_data_plt_x86_64_bnd::do_write): Likewise.
2017-01-11 13:42:24 -08:00
Cary Coutant 976e204b36 Fix compile errors with GCC 4.2.
gold/
	PR gold/21040
	* x86_64.cc (Output_data_plt_x86_64_bnd::do_fill_first_plt_entry):
	Remove unnecessary 'typename' keyword.
	(Output_data_plt_x86_64_bnd::do_fill_plt_entry): Likewise.
	(Output_data_plt_x86_64_bnd::do_fill_tlsdesc_entry): Likewise.
	(Output_data_plt_x86_64_bnd::fill_aplt_entry): Likewise.
	* testsuite/copy_test_relro_1.cc (p, b, c, q): Add separate extern
	declarations.
2017-01-11 11:47:27 -08:00
Cary Coutant 1fa5f68bf3 Fix test cases to work for i386.
gold/
	PR gold/21039
	* testsuite/script_test_13.sh: Adjust patterns to work for i386.
	* testsuite/script_test_15a.sh: Likewise.
	* testsuite/script_test_15b.sh: Likewise.
	* testsuite/script_test_15c.sh: Likewise.
2017-01-11 11:26:26 -08:00
Alan Modra 5edad15d7c [GOLD] PowerPC64 TOC indirect to TOC relative code editing
Doesn't yet trim off the unused TOC entries.

	* powerpc.cc (class Powerpc_copy_relocs): New.
	(Powerpc_copy_relocs::emit): New function.
	(Powerpc_relobj::relatoc_, toc_, no_toc_opt_): New variables.
	(Powerpc_relobj::toc_shndx, set_no_toc_opt, no_toc_opt): New inlines.
	(Powerpc_relobj::do_relocate_sections): New function.
	(Powerpc_relobj::make_toc_relative): Likewise.
	(Powerpc_relobj::do_find_special_sections): Stash away .rela.toc
	and .toc too.
	(ok_lo_toc_insn): Move earlier, and handle more insns.
	(Target_powerpc::Scan::local): If optimizing toc accesses, set
	no_toc_opt for entries we can't edit.  Check insn validity.
	Emit "toc optimization is not supported" warning, downgraded
	from error.
	(Target_powerpc::Scan::global): Likewise.
	(Target_powerpc::Relocate::relocate): Edit TOC indirect code
	to TOC relative.  Don't emit "toc optimization is not supported"
	error here.
2017-01-11 07:41:53 +10:30
Cary Coutant 98461510d3 Refactor Sized_relobj_file::do_relocate_sections.
gold/
	* aarch64.cc (AArch64_relobj::do_relocate_sections): Call
	Sized_relobj_file::relocate_section_range().
	* arm.cc (Arm_relobj::do_relocate_sections): Likewise.
	* object.h (Sized_relobj_file::relocate_section_range): New method.
	* reloc.cc (Sized_relobj_file::do_relocate_sections): Move
	implementation...
	(Sized_relobj_file::relocate_section_range): ...to new method.
2017-01-10 07:46:43 -08:00
Alan Modra f7fd19e2b8 [GOLD] Fix tests for powerpc64
PowerPC64 defines .TOC. rather than _GLOBAL_OFFSET_TABLE_, and
what's more, doesn't define it at all unless referenced.  For ELFv1
ABI the symbol isn't normally referenced, so modify the test to accept
.TOC. as a variant of _GLOBAL_OFFSET_TABLE_ and 0 or 1 occurrences.

copy_test_relro as written doesn't need copy relocs on PowerPC64.
PowerPC64 is always PIC.  So, modify copy_test_relro to test that the
existing vars are in fact read-only directly by deliberately causing a
sigsegv, and add another couple of vars that do cause copy relocs even
when PIC.

	* testsuite/ver_test_8.sh: Accept .TOC. in lieu of
	_GLOBAL_OFFSET_TABLE_.  Allow zero count.
	* testsuite/copy_test_relro_1.cc (c, q): New vars.
	* testsuite/copy_test_relro.cc: Rewrite to test read-only
	status of variables directly.  Reference new vars in
	read-only data.
2017-01-10 11:50:07 +10:30
Alan Modra f159cdb611 [GOLD] Add --secure-plt option for ppc32
Added just to accept, and ignore.  gcc since 2015-10-21, when
configured with --enable-secureplt passes this option to the linker.
As powerpc gold cannot link --bss-plt code successfully, gold needs to
accept the option or the gcc specs file needs to be changed.

The patch also make gold detect --bss-plt code and error out rather
than producing a binary that crashes.

	* options.h: Add --secure-plt option.
	* powerpc.cc (Target_powerpc::Scan::local): Detect and error
	on -fPIC -mbss-plt code.
	(Target_powerpc::Scan::global): Likewise.
2017-01-10 11:50:07 +10:30
Alan Modra 3254d32c4b [GOLD] Set sh_info of .rela.plt for powerpc
* powerpc.cc (Target_powerpc::make_plt_section): Point sh_info of
	".rela.plt" at ".plt".
2017-01-09 12:10:56 +10:30
Alan Modra 0e123f69da [GOLD] powerpc.cc tidies
Plus some paranoia in symval_for_branch.  We shouldn't get there with
dynamic symbols, but if we ever did the static_cast to Powerpc_relobj
would be wrong.

	* powerpc.cc: Use shorter equivalent elfcpp typedef for
	Reltype and reloc_size throughout.
	(Target_powerpc::symval_for_branch): Exclude dynamic symbols.
	(Target_powerpc::Scan::local): Use local var r_sym.
	(Target_powerpc::Scan::global: Likewise.
	(Target_powerpc::Relocate::relocate): Delete shadowing r_sym.
2017-01-07 22:04:51 +10:30
Alan Modra 2571583aed Update year range in copyright notice of all files. 2017-01-02 14:08:56 +10:30
Alan Modra 5c1ad6b5bb ChangeLog rotation 2017-01-02 13:55:05 +10:30
Andreas Schwab 913e12d44d Fix comment typo
* copy-relocs.h: Fix comment typo.
2016-12-28 18:31:07 +01:00
Cary Coutant 265d97f743 Add explicit instantiations for build_compressed_section_map().
gold/
	PR gold/20996
	* object.cc (build_compressed_section_map): Add explicit instantiations.
2016-12-28 08:29:57 -08:00
Cary Coutant 6142c999f2 Fix last ChangeLog entry.
* copy-relocs.cc (Copy_relocs::make_copy_reloc): Use .data.rel.ro for
	read-only data when linking with -z relro.
2016-12-28 08:29:56 -08:00