2018-12-05  Alan Modra  <amodra@gmail.com>

	* symtab.h (Symbol::Symbol): Avoid -Wclass-memaccess warning.

2018-12-03  Alexey Neyman  <stilor@att.net>

	PR gold/23594
	* configure.ac: Add checks for link, mkdtemp.
	* configure: Regenerate.
	* config.in: Regenerate.
	* plugin.cc (Plugin_recorder::init): Fall back to mktemp
	if mkdtemp is not available.
	(link_or_copy_file): Fall back to copy if link() is not available.

2018-12-02  H.J. Lu  <hongjiu.lu@intel.com>

	PR binutils/23919
	* merge.cc (Output_merge_string<Char_type>::do_add_input_section):
	Get addralign from decompressed_section_contents.
	* object.cc (build_compressed_section_map): Set info.addralign.
	(Object::decompressed_section_contents): Add a palign
	argument and store p->second.addralign in *palign if it isn't
	NULL.
	* object.h (Compressed_section_info): Add addralign.
	(section_is_compressed): Add a palign argument, default it
	to NULL, store p->second.addralign in *palign if it isn't NULL.
	(Object::decompressed_section_contents): Likewise.
	* output.cc (Output_section::add_input_section): Get addralign
	from section_is_compressed.

2018-11-26  Alan Modra  <amodra@gmail.com>

	* testsuite/Makefile.am (justsyms_lib): Link with -z norelro.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/justsyms_exec.c (main): Do check exported_func
	on PowerPC64 ELFv2.

2018-11-26  Alan Modra  <amodra@gmail.com>

	* testsuite/ver_test_14.sh: Accept objdump -T display of st_other
	bits on powerpc64le.

2018-11-08  Alan Modra  <amodra@gmail.com>

	* Makefile.am (gcctestdir1/ld): Use $@ and absolute paths.
	(gcctestdir1/collect-ld): New.
	(ld1_DEPENDENCIES): Add gcctestdir1/collect-ld.
	(ld1_LDFLAGS): Remove -Bgcctestdir1/.
	(editcc1, ld1_LINK): Define.
	(gcctestdir2/ld, gcctestdir2/collect-ld, ld2_DEPENDENCIES),
	(ld2_LDFLAGS, editcc2, ld2_LINK),
	(ld1_r_DEPENDENCIES, ld1_r_LDFLAGS, ld1_r_LINK),
	(gcctestdir2-r/ld, gcctestdir2-r/collect-ld, ld2_r_DEPENDENCIES),
	(ld2_r_LDFLAGS, editcc2r, ld2_r_LINK),
	(gcctestdir3/ld, gcctestdir3/collect-ld, ld3_DEPENDENCIES),
	(ld3_LDFLAGS, editcc3, ld3_LINK),
	(gcctestdir4/ld, gcctestdir4/collect-ld, ld4_DEPENDENCIES),
	(ld4_LDFLAGS, editcc4, ld4_LINK): Similarly.
	* Makefile.in: Regenerate.
	* testsuite/Makefile.am (editcc): Define sed command to put
	our -B option first.  Remove other occurrences of -Bgcctestdir/
	throughout file.
	(editcc1): Define for -D_FORTIFY_SOURCE stripping.
	(editcc2): Define for -static-libgcc/libstdc++ stripping.
	(LINK1, CXXLINK1): Don't use CCLD or CXXLD.
	(CCLD, CXXLD, COMPILE, LINK, CXXCOMPILE, CXXLINK, CXXLINK_S): Define
	using editcc macros.
	(gcctestdir/collect-ld): New rule, add as a dependency of..
	(gcctestdir/ld): ..this.  Use $@ and abs_top_buildir.
	(gcctestdir/as): Use $@.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/incremental_test.sh (actual): Match collect-ld too.

2018-11-02  Alan Modra  <amodra@gmail.com>

	* Makefile.am (MOSTLYCLEANFILES): Define.
	* Makefile.in: Regnerate.
	* testsuite/Makefile.am (MOSTLYCLEANFILES): Add ver_test_14 and
	gnu_property_test.
	* testsuite/Makefile.in: Regnerate.

2018-10-16  Cherry Zhang  <cherryyz@google.com>

	PR 23769
	* gold.cc (queue_middle_tasks): Correct split-stack error message.

2018-08-29  Chenghua Xu  <paul.hua.gm@gmail.com>

	* mips.cc (Mips_mach, add_machine_extensions, elf_mips_mach):
	Rename loongson3a to gs464.
	(mips_isa_ext_mach, mips_isa_ext): Delete loongson3a.
	(infer_abiflags): Use ases instead of isa_ext for infer ABI
	flags.
	(elf_mips_mach_name): Rename loongson3a to gs464.

2018-07-10  Tulio Magno Quites Machado Filho  <tuliom@linux.ibm.com>

	* object.cc (Sized_relobj_file::map_to_kept_section): Initialize
	kept_file.

2018-08-07  Cary Coutant  <ccoutant@gmail.com>

	PR ld/23486
	* x86_64.cc (Target_x86_64::Target_x86_64): Initialize
	object_isa_1_used_.
	(Target_x86_64::object_isa_1_used_): New data member.
	(Target_x86_64::record_gnu_property): Save ISA_1_USED bits for object.
	(Target_x86_64::merge_gnu_properties): Merge ISA_1_USED bits.

2018-08-06  Cary Coutant  <ccoutant@gmail.com>

	PR gold/23455
	* options.h (General_options): Add --warn-drop-version option.
	* symtab.cc (Symbol_table::set_dynsym_indexes): Check it.

2018-08-06  Cary Coutant  <ccoutant@gmail.com>

	* target.h (Sized_target::record_gnu_property): Change first two
	parameters to unsigned int.
	* x86_64.cc (Target_x86_64::record_gnu_property): Likewise.

2018-07-30  Nick Clifton  <nickc@redhat.com>

	* layout.cc (section_name_mapping): Add an entry for
	.gnu.build.attributes.

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

	* po/fr.po: Updated French translation.

2018-07-14  Cary Coutant  <ccoutant@gmail.com>

	PR gold/23397
	* object.cc (Sized_relobj_file::do_layout): Mark section as deferred.
	* testsuite/Makefile.am (plugin_test_1): Add --emit-relocs option to
	existing test case.
	* testsuite/Makefile.in: Regenerate.

2018-07-14  Cary Coutant  <ccoutant@gmail.com>

	PR gold/23409
	* symtab.cc (Symbol_table::define_special_symbol): Add check for
	version name on existing symbol.
	* testsuite/Makefile.am (ver_test_pr23409): New test case.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/ver_test_pr23409.sh: New test script.
	* testsuite/ver_test_pr23409_1.script: New version script.
	* testsuite/ver_test_pr23409_2.script: New version script.

2018-07-11  Franz Sirl  <franz.sirl-kernel@lauterbach.com>

	* main.cc (main): Print m.arena as long long.

2018-07-09  Cary Coutant  <ccoutant@gmail.com>

	* incremental.cc (Sized_incremental_binary::setup_readers): Use
	emplace_back for C++ 11 or later.

2018-07-06  Alan Modra  <amodra@gmail.com>

	* powerpc.cc: Include attributes.h.
	(Powerpc_relobj::attributes_section_data_): New variable, with
	accessor and associated constructor and destructor support.
	(Powerpc_dynobj::attributes_section_data_): Likewise.
	(Powerpc_relobj::do_read_symbols): Stash SHT_GNU_ATTRIBUTES section
	contents in attributes_section_data_.
	(Powerpc_dynobj::do_read_symbols): Likewise.
	(Target_powerpc): Add attributes_section_data_, last_fp_, last_ld_,
	last_vec_, and last_struct_ vars.
	(Target_powerpc::merge_object_attributes): New function.
	(Target_powerpc::do_finalize_sections): Iterate over input objects
	merging attributes.  Create output attributes section.

2018-06-26  Nick Clifton  <nickc@redhat.com>

	* po/uk.po: Updated Ukranian translation.

2018-06-24  Nick Clifton  <nickc@redhat.com>

	* po/gold.pot: Regenerate.

2018-06-24  Nick Clifton  <nickc@redhat.com>

	2.31 branch created.

2018-06-23  Cary Coutant  <ccoutant@gmail.com>

	* version.cc (version_string): Bump to 1.16.
	* NEWS: Add new features in 1.16.

2018-06-23  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22914
	* x86_64.cc (Target_x86_64::record_gnu_property): Initialize val.

2018-06-23  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22915
	* x86_64.cc (Output_data_plt_x86_64_ibt): New class.
	(Target_x86_64::do_make_data_plt): (All instantiations) Check for
	IBT feature bit and create IBT PLTs.

2018-06-22  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22914
	* layout.cc (read_sized_value): Fix spelling of section name.
	(Layout::layout_gnu_property): Call Sized_target::record_gnu_property
	for target-specific properties;
	don't store them with target-independent properties yet.
	(Layout::merge_gnu_properties): New method.
	(Layout::add_gnu_property): New method.
	(Layout::create_gnu_properties_note): Call target to finalize
	target-specific properties. Fix spelling of output section name.
	* layout.h (Layout::merge_gnu_properties): New method.
	(Layout::add_gnu_property): New method.
	* object.cc (Sized_relobj_file::do_layout): Call
	Layout::merge_gnu_properties.
	* target.h (Target::merge_gnu_property): Remove.
	(Target::finalize_gnu_properties): New method.
	(Target::do_merge_gnu_property): Move to Sized_target and rename.
	(Target::do_finalize_gnu_properties): New virtual method.
	(Sized_target::record_gnu_property): Moved and renamed from
	Target::do_merge_gnu_property.
	(Sized_target::merge_gnu_properties): New virtual method.
	* x86_64.cc (Target_x86_64::isa_1_used_, isa_1_needed_)
	(feature_1_, object_feature_1_, seen_first_object_): New data members.
	(Target_x86_64::do_merge_gnu_property): Rename to ...
	(Target_x86_64::record_gnu_property): ... this.  Save target-specific
	properties in Target class object.
	(Target_x86_64::merge_gnu_properties): New method.
	(add_property): New static inline function.
	(Target_x86_64::do_finalize_gnu_properties): New method.
	* testsuite/Makefile.am (gnu_property_test): Remove C source file;
	link directly without compiler driver.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/gnu_property_a.S: Add _start.

2018-06-22  Cary Coutant  <ccoutant@gmail.com>

	* incremental.cc (Sized_incremental_binary::setup_readers): Use
	emplace_back for GCC 5 and later.
	* incremental.h (Incremental_binary::Input_reader): Provide copy
	constructor.
	(Sized_incremental_binary::Sized_input_reader): Likewise.

2018-06-22  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22914
	* layout.cc (Layout::Layout): Initialize gnu_properties_.
	(read_sized_value, write_sized_value): New functions.
	(Layout::layout_gnu_property): New method.
	(Layout::create_notes): Call create_gnu_properties_note.
	(Layout::create_gnu_properties_note): New method.
	* layout.h (Layout::layout_gnu_property): New method.
	(Layout::create_gnu_properties_note): New method.
	(Layout::Gnu_property, Layout::Gnu_properties): New types.
	(Layout::gnu_properties_): New data member.
	* object.cc (Sized_relobj_file::layout_gnu_property_section): New
	method.
	(Sized_relobj_file::do_layout): Handle .note.gnu.property sections.
	* object.h (Sized_relobj_file::layout_gnu_property_section): New
	method.
	* target.h (Target::merge_gnu_property): New method.
	(Target::do_merge_gnu_property): New virtual method.
	* x86_64.cc (Target_x86_64::do_merge_gnu_property): New method.
	* testsuite/Makefile.am (gnu_property_test): New test case.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/gnu_property_a.S: New source file.
	* testsuite/gnu_property_b.S: New source file.
	* testsuite/gnu_property_c.S: New source file.
	* testsuite/gnu_property_main.c: New source file.
	* testsuite/gnu_property_test.sh: New test script.

2018-06-21  Cary Coutant  <ccoutant@gmail.com>

	* resolve.cc (Symbol_table::resolve): Rename tobinding to
	orig_tobinding.  Call set_is_needed() for objects that resolve
	non-weak references.
	(Symbol_table::should_override): Allow a dynamic definition to
	override an earlier one in a not-needed library.
	* symtab.cc (Symbol_table::set_dynsym_indexes): Remove separate
	processing for as-needed symbols.  Add warning when discarding
	version informatin.
	* testsuite/Makefile.am (weak_as_needed): New test case.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/weak_as_needed.sh: New test script.
	* testsuite/weak_as_needed_a.c: New source file.
	* testsuite/weak_as_needed_b.c: New source file.
	* testsuite/weak_as_needed_b.script: New version script.
	* testsuite/weak_as_needed_c.c: New source file.
	* testsuite/weak_as_needed_c.script: New version script.

2018-06-20  Cary Coutant  <ccoutant@gmail.com>

	PR gold/23268
	* dynobj.cc (Versions::Versions): Change init for needs_base_version_.
	(Versions::record_version): Add verdefs for both shared objects and
	executables.
	(Versions::add_def): Likewise for base version.
	(Versions::add_need): Don't add base version for executables.
	(Versions::version_index): Look up version for both shared objects and
	executables.
	* testsuite/Makefile.am (ver_test_14): New test case.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/ver_test_14.script: New version script.
	* testsuite/ver_test_14.sh: New test script.

2018-06-19  Joshua Watt  <jpewhacker@gmail.com>
	    Cary Coutant  <ccoutant@gmail.com>

	* configure.ac: Replace manual thread configuration with AX_PTHREAD.
	Add --enable-threads=auto.
	* Makefile.am (THREADFLAGS, THREADLIBS): New defines.
	(AM_CFLAGS, AM_CXXFLAGS): Add $(THREADFLAGS).
	(THREADSLIB): Remove; change all references to THREADLIBS.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* config.in: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.am (THREADSLIB): Replace with...
	(THREADFLAGS, THREADLIBS): ... these.
	(LDADD): Remove; add as individual defines for...
	(object_unittest, binary_unittest, leb128_unittest)
	(overflow_unittest): ... these tests.
	(tls_test, tls_pic_test, tls_pie_test, tls_pie_pic_test)
	(tls_shared_test, tls_shared_ie_test, tls_shared_gd_to_ie_test)
	(tls_shared_gnu2_gd_to_ie_test, tls_shared_gnu2_test_LDFLAGS)
	(tls_shared_nonpic_test_LDFLAGS): Add $(THREADFLAGS) and ($THREADLIBS).
	* testsuite/Makefile.in: Regenerate.

2018-06-19  Cary Coutant  <ccoutant@gmail.com>

	* testsuite/Makefile.am (MOSTLYCLEANFILES): Add *.stderr.
	* testsuite/Makefile.in: Regenerate.

2018-06-19  Simon Marchi  <simon.marchi@ericsson.com>

	* configure.ac: Remove AC_PREREQ, add missing quoting and usage
	of AC_LANG_SOURCE.
	* Makefile.in: Re-generate.
	* aclocal.m4: Re-generate.
	* configure: Re-generate.
	* testsuite/Makefile.in: Re-generate.

2018-05-10  Stephen Crane  <sjc@immunant.com>

	* aarch64.cc (Target_aarch64::do_finalize_sections): Use size of
	.got section for the _GLOBAL_OFFSET_TABLE_ symbol computation.

2018-04-24  Cary Coutant  <ccoutant@gmail.com>

	PR gold/20642
	PR gold/22820
	* gc.h (gc_process_relocs): Flag STT_SECTION symbols in symvec.
	* icf.cc (get_section_contents): For merge sections, ignore the
	addend for relocations against non-section symbols.

2018-04-24  Cary Coutant  <ccoutant@gmail.com>

	PR gold/16504
	* dynobj.cc (Versions::symbol_section_contents): Don't set
	VERSYM_HIDDEN flag for undefined symbols.
	* symtab.cc (Symbol_table::add_from_object): Don't override default
	version definition with a different default version.
	* symtab.h (Symbol::from_dyn): New method.
	* testsuite/plugin_test.c (struct sym_info): Add ver field.
	(claim_file_hook): Pass symbol version to plugin API.
	(parse_readelf_line): Parse symbol version.
	* testsuite/Makefile.am (ver_test_pr16504): New test case.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/ver_test_pr16504.sh: New test script.
	* testsuite/ver_test_pr16504_a.c: New source file.
	* testsuite/ver_test_pr16504_a.script: New version script.
	* testsuite/ver_test_pr16504_b.c: New source file.
	* testsuite/ver_test_pr16504_b.script: New version script.

2018-04-19  Cary Coutant  <ccoutant@gmail.com>

	PR gold/23046
	* gc.h (gc_process_relocs): Pass target to
	scan.local_reloc_may_be_function_pointer.

2018-04-18  Nick Clifton  <nickc@redhat.com>

	* po/es.po: Updated Spanish translation.

2018-04-14  Cary Coutant  <ccoutant@gmail.com>

	PR gold/23046
	* gc.h (gc_process_relocs): Pass target to
	scan.global_reloc_may_be_function_pointer.

2018-04-09  Alan Modra  <amodra@gmail.com>

	* configure: Regenerate.

2018-04-09  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc::Track_tls::maybe_skip_tls_get_addr_call):
	Handle inline plt sequence relocs.
	(Stub_table::Plt_stub_key::Plt_stub_key): Likewise.
	(Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Likewise.
	(Target_powerpc::Relocate::relocate): Likewise.

2018-04-09  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc::lplt_): New variable.
	(Target_powerpc::lplt_section): Associated accessor.
	(Target_powerpc::plt_off): Handle local non-ifunc symbols.
	(Target_powerpc::make_lplt_section): New function.
	(Target_powerpc::make_local_plt_entry): New function.
	(Powerpc_relobj::do_relocate_sections): Write out lplt.
	(Output_data_plt_powerpc::first_plt_entry_offset): Zero for lplt.
	(Output_data_plt_powerpc::add_local_entry): New function.
	(Output_data_plt_powerpc::do_write): Ignore lplt.
	(Target_powerpc::make_iplt_section): Make lplt first.
	(Target_powerpc::make_brlt_section): Make .branch_lt relro.
	(Target_powerpc::Scan::local): Handle PLT16 relocs.

2018-04-09  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc::plt_off): New functions.
	(is_plt16_reloc): New function.
	(Stub_table::plt_off): Use Target_powerpc::plt_off.
	(Stub_table::plt_call_size): Use plt_off.
	(Stub_table::do_write): Likewise.
	(Target_powerpc::Scan::get_reference_flags): Return RELATIVE_REF
	for PLT16 relocations.
	(Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Return true
	for PLT16 relocations.
	(Target_powerpc::Scan::global): Make a PLT entry for PLT16 relocations.
	(Target_powerpc::Relocate::relocate): Support PLT16 relocations.
	(Powerpc_scan_relocatable_reloc::global_strategy): Return RELOC_SPECIAL
	for ppc32 plt16 relocs.

2018-04-06  Cary Coutant  <ccoutant@gmail.com>

	* object.cc (Sized_relobj_file::include_section_group): Store
	reference to Kept_section info for discarded comdat sections
	regardless of size.  Move size checking to map_to_kept_section.
	(Sized_relobj_file::include_linkonce_section): Likewise.
	(Sized_relobj_file::map_to_kept_section): Add section name parameter.
	Insert size checking logic from above functions.
	(Sized_relobj_file::find_kept_section_object): New method.
	(Sized_relobj_file::get_symbol_name): New method.
	* object.h (Sized_relobj_file::map_to_kept_section): Add section_name
	parameter.  Adjust all callers.
	(Sized_relobj_file::find_kept_section_object): New method.
	(Sized_relobj_file::get_symbol_name): New method.
	(Sized_relobj_file::Kept_comdat_section): Replace object and shndx
	fields with sh_size, kept_section, symndx, and is_comdat fields.
	(Sized_relobj_file::set_kept_comdat_section): Replace kept_object
	and kept_shndx parameters with is_comdat, symndx, sh_size, and
	kept_section.
	(Sized_relobj_file::get_kept_comdat_section): Likewise.
	* target-reloc.h (enum Comdat_behavior): Change CB_WARNING to CB_ERROR.
	Adjust all references.
	(issue_undefined_symbol_error): New function template.
	(relocate_section): Pass section name to map_to_kept_section.
	Move discarded section code to new function above.
	* aarch64.cc (Target_aarch64::scan_reloc_section_for_stubs): Move
	declaration for gsym out one level.  Call issue_discarded_error.
	* arm.cc (Target_arm::scan_reloc_section_for_stubs): Likewise.
	* powerpc.cc (Relocate_comdat_behavior): Change CB_WARNING to CB_ERROR.

2018-04-05  Cary Coutant  <ccoutant@gmail.com>

	* target-reloc.h (relocate_section): Add local symbol index or global
	symbol name to warning about relocation that refers to discarded
	section.

2018-04-05  James Cowgill  <james.cowgill@mips.com>

	Revert previous patch and apply revised patch.

	PR gold/22770
	* mips.cc (Mips_got_info::record_got_page_entry): Don't insert
	Got_page_entry for object's GOT.
	(Mips_got_info::add_got_page_entries): Add all pages from from's GOT.
	Rename to add_got_page_count.
	(Got_page_entry): Remove num_pages.

2018-04-05  James Cowgill  <james.cowgill@mips.com>

	PR gold/22770
	* mips.cc (Mips_got_info::record_got_page_entry): Fetch existing
	page entries for the object's GOT.

2018-04-05  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (Target_powerpc::make_brlt_section): Make .branch_lt relro.

2018-04-04  Nick Clifton  <nickc@redhat.com>

	* po/es.po: Updated Spanish translation.

2018-04-02  Cary Coutant  <ccoutant@gmail.com>

	PR gold/23016
	* incremental.cc (can_incremental_update): Check for unwind section
	type.
	* layout.h (Layout::layout): Add sh_type parameter.
	* layout.cc (Layout::layout): Likewise.
	(Layout::layout_reloc): Create new output reloc section if data
	section does not already have one.
	(Layout::layout_eh_frame): Check for unwind section type.
	(Layout::make_eh_frame_section): Use unwind section type for .eh_frame
	and .eh_frame_hdr.
	* object.h (Sized_relobj_file::Shdr_write): New typedef.
	(Sized_relobj_file::layout_section): Add sh_type parameter.
	(Sized_relobj_file::Deferred_layout::Deferred_layout): Add sh_type
	parameter.
	* object.cc (Sized_relobj_file::check_eh_frame_flags): Check for
	unwind section type.
	(Sized_relobj_file::layout_section): Add sh_type parameter; pass it
	to Layout::layout.
	(Sized_relobj_file::do_layout): Make local copy of sh_type.
	Force .eh_frame sections to unwind section type.
	Pass sh_type to layout_section.
	(Sized_relobj_file<size, big_endian>::do_layout_deferred_sections):
	Pass sh_type to layout_section.
	* output.cc (Output_section::Output_section): Initialize reloc_section_.
	* output.h (Output_section::reloc_section): New method.
	(Output_section::set_reloc_section): New method.
	(Output_section::reloc_section_): New data member.
	* target.h (Target::unwind_section_type): New method.
	(Target::Target_info::unwind_section_type): New data member.

	* aarch64.cc (aarch64_info): Add unwind_section_type.
	* arm.cc (arm_info, arm_nacl_info): Likewise.
	* i386.cc (i386_info, i386_nacl_info, iamcu_info): Likewise.
	* mips.cc (mips_info, mips_nacl_info): Likewise.
	* powerpc.cc (powerpc_info): Likewise.
	* s390.cc (s390_info): Likewise.
	* sparc.cc (sparc_info): Likewise.
	* tilegx.cc (tilegx_info): Likewise.
	* x86_64.cc (x86_64_info, x86_64_nacl_info): Likewise.

	* testsuite/Makefile.am (pr23016_1, pr23016_2): New test cases.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/testfile.cc: Add unwind_section_type.
	* testsuite/pr23016_1.sh: New test script.
	* testsuite/pr23016_1a.s: New source file.
	* testsuite/pr23016_1b.s: New source file.
	* testsuite/pr23016_2.sh: New test script.
	* testsuite/pr23016_2a.s: New source file.
	* testsuite/pr23016_2b.s: New source file.

2018-03-28  Cary Coutant  <ccoutant@gmail.com>

	PR gold/21423
	PR gold/22500
	* configure.ac: Call AC_USE_SYSTEM_EXTENSIONS.
	Replace check for --enable-plugins with AC_PLUGINS.
	* options.cc (parse_plugin, parse_plugin_opt): Remove #ifdef.
	(General_options::finalize): Check if plugins enabled.
	* options.h (--plugin, --plugin-opt): Define even if plugins not
	enabled.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.

2018-03-28  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22969
	* aarch64-reloc.def: Add TLSLE_LDST* relocations.
	* aarch64.cc (Target_aarch64::optimize_tls_reloc): Likewise.
	(Target_aarch64::Scan::local): Likewise.
	(Target_aarch64::Scan::global): Likewise.
	(Target_aarch64::Relocate::relocate): Likewise.
	(Target_aarch64::Relocate::relocate_tls): Likewise.

2018-03-27  Roland McGrath  <mcgrathr@google.com>

	* testsuite/split_x86_64.sh: Fix bad regexp.

2018-03-26  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22868
	* plugin.cc (Sized_pluginobj::do_add_symbols): Use a real section
	index instead of SHN_ABS for defined symbols.
	* testsuite/Makefile.am (plugin_pr22868): New test case.
	* testsuite/Makefile.in: Regenerate
	* testsuite/plugin_pr22868.sh: New test script.
	* testsuite/plugin_pr22868_a.c: New source file.
	* testsuite/plugin_pr22868_b.c: New source file.

2018-03-23  Cary Coutant  <ccoutant@gmail.com>

	* plugin.cc (link_or_copy_file): Remove newlines from warning messages.
	Add pedantic check for return value from ::write.

2018-03-23  Cary Coutant  <ccoutant@gmail.com>

	* debug.h (DEBUG_PLUGIN): New constant.
	(DEBUG_ALL): Add DEBUG_PLUGIN.
	(debug_string_to_enum): Likewise.
	* plugin.cc (make_sized_plugin_object): Add filename parameter.
	(Plugin_recorder): New class.
	(Plugin_manager::~Plugin_manager): Delete recorder_.
	(Plugin_manager::load_plugins): Create and initialize recorder_.
	(Plugin_manager::claim_file): Record claimed and unclaimed files.
	(Plugin_manager::make_plugin_object): Use object name as name for
	plugin object, if available.
	(Plugin_manager::add_input_file): Record replacement files.
	(Sized_pluginobj::do_add_symbols): Record plugin symbols.
	(Plugin_finish::run): Call Plugin_recorder::finish().
	(make_sized_plugin_object): Add filename parameter and pass to
	Sized_pluginobj constructor.
	* plugin.h (Plugin::filename): New method.
	(Plugin::recorder): New method.
	(Plugin::recorder_): New data member.

2018-03-07  Sriraman Tallam  <tmsriram@google.com>

	* layout.cc (Layout::default_section_order): Check for text section
	prefixes.
	(Layout::text_section_name_mapping): New static member.
	(Layout::text_section_name_mapping_count): New static member.
	(Layout::match_section_name): New static function.
	(Layout::output_section_name): Check for text section prefixes.
	* layout.h (Output_section_order::ORDER_TEXT_HOT): New enum value.
	(Output_section_order::ORDER_TEXT_STARTUP): New enum value.
	(Output_section_order::ORDER_TEXT_EXIT): New enum value.
	(Output_section_order::ORDER_TEXT_UNLIKELY): New enum value.
	(Layout::text_section_name_mapping): New static member.
	(Layout::text_section_name_mapping_count): New static member.
	(Layout::match_section_name): New static function.
	* options.h (keep_text_section_prefix): New -z option.
	* testsuite/Makefile.am (keep_text_section_prefix): New test.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/keep_text_section_prefix.cc: New test source.
	* testsuite/keep_text_section_prefix.sh: New test script.

2018-02-22  Sriraman Tallam  <tmsriram@google.com>

	* plugin.cc (get_wrap_symbols): New plugin interface.
	(load): Add get_wrap_symbols to transfer vector.
	* plugin-api.h (ld_plugin_get_wrap_symbols): New plugin interface.
	* testsuite/plugin_test.c (onload): Call and check get_wrap_symbols
	interface.
	* testsuite/plugin_test_wrap_symbols.sh: New test script.
	* testsuite/plugin_test_wrap_symbols_1.cc: New file.
	* testsuite/plugin_test_wrap_symbols_2.cc: New file.
	* testsuite/Makefile.am (plugin_test_wrap_symbols): New test.
	* testsuite/Makefile.in: Regenerate.

2018-02-07  Sriraman Tallam  <tmsriram@google.com>

	* expression.cc (Symbol_expression::set_expr_sym_in_real_elf):
	New method.
	(Unary_expression::set_expr_sym_in_real_elf): New method.
	(Binary_expression::set_expr_sym_in_real_elf): New method.
	(Trinary_expression::set_expr_sym_in_real_elf): New method.
	* plugin.cc (get_symbol_resolution_info): Fix symbol resolution if
	defined or used in defsyms.
	* plugin.h (Plugin_manager::is_defsym_def): New method.
	(Plugin_manager::Plugin_manager): Initialize defsym_defines_set_.
	(Plugin_manager::defsym_defines_set_): New member.
	(Plugin_manager::Defsym_defines_set): New typedef.
	* script.cc (Script_options::set_defsym_uses_in_real_elf): New method.
	(Script_options::find_defsym_defs): New method.
	* script.h (Expression::set_expr_sym_in_real_elf): New method.
	(Symbol_assignment::is_defsym): New method.
	(Symbol_assignment::value): New method.
	(Script_options::find_defsym_defs): New method.
	(Script_options::set_defsym_uses_in_real_elf): New method.
	* testsuite/Makefile.am (plugin_test_defsym): New test.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/plugin_test.c: Check for new symbol resolution.
	* testsuite/plugin_test_defsym.sh: New script.
	* testsuite/plugin_test_defsym.c: New test source.

2018-02-07  Alan Modra  <amodra@gmail.com>

	Revert 2018-01-17  Alan Modra  <amodra@gmail.com>
	* options.h: Remove --speculate-indirect-jumps support.
	* powerpc.cc: Likewise.

2018-02-02  Cary Coutant  <ccoutant@gmail.com>

	* PR gold/22776
	* dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog): Add
	support for DWARF-4 line number tables.
	* dwarf_reader.h (Sized_dwarf_line_info::max_ops_per_insn): New field.

2018-01-18  Alan Modra  <amodra@gmail.com>

	* powerpc.cc (param_plt_align): New function supplying default
	--plt-align values.  Use it..
	(Stub_table::plt_call_align): ..here, and..
	(Output_data_glink::global_entry_align): ..here.
	(Stub_table::stub_align): Correct 32-bit minimum alignment.

2018-01-17  Alan Modra  <amodra@gmail.com>

	* options.h (speculate_indirect_jumps): New option.
	* powerpc.cc (beqctrm, beqctrlm, crseteq): New insn constants.
	(output_bctr): New function.
	(Stub_table::plt_call_size): Add space for speculation barrier.
	(Stub_table::branch_stub_size): Likewise.
	(Output_data_glink::pltresolve_size): Likewise.
	(Stub_table::do_write): Output speculation barriers.

2018-01-17  Alan Modra  <amodra@gmail.com>

	* options.h (plt_align): Support for PowerPC32 too.
	* powerpc.cc (Stub_table::stub_align): Heed --plt-align for 32-bit.
	(Stub_table::plt_call_size, branch_stub_size): Tidy.
	(Stub_table::plt_call_align): Implement using stub_align.
	(Output_data_glink::global_entry_align): New function.
	(Output_data_glink::global_entry_off): New function.
	(Output_data_glink::global_entry_address): Use global_entry_off.
	(Output_data_glink::pltresolve_size): New function, replacing
	pltresolve_size_ constant.  Update all uses.
	(Output_data_glink::add_global_entry): Align offset.
	(Output_data_glink::set_final_data_size): Use global_entry_align.
	(Stub_table::do_write): Don't pad __glink_PLTrelsolve with nops.
	Tidy stub output.  Use global_entry_off.

2018-01-15  Cary Coutant  <ccoutant@gmail.com>

	PR gold/22694
	* options.h (-fuse-ld): Add correct helparg.

2018-01-15  Nick Clifton  <nickc@redhat.com>

	* po/uk.po: Updated Ukranian translation.

2018-01-13  Nick Clifton  <nickc@redhat.com>

	* po/gold.pot: Regenerated.

2018-01-13  Nick Clifton  <nickc@redhat.com>

	2.30 branch created.

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

	* NEWS: Add new features in 1.15.
	* version.cc (version_string): Bump to 1.15.

2018-01-12  Sterling Augustine  <saugustine@google.com>

	* cref.cc (Cref_inputs::Cref_table_compare::operator): Add
	conditionals and calls to is_forwarder.

2018-01-03  Alan Modra  <amodra@gmail.com>

	Update year range in copyright notice of all files.

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