2017-12-15  Alan Modra  <amodra@gmail.com>

	PR 22602
	* powerpc.cc (Target_powerpc::Branch_info::mark_pltcall): Resolve
	forwards before replacing __tls_get_addr.
	(Target_powerpc::Branch_info::make_stub): Likewise.

2017-12-11  Stephen Crane  <sjc@immunant.com>

	* plugin.cc (Plugin::load): Include hooks for register_new_input
	in transfer vector.
	(Plugin::new_input): New function.
	(register_new_input): New function.
	(Plugin_manager::claim_file): Call Plugin::new_input if in
	replacement phase.
	* plugin.h (Plugin::set_new_input_handler): New function.
	* testsuite/plugin_new_section_layout.c: New plugin to test
	new_input plugin API.
	* testsuite/plugin_final_layout.sh: Add new input test.
	* testsuite/Makefile.am (plugin_layout_new_file): New test case.
	* testsuite/Makefile.in: Regenerate.

2017-12-02  Vladimir Kondratyev  <vladimir@kondratyev.su>
	    Cary Coutant  <ccoutant@gmail.com>

	PR gold/22540
	* output.cc (gold_fallocate): Trivial return for len == 0.
	Add fallback options when posix_fallocate and fallocate return
	not-supported errors.

2017-12-01  Cary Coutant  <ccoutant@gmail.com>

	PR gold/21090
	* incremental.cc (Sized_relobj_incr::do_relocate): Fix comment.
	* options.cc (General_options::finalize): Disallow -pie with
	incremental linking.
	* x86_64.cc (Target_x86_64::Scan::local): Don't do mov-to-lea
	or callq-to-direct optimizations for incremental links.
	(Target_x86_64::Scan::global): Likewise.
	(Target_x86_64::Relocate::relocate): Likewise.
	* testsuite/Makefile.am (incremental_test): Force -no-pie.
	(incremental_test_2): Likewise.
	(incremental_test_3): Likewise.
	(incremental_test_4): Likewise.
	(incremental_test_5): Likewise.
	(incremental_test_6): Likewise.
	(incremental_copy_test): Likewise.
	(incremental_common_test_1): Likewise.
	(incremental_comdat_test_1):  Likewise.
	* testsuite/Makefile.in: Regenerate.

2017-12-01  Cary Coutant  <ccoutant@gmail.com>

	PR gold/21841
	* testsuite/debug_msg.sh: Adjust expected line numbers.
	* testsuite/odr_violation2.cc (DummyFunction): New function.

2017-12-01  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22309
	* testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): Compile with
	no EH information.
	(two_file_test_1_ndebug.o): Likewise.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/two_file_test_1.cc: Touch to force recompilation with new
	flags.
	* testsuite/two_file_test_1_v1.cc: Likewise.

2017-12-01  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22042
	* options.h (-fuse-ld): Use NULL instead of empty string.

2017-12-01  Benjamin Peterson  <bp@benjamin.pe>

	PR gold/22406
	* gold.cc (queue_initial_tasks) Check for number of real input files.
	* options.cc (Command_line::process) Check for unterminated --start-lib
	options.
	* testsuite/Makefile.am: Add new test script.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/check_empty_command_lines.sh: New test script.

2017-11-17  Stephen Crane  <sjc@immunant.com>

	PR gold/22448
	* symtab.cc (Symbol_table::add_from_object): Only rescan for
	undefined symbols in regular, not dynamic, objects.

2017-11-30  Peter Smith  <peter.smith@linaro.org>

	PR gold/20765
	* aarch64.cc (Aarch64_relobj::update_erratum_address): New method.
	(AArch64_relobj::scan_errata): Update addresses in stub table after
	relaxation pass.

2017-11-30  Peter Smith  <peter.smith@linaro.org>
	    Cary Coutant  <ccoutant@gmail.com>

	PR gold/20765
	* aarch64.cc (Erratum_stub::invalidate_erratum_stub): Use erratum_insn_
	instead of relobj_ to invalidate the stub.
	(Erratum_stub::is_invalidated_erratum_stub): Likewise.

2017-11-30  Peter Smith  <peter.smith@linaro.org>

	PR gold/22233
	* aarch64.cc (AArch64_relobj::fix_errata_and_relocate_erratum_stubs):
	Fix calculation of stub address.

2017-11-29  Stefan Stroe  <stroestefan@gmail.com>

	* po/Make-in (datadir): Define as @datadir@.
	(localedir): Define as @localedir@.
	(gnulocaledir, gettextsrcdir): Use @datarootdir@.

2017-11-28  Cary Coutant  <ccoutant@gmail.com>

	* resolve.cc (Symbol_table::resolve): Allow multiply-defined absolute
	symbols when they have the same value.

2017-11-28  Cary Coutant  <ccoutant@gmail.com>

	* object.h (class Sized_relobj_file): Remove discarded_eh_frame_shndx_.
	* object.cc (Sized_relobj_file::Sized_relobj_file): Likewise.
	(Sized_relobj_file::layout_eh_frame_section): Likewise.
	(Sized_relobj_file::do_count_local_symbols): Check for optimized
	.eh_frame section by other means.
	(Sized_relobj_file::compute_final_local_value_internal): Likewise.

2017-11-28  H.J. Lu  <hongjiu.lu@intel.com>

	* testsuite/pr22266_a.c: Add a newline at end of file.

2017-11-27  Cary Coutant  <ccoutant@gmail.com>

	PR gold/19291
	PR gold/22266
	* object.cc (Sized_relobj_file::compute_final_local_value_internal):
	Revert changes from 2017-11-08 patch.  Adjust symbol value in
	relocatable links for non-section symbols.
	(Sized_relobj_file::compute_final_local_value): Revert changes from
	2017-11-08 patch.
	(Sized_relobj_file::do_finalize_local_symbols): Likewise.
	(Sized_relobj_file::write_local_symbols): Revert changes from
	2015-11-25 patch.
	* object.h (Sized_relobj_file::compute_final_local_value_internal):
	Revert changes from 2017-11-08 patch.
	* powerpc.cc (Target_powerpc::relocate_relocs): Adjust addend for
	relocatable links.
	* target-reloc.h (relocate_relocs): Adjust addend for relocatable links.
	* testsuite/pr22266_a.c (hello): New function.
	* testsuite/pr22266_main.c (main): Add test for merge sections.
	* testsuite/pr22266_script.t: Add rule for .rodata.

2017-11-19  Ian Lance Taylor  <iant@google.com>
	    Cary Coutant  <ccoutant@gmail.com>

	* dwarf_reader.h (class Dwarf_info_reader): Add ref_addr_size
	method.
	* dwarf_reader.cc (Dwarf_die::read_attributes): Use ref_addr_size
	for DW_FORM_ref_addr_size.
	(Dwarf_die::skip_attributes): Likewise.

2017-11-08  H.J. Lu  <hongjiu.lu@intel.com>

	PR gold/22291
	* layout.cc (Layout::define_section_symbols): Use STV_PROTECTED
	for __start and __stop symbols.
	* symtab.cc (Symbol_table::define_special_symbol): Add an
	argument, visibility.  Ignore definition and reference from
	a dynamic object, depending on visibility.
	(Symbol_table::do_define_in_output_data): Pass visibility to
	define_special_symbol.
	(Symbol_table::do_define_in_output_segment): Likewise.
	(Symbol_table::do_define_as_constant): Likewise.
	(Symbol_table::add_undefined_symbol_from_command_line): Pass
	STV_DEFAULT to define_special_symbol.
	* symtab.h (Symbol_table::define_special_symbol): Add an
	argument, visibility.

2017-11-08  James Clarke  <jrtc27@jrtc27.com>

	PR gold/22266
	* object.cc (Sized_relobj_file::compute_final_local_value_internal):
	Drop relocatable parameter and stop adjusting output value based on
	it.
	(Sized_relobj_file::compute_final_local_value): Stop passing
	relocatable to compute_final_local_value_internal.
	(Sized_relobj_file::do_finalize_local_symbols): Ditto.
	* object.h (Sized_relobj_file::compute_final_local_value_internal):
	Drop relocatable parameter.

2017-11-08  Kyle Butt  <iteratee@google.com>

	* object.cc (do_find_special_sections): Fix a thinko with memmem return
	values and check for != NULL rather than == 0.

2017-11-07  Alan Modra  <amodra@gmail.com>

	* system.h (textdomain, bindtextdomain): Use safer "do nothing".
	(ngettext, dngettext, dcngettext): Define when !ENABLE_NLS.

2017-10-25  Alan Modra  <amodra@gmail.com>

	* symtab.cc (Symbol_table::add_from_relobj): Match "__gnu_lto_slim"
	optionally prefixed with "_".

2017-10-20  Sriraman Tallam  <tmsriram@google.com>

	* options.h (-z,text_unlikely_segment): New option.
	* layout.cc (Layout::layout): Create new output section
	for .text.unlikely sections with the new option.
	(Layout::segment_precedes): Check for the new option
	when segment flags match.
	* testsuite/text_unlikely_segment.cc: New test source.
	* testsuite/text_unlikely_segment.sh: New test script.
	* testsuite/Makefile.am (text_unlikely_segment): New test.
	* testsuite/Makefile.in: Regenerate.

2017-10-19  Umesh Kalappa  <ukalappa@cisco.com>

	* arm.cc (Stub::do_fixed_endian_write):Far call stubs support for arm
	in the be8 mode.
	* testsuite/Makefile.am: New test cases.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/arm_farcall_arm_arm_be8.sh: New script for arm to arm far
	call stubs.
	* testsuite/arm_farcall_thumb_thumb_be8.sh: New script for thumb to
	thumb far call stubs.

2017-10-18  Kyle Butt  <iteratee@google.com>
	    Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc::Scan::local): Correct dst_off
	calculation for TOC16 relocs.
	(Target_powerpc::Scan::global): Likewise.

2017-09-26  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22213
	* sparc.cc (Target_sparc): Fix incorrect register mask.

2017-09-22  Jim Wilson  <jim.wilson@linaro.org>

	* aarch64.cc (Target_aarch64::aarch64_info): Set
	is_default_stack_executable to false.

2017-09-22  Alan Modra  <amodra@gmail.com>

	* resolve.cc (clone): Fix got_offset_list test.

2017-09-22  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc<64,*>::powerpc_info): Set
	is_default_stack_executable false.

2017-09-20  Teresa Johnson  <tejohnson@google.com>

	* plugin.cc (is_visible_from_outside): Check for export dynamic symbol
	option and list.
	* testsuite/Makefile.am (plugin_test_12): New test.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/export_dynamic_plugin.cc: New test source.
	* testsuite/plugin_test_12.sh: New test script.

2017-09-20  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc::Branch_info::make_stub): Put
	stubs for ppc32 non-branch relocs in first stub table.
	(Target_powerpc::Relocate::relocate): Resolve similarly.

2017-09-19  Alan Modra  <amodra@gmail.com>

	* options.h (stub-group-multi): Default to true.  Add
	--no-stub-group-multi.

2017-08-30  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc::Relocate::relocate): Nop addis on
	TPREL16_HA, and convert insn on TPREL16_LO and TPREL16_LO_DS
	relocs to use r2/r13 when addis would add zero.

2017-08-29  Alan Modra  <amodra@gmail.com>

	* options.h (tls_get_addr_optimize): New option.
	* symtab.h (Symbol::clear_in_reg, clone): New functions.
	(Sized_symbol::clone): New function.
	(Symbol_table::clone): New function.
	* resolve.cc (Symbol::clone, Sized_symbol::clone): New functions.
	* powerpc.cc (Target_powerpc::has_tls_get_addr_opt_,
	tls_get_addr_, tls_get_addr_opt_): New vars.
	(Target_powerpc::tls_get_addr_opt, tls_get_addr,
	is_tls_get_addr_opt, replace_tls_get_addr,
	set_has_tls_get_addr_opt, stk_linker): New functions.
	(Target_powerpc::Track_tls::maybe_skip_tls_get_addr_call): Add
	target param.  Update callers.  Compare symbols rather than names.
	(Target_powerpc::do_define_standard_symbols): Init tls_get_addr_
	and tls_get_addr_opt_.
	(Target_powerpc::Branch_info::mark_pltcall): Translate tls_get_addr
	sym to tls_get_addr_opt.
	(Target_powerpc::Branch_info::make_stub): Likewise.
	(Stub_table::define_stub_syms): Likewise.
	(Target_powerpc::Scan::global): Likewise.
	(Target_powerpc::Relocate::relocate): Likewise.
	(add_3_12_2, add_3_12_13, bctrl, beqlr, cmpdi_11_0, cmpwi_11_0,
	ld_11_1, ld_11_3, ld_12_3, lwz_11_3, lwz_12_3, mr_0_3, mr_3_0,
	mtlr_11, std_11_1): New constants.
	(Stub_table::eh_frame_added_): Delete.
	(Stub_table::tls_get_addr_opt_bctrl_, plt_fde_len_, plt_fde_): New vars.
	(Stub_table::init_plt_fde): New functions.
	(Stub_table::add_eh_frame, replace_eh_frame): Move definition out
	of line.  Init and use plt_fde_.
	(Stub_table::plt_call_size): Return size for tls_get_addr stub.
	Extract alignment code to..
	(Stub_table::plt_call_align): ..this new function.  Adjust all callers.
	(Stub_table::add_plt_call_entry): Set has_tls_get_addr_opt and
	tls_get_addr_opt_bctrl, and align after that.
	(Stub_table::do_write): Write out tls_get_addr stub.
	(Target_powerpc::do_finalize_sections): Emit DT_PPC_OPT
	PPC_OPT_TLS/PPC64_OPT_TLS bit.
	(Target_powerpc::Relocate::relocate): Don't check for or modify
	nop following bl for tls_get_addr stub.

2017-08-29  Alan Modra  <amodra@gmail.com>

	* symtab.h (Symbol): Split u_ into u1_ and u2_.  Adjust accessors
	to suit.  Move plt_offset_ before got_offsets_.
	* symtab.cc (Symbol::init_fields): Adjust for union change.
	(Symbol::init_base_output_data): Likewise.
	(Symbol::init_base_output_segment): Likewise.
	(Symbol::allocate_base_common): Likewise.
	(Symbol::output_section): Likewise.
	(Symbol::set_output_section): Likewise.
	(Symbol::set_output_segment): Likewise.
	* resolve.cc (Symbol::override_base): Likewise.
	(Symbol::override_base_with_special): Likewise.

2017-08-28  Igor Kudrin  <ikudrin@accesssoftek.com>

	* aarch64.cc (Target_aarch64::Relocate::relocate_tls):
	Make got_tlsdesc_offset signed and fix its calculation.
	* testsuite/Makefile.am (aarch64_tlsdesc): New test.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/aarch64_tlsdesc.s: New test source file.
	* testsuite/aarch64_tlsdesc.sh: New test script.
	* testsuite/aarch64_tlsdesc.t: New test linker script.

2017-08-28  Alan Modra  <amodra@gmail.com>

	PR 21847
	* powerpc.cc (Target_powerpc::is_elfv2_localentry0): Test
	non_zero_localentry.
	(Target_powerpc::resolve): New function.
	(powerpc_info): Set has_resolve for 64-bit.
	* target.h (Sized_target::resolve): Return bool.
	* resolve.cc (Symbol_table::resolve): Continue with normal
	processing when target resolve returns false.
	* symtab.h (Symbol::non_zero_localentry, set_non_zero_localentry):
	New accessors.
	(Symbol::non_zero_localentry_): New flag bit.
	* symtab.cc (Symbol::init_fields): Init non_zero_localentry_.

2017-08-08  Romain Geissler  <romain.geissler@gmail.com>
	    Alan Modra  <amodra@gmail.com>

	* configure.ac: Add --enable-default-hash-style option.
	* options.h (hash_style): Use DEFAULT_HASH_STYLE as default value.
	* configure: Regenerate.
	* config.in: Regenerate.

2017-08-03  James Clarke  <jrtc27@jrtc27.com>

	* options.h (General_options): Set a non-NULL second help string
	argument for relax to allow --no-relax.

2017-08-01  Alan Modra  <amodra@gmail.com>

	* ehframe.cc (Fde::operator==): New.
	(Cie::remove_fde, Eh_frame::remove_ehframe_for_plt): New.
	* ehframe.h (Fde::operator==): Declare.
	(Cie::remove_fde, Eh_frame::remove_ehframe_for_plt): Likewise.
	* layout.cc (Layout::remove_eh_frame_for_plt): New.
	* layout.h (Layout::remove_eh_frame_for_plt): Declare.
	* powerpc.cc (Target_powerpc::do_relax): Remove old eh_frame FDEs.
	(Stub_table::add_eh_frame): Delete eh_frame_added_ condition.
	Don't add eh_frame for empty stub section.
	(Stub_table::remove_eh_frame): New.

2017-07-31  Alan Modra  <amodra@gmail.com>

	* options.h (no_tls_optimize): New powerpc option.
	* powerpc.cc (Target_powerpc::abiversion, set_abiversion): Formatting.
	(Target_powerpc::stk_toc): Formatting, fix comment.
	(Target_powerpc::Track_tls::tls_get_addr_state): Rename from
	tls_get_addr.
	(Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
	Return TLSOPT_NONE when !tls_optimize.
	(Target_powerpc::add_global_pair_with_rel): Check
	for existing reloc before reserving.
	(Target_powerpc::add_local_tls_pair): Likewise.

2017-07-31  Alan Modra  <amodra@gmail.com>

	PR 21847
	* powerpc.cc (Target_powerpc::scan_relocs): Warn on --plt-localentry
	without ld.so checks.

2017-07-29  Alan Modra  <amodra@gmail.com>

	PR 21847
	* powerpc.cc (Target_powerpc::scan_relocs): Default to
	--no-plt-localentry.

2017-07-28  H.J. Lu  <hongjiu.lu@intel.com>

	PR gold/21857
	* compressed_output.cc (Output_compressed_section::set_final_data_size):
	Call put_ch_reserved to clear the reserved field for 64-bit ELF.

2017-07-26  H.J. Lu  <hongjiu.lu@intel.com>

	* mips.cc (Mips_relocate_functions): Add "llu" suffix to
	0x800080008000.

2017-07-23  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (glink_eh_frame_fde_64v2): Correct advance to
	restore of LR.
	(glink_eh_frame_fde_64v1): Advance to restore of LR at latest
	possible insn.

2017-07-18  Nick Clifton  <nickc@redhat.com>

	PR 21775
	* aarch64.cc: Fix spelling typos.
	* arm.cc: Likewise.
	* layout.cc: Likewise.
	* powerpc.cc: Likewise.
	* x86_64.cc: Likewise.

2017-07-12  Alan Modra  <amodra@gmail.com>

	* 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.

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-06-23  Alan Modra  <amodra@gmail.com>

	* 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  Alan Modra  <amodra@gmail.com>

	* 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-21  Alan Modra  <amodra@gmail.com>

	* 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-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  James Clarke  <jrtc27@jrtc27.com>

	* powerpc.cc (Stub_table::define_stub_syms): Always include object's
	uniq_ value.

2017-06-15  Eric Christopher  <echristo@gmail.com>

	* aarch64.cc: Fix a few typos and grammar-os.

2017-06-15  Jiong Wang  <jiong.wang@arm.com>

	* 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-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-05-23  Alan Modra  <amodra@gmail.com>

	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-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-13  James Clarke  <jrtc27@jrtc27.com>

	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-12  Igor Kudrin  <ikudrin@accesssoftek.com>

	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-04-27  Alan Modra  <amodra@gmail.com>

	* testsuite/plugin_section_order.c (onload): Add missing break.

2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* 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  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* 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  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* 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  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* mips.cc (Target_mips::Relocate::relocate): Remove redundant
	checks for relocatable link.
	(Mips_relocate_functions::reljalr): Likewise.

2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* mips.cc (class Mips_output_section_options): New class.
	(Target_mips::do_make_output_section): New method.

2017-03-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* 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  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* 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-02-22  Alan Modra  <amodra@gmail.com>

	* 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-15  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* mips.cc (Target_mips::Scan::get_reference_flags): Remove
	gold_unreachable from default case.

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-03  Rahul Chaudhry  <rahulchaudhry@google.com>

	* 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-03  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Powerpc_relobj::make_toc_relative): Don't crash
	when no .toc section exists.

2017-01-31  Cary Coutant  <ccoutant@gmail.com>

	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-23  Rahul Chaudhry  <rahulchaudhry@google.com>

	* testsuite/icf_safe_so_test.sh: Use "set -e".
	* testsuite/icf_safe_test.sh: Likewise.
	* testsuite/icf_test.sh: Likewise.

2017-01-23  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	* 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  Vladimir Radosavljevic  <Vladimir.Radosavljevic@imgtec.com>

	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-20  Nick Clifton  <nickc@redhat.com>

	* aarch64.cc (Stub_template_repertoire): Change ST_E_835769_INSNS
	from a pointer to an array.

2017-01-13  H.J. Lu  <hongjiu.lu@intel.com>

	PR gold/21040
	* powerpc.cc (Powerpc_relobj<size, big_endian>::make_toc_relative):
	Cast 0x80008000 to uint64_t.

2017-01-12  Cary Coutant  <ccoutant@gmail.com>

	* object.cc (Sized_relobj_file): Fix byte counts for calls to memmem.

2017-01-11  Cary Coutant  <ccoutant@gmail.com>

	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  Cary Coutant  <ccoutant@gmail.com>

	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  Cary Coutant  <ccoutant@gmail.com>

	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  Alan Modra  <amodra@gmail.com>

	* 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-10  Cary Coutant  <ccoutant@gmail.com>

	* 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  Alan Modra  <amodra@gmail.com>

	* 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  Alan Modra  <amodra@gmail.com>

	* 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-09  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc::make_plt_section): Point sh_info of
	".rela.plt" at ".plt".

2017-01-07  Alan Modra  <amodra@gmail.com>

	* 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-02  Alan Modra  <amodra@gmail.com>

	Update year range in copyright notice of all files.

For older changes see ChangeLog-2016

Copyright (C) 2017 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:
