+2014-06-09 Cary Coutant <ccoutant@google.com>
+
+ * dwarf_reader.cc (Dwarf_pubnames_table::read_header): Check that
+ unit_length is within section bounds.
+
+2014-06-09 Cary Coutant <ccoutant@google.com>
+
+ PR gold/16980
+ * layout.cc (Layout::print_to_mapfile): Print unattached sections in
+ map.
+
+2014-06-07 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (relocate): Treat field of cmpli insn as a bitfield.
+
+2014-06-06 Cary Coutant <ccoutant@google.com>
+
+ * dwarf_reader.h (Dwarf_pubnames_table): Remove output_section_offset_.
+ * dwarf_reader.cc (Dwarf_pubnames_table::read_section): Likewise.
+ (Dwarf_pubnames_table::read_header): Likewise.
+ * layout.cc (gdb_fast_lookup_sections): Add .debug_gnu_pubnames and
+ .debug_gnu_pubtypes.
+
+2014-06-05 Joel Brobecker <brobecker@adacore.com>
+
+ * Makefile.am (CONFIG_STATUS_DEPENDENCIES): New.
+ * Makefile.in, configure: Regenerate.
+
+2014-06-03 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (addis_12_2): Define.
+ (Stub_table::do_write): Support fusion on ELFv2 stubs.
+
+2014-06-03 Alan Modra <amodra@gmail.com>
+
+ * testsuite/plugin_test.c (parse_readelf_line): Skip non-visibility
+ st_other output.
+
+2014-06-02 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::local_reloc_may_be_function_pointer):
+ Only ignore relocs on ELFv1.
+ (Target_powerpc::global_reloc_may_be_function_pointer): Likewise.
+
+2014-05-30 Cary Coutant <ccoutant@google.com>
+
+ * testsuite/Makefile.am (ehdr_start_test_4): Fix typo in -B option.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/ehdr_start_test_4.sh: Look for "U" instead of "w".
+
+2014-05-27 H.J. Lu <hongjiu.lu@intel.com>
+
+ PR gold/16945
+ * x86_64.cc (Target_x86_64::Relocate::relocate): Use signed int
+ for got_offset. Properly get GOT address for R_X86_64_PLTOFF64.
+
+2014-05-15 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (do_plt_fde_location): Handle zero length .glink.
+ Compare FDE contents with DW_CFA_nop rather than 0.
+
+2014-05-13 Sriraman Tallam <tmsriram@google.com>
+
+ * symtab.h (may_need_copy_reloc): Remove check for position independent
+ code.
+ * x86_64.cc (Target_x86_64<size>::Scan::global): Add check for no
+ position independence before pc absolute may_need_copy_reloc call.
+ Add check for executable output befor pc relative may_need_copy_reloc
+ call.
+ * i386.cc: Ditto.
+ * arm.cc: Ditto.
+ * sparc.cc: Ditto.
+ * tilegx.cc: Ditto.
+ * powerpc.cc: Add check for no position independence before
+ may_need_copy_reloc calls.
+ * testsuite/pie_copyrelocs_test.cc: New file.
+ * testsuite/pie_copyrelocs_shared_test.cc: New file.
+ * Makefile.am (pie_copyrelocs_test): New test.
+ * Makefile.in: Regenerate.
+
+2014-05-08 Martin Liška <mliska@suse.cz>
+
+ * output.cc (Sized_relobj_file::do_layout): Fix typo in info message.
+
+2014-05-06 Cary Coutant <ccoutant@google.com>
+
+ PR gold/16900
+ * i386.cc (Output_data_got_plt_i386): New class.
+ (Output_data_plt_i386::Output_data_plt_i386): Change type of got_plt
+ parameter. Change all callers.
+ (Output_data_plt_i386::layout_): Remove.
+ (Output_data_plt_i386::got_plt_): Change type.
+ (Target_i386::got_plt_): Change type. Change all references.
+ (Target_i386::got_section): Create instance of new class.
+ (Output_data_got_plt_i386::do_write): New function.
+ * x86_64.cc (Output_data_got_plt_x86_64): New class.
+ (Output_data_plt_x86_64::Output_data_plt_x86_64): Change type of got_plt
+ parameter. Change all callers.
+ (Output_data_plt_x86_64::layout_): Remove.
+ (Output_data_plt_x86_64::got_plt_): Change type.
+ (Target_x86_64::got_plt_): Change type. Change all references.
+ (Target_x86_64::got_section): Create instance of new class.
+ (Output_data_got_plt_x86_64::do_write): New function.
+ (Output_data_plt_x86_64::do_write): Don't write reserved words in GOT.
+ (Target_x86_64<size>::init_got_plt_for_update): Create instance of new
+ class.
+
+2014-05-05 Cary Coutant <ccoutant@google.com>
+
+ * gdb-index.cc (Gdb_index_info_reader): Don't complain about language
+ if we have pubnames/pubtypes.
+
+2014-05-02 Cary Coutant <ccoutant@google.com>
+
+ * defstd.cc (in_segment): Define __ehdr_start here...
+ * layout.cc (Layout::finalize): ...Instead of here. Set the
+ output segment when known.
+ * resolve.cc (Symbol::override_base_with_special): Remember
+ the original binding.
+ * symtab.cc (Symbol::set_output_segment): New function.
+ (Symbol::set_undefined): New function.
+ * symtab.h (Symbol::is_weak_undefined): Check original undef
+ binding.
+ (Symbol::is_strong_undefined): New function.
+ (Symbol::set_output_segment): New function.
+ (Symbol::set_undefined): New function.
+ * target-reloc.h (is_strong_undefined): Remove.
+ (issue_undefined_symbol_error): Call Symbol::is_weak_undefined.
+ Check for hidden undefs.
+ (relocate_section): Call Symbol::is_strong_undefined.
+
+ * testsuite/Makefile.am (ehdr_start_test_1)
+ (ehdr_start_test_2, ehdr_start_test_3)
+ (ehdr_start_test_4, ehdr_start_test_5): New test cases.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/ehdr_start_def.cc: New source file.
+ * testsuite/ehdr_start_test.cc: New source file.
+ * testsuite/ehdr_start_test.t: New linker script.
+ * testsuite/ehdr_start_test_4.sh: New shell script.
+
+2014-04-23 Cary Coutant <ccoutant@google.com>
+
+ PR gold/16870
+ * x86_64.cc (Target_x86_64::Relocate::relocate): Add missing break.
+
+2014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
+
+ * layout.cc (Layout::include_section): Allow a target to decide
+ whether to include a section.
+ * target.h (Target::should_include_section): New function.
+ (Target::do_should_include_section): New function.
+
+2014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
+
+ * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Remove and
+ inline into ...
+ (Copy_relocs::emit): ... here.
+ * copy-relocs.h (Copy_reloc_entry): Change from class to struct.
+ (Copy_reloc_entry::make_copy_reloc): Change from private to protected.
+ (Copy_reloc_entry::entries_): Change from private to protected.
+
+2014-04-02 Sriraman Tallam <tmsriram@google.com>
+
+ * icf.cc (get_section_contents): Replace copies of reloc
+ vectors with const references.
+
+2014-04-02 Cary Coutant <ccoutant@google.com>
+
+ * configure.ac (HAVE_PUBNAMES): Use C instead of C++.
+ (HAVE_NO_USE_LINKER_PLUGIN): Check for -fno-use-linker-plugin.
+ * configure: Regenerate.
+ * testsuite/Makefile.am (OPT_NO_PLUGINS): New macro for
+ -fno-use-linker-plugin.
+ (LINK1, CXXLINK1): Add it to the link command.
+ * testsuite/Makefile.in: Regenerate.
+
+2014-03-12 Alan Modra <amodra@gmail.com>
+
+ * Makefile.in: Regenerate.
+
+2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
+
+ * symtab.h (Symbol::set_nonvis): New function.
+
+2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
+
+ * symtab.cc (Sized_symbol<32>::init_output_data):
+ Instantiate the template.
+ (Sized_symbol<64>::init_output_data): Likewise.
+
+2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
+
+ * symtab.cc (Symbol_table::sized_write_globals): Allow a target to
+ adjust dynamic symbol value.
+ * target.h (Target::adjust_dyn_symbol): New function.
+ (Target::do_adjust_dyn_symbol): New function.
+
+2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
+
+ * output.cc (Output_data_dynamic::Dynamic_entry::write):
+ Get the value of DYNAMIC_CUSTOM dynamic entry.
+ * output.h (Output_data_dynamic::add_custom): New function.
+ (Dynamic_entry::Dynamic_entry): New constructor for DYNAMIC_CUSTOM
+ dynamic entry.
+ (enum Dynamic_entry::Classification): Add DYNAMIC_CUSTOM.
+ * target.h (Target::dynamic_tag_custom_value): New function.
+ (Target::do_dynamic_tag_custom_value): New function.
+
+2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com>
+
+ * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set
+ dynsym indexes.
+ * target.h (Target::has_custom_set_dynsym_indexes): New function.
+ (Target::do_has_custom_set_dynsym_indexes): New function.
+ (Target::set_dynsym_indexes): New function.
+ (Target::do_set_dynsym_indexes): New function.
+
+2014-03-07 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add
+ CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN.
+ (Powerpc_relocate_functions::has_overflow_unsigned): New function.
+ (Powerpc_relocate_functions::has_overflow_bitfield,
+ overflowed): Use the above.
+ (Target_powerpc::Relocate::relocate): Correct overflow checking
+ for a number of relocations. Modify overflow test for 16-bit
+ fields in instructions to signed/unsigned according to whether
+ the field takes a signed or unsigned value.
+
+2014-03-05 Alan Modra <amodra@gmail.com>
+
+ Update copyright years.
+
+2014-03-05 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::Scan::local, global): Support
+ R_PPC64_ADDR64_LOCAL.
+ (Target_powerpc::Relocate::relocate): Likewise.
+
+2014-03-03 Alan Modra <amodra@gmail.com>
+
+ * dwp.cc (print_version): Update copyright year to current.
+
+2014-02-10 Alan Modra <amodra@gmail.com>
+
+ * po/gold.pot: Regenerate.
+
+2014-02-06 Cary Coutant <ccoutant@google.com>
+
+ Fix problem where -u is ignored when a weak undef is seen.
+
+ * archive.cc (Library_base::should_include_member): Reorder
+ code to check for -u option if a weak undef has already been seen.
+ * testsuite/Makefile.am (weak_undef_test_2): New test case.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/weak_undef_file3.cc: New file.
+ * testsuite/weak_undef_file4.cc: New file.
+ * testsuite/weak_undef_test_2.cc: New file.
+
+2014-02-05 Cary Coutant <ccoutant@google.com>
+
+ Fix issues with gold undefined symbol diagnostics.
+
+ PR binutils/15435
+ * errors.cc (Errors::undefined_symbol): Move undef vtable symbol
+ check to here.
+ * target-reloc.h (is_strong_undefined): New function.
+ (relocate_section): Move undef vtable symbol check from here.
+ Check for is_strong_undefined.
+
+2014-02-05 Cary Coutant <ccoutant@google.com>
+
+ Fix problems with the --dynamic-list option.
+
+ PR gold/13577
+ * options.cc (General_options::parse_dynamic_list):
+ Set have_dynamic_list_.
+ (General_options::General_options): Initialize have_dynamic_list_.
+ (General_options::finalize): Turn off -Bsymbolic and
+ -Bsymbolic-functions if --dynamic-list provided.
+ * options.h (General_options::have_dynamic_list): New function.
+ (General_options::have_dynamic_list_): New data member.
+ * symtab.h (Symbol::is_preemptible): Handle --dynamic-list
+ correctly.
+
+ PR gold/16530
+ * symtab.cc (Symbol_table::add_from_relobj): If symbol is named
+ in --dynamic-list, mark it.
+
+ * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case.
+ (dynamic_list_2): New test case.
+ * testsuite/Makefile.in: Regenerate.
+ * testsuite/dynamic_list_2.cc: New file.
+ * testsuite/dynamic_list_2.t: New file.
+ * testsuite/dynamic_list_lib1.cc: New file.
+ * testsuite/dynamic_list_lib2.cc: New file.
+ * testsuite/gc_dynamic_list_test.c: New file.
+ * testsuite/gc_dynamic_list_test.sh: New file.
+ * testsuite/gc_dynamic_list_test.t: New file.
+
+2014-01-28 Cary Coutant <ccoutant@google.com>
+
+ Add .gdb_index version 7 support.
+
+ * gold/dwarf_reader.cc: include <utility> (for make_pair).
+ (Dwarf_abbrev_table::do_read_abbrevs): Check for compressed
+ debug sections.
+ (Dwarf_ranges_table::read_ranges_table): Likewise.
+ (Dwarf_pubnames_table::read_section): Check for GNU-style
+ sections, and for compressed debug sections.
+ (Dwarf_pubnames_table::read_header): Compute end address of table.
+ (Dwarf_pubnames_table::next_name): Return flag_byte. Check
+ for end of list by offset, not by offset == 0.
+ (Dwarf_info_reader::do_read_string_table): Check for compressed
+ debug sections.
+ * gold/dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table):
+ Initialize new data members.
+ (Dwarf_pubnames_table::next_name): return flag_byte.
+ (Dwarf_pubnames_table::end_of_table_): New data member.
+ (Dwarf_pubnames_table::is_gnu_style_): New data member.
+ * gold/gdb-index.cc (gdb_index_version): Update to version 7.
+ (Gdb_index_info_reader::read_pubtable): Read flag_byte.
+ (Gdb_index_info_reader::read_pubnames_and_pubtypes): Don't
+ read skeleton type unit DIEs.
+ (Gdb_index::add_symbol): Add flag_byte; adjust all callers.
+ (Gdb_index::do_write): Write flag_byte.
+ * gold/gdb-index.h (Gdb_index::add_symbol): Add flags parameter.
+ (Gdb_index::Cu_vector): Store flags along with cu indexes.
+ * gold/testsuite/gdb_index_test_3.sh: Allow versions 4-7.
+ * gold/testsuite/gdb_index_test_comm.sh: Likewise.
+
+2014-01-08 H.J. Lu <hongjiu.lu@intel.com>
+
+ * version.cc (print_version): Update copyright year to 2014.
+
+2013-12-19 Dimitry Andric <dimitry@andric.com>
+
+ * stringpool.cc (Stringpool_template::reserve): Add
+ HAVE_UNORDERED_MAP case.
+ * stringpool.cc (Stringpool_template::print_stats): Likewise.
+
+2013-12-18 Cary Coutant <ccoutant@google.com>
+
+ * configure.ac: Check for <unordered_set> and <unordered_map>.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+ * system.h: Use <unordered_set> and <unordered_map> if available.
+
+2013-12-10 Roland McGrath <mcgrathr@google.com>
+
+ * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses
+ with $(INSTALL_PROGRAM_ENV).
+ * Makefile.in: Regenerate.
+
+2013-11-22 Cary Coutant <ccoutant@google.com>
+
+ * configure.ac: Add check for which library is needed for
+ dlopen.
+ * configure: Regenerate.
+
+2013-11-22 Cary Coutant <ccoutant@google.com>
+
+ * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree
+ assembler.
+ * testsuite/Makefile.in: Regenerate.
+
+2013-11-17 H.J. Lu <hongjiu.lu@intel.com>
+
+ * x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags):
+ Handle R_X86_64_PC32_BND and R_X86_64_PLT32_BND just like
+ R_X86_64_PC32 and R_X86_64_PLT32, respectively.
+ (Target_x86_64<size>::Scan::local): Likewise.
+ (Target_x86_64<size>::Scan::global): Likewise.
+ (Target_x86_64<size>::Relocate::relocate): Likewise.
+ (Target_x86_64<size>::Relocatable_size_for_reloc::get_size_for_reloc):
+ Likewise.
+ (Target_x86_64<size>::Scan::check_non_pic(): Handle
+ R_X86_64_PC32_BND.
+
+ * testsuite/Makefile.am (check_PROGRAMS): Add
+ exception_x86_64_bnd_test.
+ (exception_x86_64_bnd_test_SOURCES): New macro.
+ (exception_x86_64_bnd_test_DEPENDENCIES): Likewise.
+ (exception_x86_64_bnd_test_LDFLAGS): Likewise.
+ (exception_x86_64_bnd_test_LDADD): Likewise.
+ (exception_x86_64_bnd_1.o): New rule.
+ (exception_x86_64_bnd_2.o): Likewise.
+ * testsuite/Makefile.in: Regenerated.
+
+2013-11-15 Alan Modra <amodra@gmail.com>
+
+ * powerpc.cc (Target_powerpc::glink_section): Provide non-const
+ accessor.
+ (Target_powerpc::Branch_info::make_stub): Make global entry stubs.
+ Only call ppc64_local_entry_offset for 64-bit. Restrict
+ symval_for_branch lookup to ELFv1.
+ (Stub_table::add_plt_call_entry): Use unsigned int off.
+ (Output_data_glink::Address, invalid_address): New.
+ (Output_data_glink::add_eh_frame): Move out of line. Add
+ support for ELFv2.
+ (Output_data_glink::add_global_entry, find_global_entry,
+ global_entry_address): New functions.
+ (Output_data_glink::global_entry_stubs_, end_branch_table_,
+ ge_size): New variables.
+ (Output_data_glink::set_final_data_size): Add global entry
+ stub sizing.
+ (Output_data_glink::do_write): Write global entry stubs.
+ (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Add target
+ parameter. Return true for ELFv2. Adjust callers.
+ (Target_powerpc::Scan::local, global): Restrict opd lookup to
+ ELFv1. Similarly for ifunc and dynamic relocation processing
+ specific to ELFv1. Recognize that symbols are defined on
+ their plt entries for ELFv2.
+ (Target_powerpc::symval_for_branch): Assert if called for
+ ELFv2 or ppc32.
+ (Target_powerpc::Relocate::relocate): Use global entry plt
+ stub for symbol value if such exists on ELFv2.
+ (Target_powerpc::Relocate::relocate): Don't call
+ symval_for_branch when ELFv2. Do adjust for local entry
+ offset when ELFv2.
+ (Target_powerpc::do_dynsym_value): Set symbols to global entry
+ plt stub for ELFv2.
+ (Target_powerpc::do_plt_address_for_global): Similarly.
+
+2013-11-14 Cary Coutant <ccoutant@google.com>
+
+ Revert patch -- this did not fix the problem, and there is
+ no race there.
+
+ 2013-11-14 Cary Coutant <ccoutant@google.com>
+
+ PR gold/14860
+ * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_.
+ (Ehframe_hdr::set_final_data_size): Allocate a Lock.
+ * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while
+ updating fde_offsets_.
+ (Eh_frame_hdr::lock_): New data member.
+
+2013-11-14 Cary Coutant <ccoutant@google.com>
+
+ * dwp.cc (Dwo_file_entry): New type.
+ (File_list): Use Dwo_file_entry.
+ (Dwo_file::verify): New function.
+ (Dwo_file::verify_dwo_list): New function.
+ (Dwo_file::sized_verify_dwo_list): New function.
+ (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file
+ list.
+ (Dwp_options): New enum type.
+ (dwp_options): Add --verify-only.
+ (usage): Likewise.
+ (main): Likewise.
+ * dwp.h (gold_info): Add declaration.
+