* configure.ac: Apply 2012-09-10 change to config.in here.
[external/binutils.git] / gold / ChangeLog
index 75fda65..5dfee3c 100644 (file)
@@ -1,3 +1,809 @@
+2012-11-05  Alan Modra  <amodra@gmail.com>
+
+       * configure.ac: Apply 2012-09-10 change to config.in here.
+       * configure: Regenerate.
+
+2012-11-05  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
+       (struct Opd_ent): Use "Address" rather than "Offset".
+       (Output_data_got_powerpc::got_base_offset): Return Valtype.
+       (Target_powerpc::got_section): Make public.
+       (Target_powerpc::scan_relocs): Move code setting symbols..
+       (Powerpc_relobj::do_scan_relocs): ..to here, new function.
+       Create _SDA_BASE_ only when referenced.
+
+2012-11-02  Roland McGrath  <mcgrathr@google.com>
+
+       * i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
+       from last change.
+
+2012-11-01  Roland McGrath  <mcgrathr@google.com>
+
+       * target.h (Sized_target::relocate_relocs): Use Elf_Off
+       for offset_in_output_section parameter.
+       (Sized_target::relocate_special_relocatable): Likewise.
+       * arm.cc (Target_arm::relocate_relocs): Likewise.
+       (Target_arm::relocate_special_relocatable): Likewise.
+       * i386.cc (Target_i386::relocate_relocs): Likewise.
+       * powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
+       * sparc.cc (Target_sparc::relocate_relocs): Likewise.
+       * target-reloc.h (relocate_relocs): Likewise.
+       * testsuite/testfile.cc (Target_test): Likewise.
+       * tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
+       * x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
+
+       * system.h: Move inclusion of <clocale> to after <libintl.h> in
+       [ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
+
+       * descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
+       parameter, which is unused in the [!F_SETFD] case.
+
+       * dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
+       SYMNDX to off_t before comparing it to this->data_size().
+       * output.cc (Output_symtab_xindex::endian_do_write): Likewise.
+       * incremental.cc (Output_section_incremental_inputs::do_write):
+       Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
+
+       * nacl.cc: Include "libiberty.h" for vasprintf declaration.
+
+2012-10-30  Steve McIntyre  <steve.mcintyre@linaro.org>
+
+       * gold.cc (Target_arm::do_adjust_elf_header): Add the
+       hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
+       in EABI_VER5.
+
+2012-10-29  Cary Coutant  <ccoutant@google.com>
+
+       * dwp.cc (usage): Add file and exit status parameters;
+       add --help and --version options.
+       (print_version): New function.
+       (main): Add --help and --version options.
+
+2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * testsuite/Makefile.am (MOSTLYCLEANFILES): Add
+       final_layout_sequence.txt.
+       * testsuite/Makefile.in: Regenerated.
+
+2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * testsuite/Makefile.am (COMPILE1): New variable. Renamed from
+       COMPILE generated by automake.
+       (LINK1): Likewise.
+       (CXXCOMPILE1): Likewise.
+       (CXXLINK1): Likewise.
+       (COMPILE): Strip out -Wp,-D_FORTIFY_SOURCE= from COMPILE1.
+       (LINK): Likewise.
+       (CXXCOMPILE): Likewise.
+       (CXXLINK): Likewise.
+       * testsuite/Makefile.in: Regenerated.
+
+2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * dwp.cc (Dwo_file::record_target_info): Issue a fatal error
+       on bad fwrite return.
+
+2012-10-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * dwp.cc (Dwo_file::remap_str_offset): Use section_offset_type
+       on val.
+
+2012-10-23  Cary Coutant  <ccoutant@google.com>
+
+       * testsuite/Makefile.am (TEST_OBJCOPY): New macro.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/dwp_test.h: New source file.
+       * testsuite/dwp_test_1.cc: New source file.
+       * testsuite/dwp_test_1.s: New source file.
+       * testsuite/dwp_test_1.sh: New source file.
+       * testsuite/dwp_test_1b.cc: New source file.
+       * testsuite/dwp_test_1b.s: New source file.
+       * testsuite/dwp_test_2.cc: New source file.
+       * testsuite/dwp_test_2.s: New source file.
+       * testsuite/dwp_test_2.sh: New source file.
+       * testsuite/dwp_test_main.cc: New source file.
+       * testsuite/dwp_test_main.s: New source file.
+
+2012-10-23  Cary Coutant  <ccoutant@google.com>
+
+       * dwp.h: New header file.
+       * dwp.cc: New source file.
+       * gold.h: Move shared declarations to system.h.
+       * system.h: New header file.
+       * Makefile.am: Add dwp.
+       * Makefile.in: Regenerate.
+
+2012-10-23  Cary Coutant  <ccoutant@google.com>
+
+       * dwarf_reader.cc (Dwarf_ranges_table::read_range_list): Call
+       Dwarf_info_reader::read_from_pointer.
+       (Dwarf_pubnames_table::read_header): Likewise.
+       (Dwarf_pubnames_table::next_name): Likewise.
+       (Dwarf_die::read_attributes): Likewise.
+       (Dwarf_die::skip_attributes): Likewise.
+       (Dwarf_info_reader::read_from_pointer): New function template.
+       * dwarf_reader.h (Dwarf_ranges_table): Add dwinfo_.
+       (Dwarf_pubnames_table): Likewise.
+       (Dwarf_info_reader::read_from_pointer): New function template.
+       * gdb-index.cc (Gdb_index_info_reader): Adjust call to
+       Dwarf_pubnames_table ctor.
+
+2012-10-23  Cary Coutant  <ccoutant@google.com>
+
+       * dwarf_reader.cc (Dwarf_info_reader::do_parse): Use stored
+       abbrev_shndx.
+       * dwarf_reader.h (Dwarf_info_reader::Dwarf_info_reader): Initialize
+       abbrev_shndx_.
+       (Dwarf_info_reader::set_abbrev_shndx): New method.
+       (Dwarf_info_reader::abbrev_shndx_): New data member.
+
+2012-10-23  Cary Coutant  <ccoutant@google.com>
+
+       * dwarf_reader.cc (make_elf_reloc_mapper): Check size and endianness
+       from object, not parameters.
+       (Dwarf_info_reader::parse): Likewise.
+       * object.h (Relobj::elfsize, Relobj::is_big_endian): New methods.
+       (Relobj::do_elfsize, Relobj::do_is_big_endian): New methods.
+       (Sized_relobj::do_elfsize, Sized_relobj::do_is_big_endian): New
+       methods.
+
+2012-10-23  Cary Coutant  <ccoutant@google.com>
+
+       * fileread.cc (Input_file::Input_file): New constructor.
+       * fileread.h (class Input_file): Add new constructor.
+
+2012-10-18  Alan Modra  <amodra@gmail.com>
+
+       PR gold/14727
+       * object.cc (Relobj::is_section_name_included): Also match
+       .sdata personality section.
+
+2012-10-18  Alan Modra  <amodra@gmail.com>
+
+       * target-reloc.h (class Default_comdat_behavior): New, package up..
+       (get_comdat_behaviour): ..this.
+       (relocate_section): Add Relocate_comdat_behavior template arg,
+       adjust code to suit.
+       * arm.cc (Target_arm::relocate_section): Adjust to suit.
+       (Target_arm::scan_reloc_section): Likewise.
+       * i386.cc (Target_i386::relocate_section): Likewise.
+       * sparc.cc (Target_sparc::relocate_section): Likewise.
+       * tilegx.cc (Target_tilegx::relocate_section): Likewise.
+       * x86_64.cc (Target_x86_64::relocate_section): Likewise.
+       * powerpc.cc (class Relocate_comdat_behavior): New.
+       (Target_powerpc::relocate_section): Don't zap opd relocs.  Supply
+       gold::relocate_section with new template arg.
+
+2012-10-18  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Target_powerpc::Scan::local, global): Always emit
+       dynamic relocs for GOT_TPREL got entries, without symbol if
+       resolving locally.
+       (Target_powerpc::do_gc_add_reference): Don't add for dynamic objects.
+       (Target_powerpc::scan_relocs): Define _GLOBAL_OFFSET_TABLE_ early.
+       (Target_powerpc::Relocate:relocate): REL32 reloc may be unaligned.
+
+2012-10-17  Alan Modra  <amodra@gmail.com>
+
+       PR gold/14726
+       * gold.cc (queue_middle_tasks): Call gc_mark_symbol on _init and _fini.
+
+2012-10-16  Sriraman Tallam  <tmsriram@google.com>
+
+       * layout.cc (Layout::include_section): Keep sections marked
+       SHF_EXCLUDE when doing relocatable links.
+
+2012-10-16  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Target_powerpc::define_save_restore_funcs): New func.
+       (Target_powerpc::do_finalize_sections): Call it.
+       (Output_data_save_res): New class and supporting functions.
+       (Target_powerpc::symval_for_branch): Only look up .opd entry for
+       normal symbols defined in object files.
+
+2012-10-12  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Powerpc_relobj::add_gc_mark, process_gc_mark): New.
+       (struct Opd_ent): Make "discard" a bit field.  Add "gc_mark".
+       (Target_powerpc::do_gc_mark_symbol): Delay marking function code
+       section if scan_opd_relocs not yet called.
+       (Target_powerpc::gc_process_relocs): Call process_gc_mark.
+
+2012-10-12  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
+       add_local_ifunc_entry): Revert last change.
+       (Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Likewise.
+
+2012-10-05  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Target_powerpc::do_plt_address_for_local,
+       do_plt_address_for_global): New functions.
+       (Output_data_got_powerpc::do_write): Don't segfault when linking
+       statically.
+       (Output_data_plt_powerpc::add_entry, add_ifunc_entry,
+       add_local_ifunc_entry): Return true on adding entry..
+       (Target_powerpc::make_plt_entry): ..use to avoid unnecessary
+       glink->add_entry call.  Remove unused symtab param.  Adjust calls.
+       (Target_powerpc::make_local_ifunc_plt_entry): Likewise.
+       (Target_powerpc::make_iplt_section): Remove symtab param.  Don't
+       set up symbols here.
+       (Target_powerpc::do_finalize_sections): Instead set up __rela_iplt
+       syms here.  Do so even when no .iplt.  Don't segfault when linking
+       statically.
+       (Output_data_glink::add_entry, find_entry): Rearrange params.  Add
+       new variants without reloc param.
+       (Glink_sym_ent::Glink_sym_ent): Likewise.
+       (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Accept any
+       reloc when refs will resolve to plt call stub.
+       (Target_powerpc::Scan::local): Correct ifunc handling.  Allow
+       R_PPC_PLTREL24 to resolve locally.
+       (Target_powerpc::Scan::global): Correct ifunc handling.
+       (Target_powerpc::Relocate::relocate): Correct local sym glink
+       lookup.  Don't destroy "value" when we have a plt call stub,
+       and when checking plt call validity.
+       (Target_powerpc::do_dynsym_value): Simplify.
+
+2012-10-05  Alan Modra  <amodra@gmail.com>
+
+       * i386.cc (Output_data_plt_i386::address_for_global,
+       address_for_local): Add plt offset to returned value.  Adjust uses.
+       * sparc.cc (Output_data_plt_sparc::address_for_global,
+       address_for_local): Likewise.
+       * tilegx.cc (Output_data_plt_tilegx::address_for_global,
+       address_for_local): Likewise.
+       * x86_64.cc (Output_data_plt_x86_64::address_for_global,
+       address_for_local): Likewise.
+       * target.h (Target::plt_address_for_global, plt_address_for_local):
+       Update comment.
+       * output.cc (Output_reloc::symbol_value): Don't add plt offset here.
+       (Output_data_got::Got_entry::write): Nor here.
+       * output.h: Comment fix.
+
+2012-10-02  Jiong Wang  <jiwang@tilera.com>
+
+       * tilegx.cc (Target_tilegx::do_finalize_sections): Adjust
+       global_offset_table_ value for larget got.
+       (Target_tilegx::Relocate::relocate): Handle adjusted got value.
+
+2012-09-29  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Target_powerpc::iplt_): New output section.
+       (Target_powerpc::iplt_section, make_iplt_section,
+       reloc_needs_plt_for_ifunc, make_local_ifunc_plt_entry): New functions.
+       (Target_powerpc::make_plt_entry): Handle ifunc syms.
+       Target_powerpc::plt_entry_count): Count iplt entries too.
+       (Output_data_plt_powerpc::Output_data_plt_powerpc): Don't create
+       reloc section in constructor.  New params.
+       (Target_powerpc::make_plt_section): Create reloc section here instead.
+       (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): New
+       functions.
+       (Output_data_plt_powerpc::initial_plt_entry_size_, name_): New vars.
+       (Output_data_glink::add_entry, find_entry): New functions to
+       deal with local syms.
+       (Glink_sym_ent): Add support for local syms.
+       (Output_data_glink::do_write): Handle ifunc plt entries.
+       (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
+       (Target_powerpc::Scan::local, global): Handle ifunc syms.
+       (Target_powerpc::Relocate::relocate): Likewise.
+       (Target_powerpc::do_dynsym_value): Use glink stub, not plt entry.
+
+2012-09-25  Alan Modra  <amodra@gmail.com>
+
+       * object.h (Sized_relobj_file::adjust_local_symbol,
+       do_adjust_local_symbol): New functions.
+       * object.cc (Sized_relobj_file::do_count_local_symbols): Use the above.
+       * powerpc.cc (Powerpc_relobj::do_adjust_local_symbol): New function.
+       (Powerpc_relobj::scan_opd_relocs): Warn on unexpected opd relocs
+       and irregular opd entry spacing.
+       (Powerpc_relobj::do_read_relocs): Add opd size checks.
+       (Global_symbol_visitor_opd): New functor.
+       (Target_powerpc::do_finalize_sections): Omit global symbols defined
+       on deleted opd entries.
+
+2012-09-15  Jiong Wang  <jiwang@tilera.com>
+
+       * tilegx.cc: New file.
+       * Makefile.am (TARGETSOURCES): Add tilegx.cc
+       (ALL_TARGETOBJS): Add tilegx.$(OBJEXT)
+       * configure.tgt: Add entries for tilegx*.
+       * configure.ac: Likewise.
+       * Makefile.in: Rebuild.
+       * configure: Likewise.
+       * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Handle
+       tilegx.
+
+2012-09-13  Alan Modra  <amodra@gmail.com>
+
+       * target-reloc.h (scan_relocs): Call scan.local for relocs
+       against symbols in discarded sections.  Pass is_discarded
+       param.
+       * arm.cc, * i386.cc, * sparc.cc, * x86_64.cc (Target_*::Scan::local):
+       Add is_discarded param.
+       * powerpc (Target_powerpc::Scan::local): Likewise.  Use
+       is_discarded to flag opd entry as discarded.  Don't emit dyn
+       relocs on such entries.
+       (Target_powerpc::Scan::global): Similarly detect and handle
+       such opd entries.
+       (Powerpc_relobj): Replace opd_ent_shndx_ and opd_ent_off_ with
+       opd_ent_.  Update all uses.
+       (Powerpc_relobj::get_opd_discard, set_opd_discard): New functions.
+       (Target_powerpc::relocate_section): Zero out discarded opd
+       entry relocs.
+
+2012-09-12  Ian Lance Taylor  <iant@google.com>
+
+       PR gold/14570
+       * output.cc: Rename Output_data_got template parameter from size
+       to got_size for all functions.  Compile all variants of
+       Output_data_got.
+       (Output_data_got::Got_entry::write): Correct use of size for
+       symbol value.  Use local_is_tls rather than casting to
+       Sized_relobj_file.
+       * object.h (class Object): Add local_is_tls and do_local_is_tls.
+       (class Sized_relobj_file): Add do_local_is_tls.
+       * incremental.h (class Sized_relobj_incr): Add do_local_is_tls.
+
+2012-09-11  Alan Modra  <amodra@gmail.com>
+
+       PR gold/14566
+       * layout.cc (Layout::set_segment_offsets): When using
+       common-page-size alignment, ensure we are on a new max-page-size
+       page.
+       * output.cc (Output_segment::set_section_addresses): Use
+       abi_pagesize, not common_pagesize for relro boundary.
+       (Output_segment::set_offset): Likewise.
+
+2012-09-11  Alan Modra  <amodra@gmail.com>
+
+       * output.h (Output_data_got::add_global_tls, add_local_tls,
+       add_local_tls_pair): New functions.
+       (Output_data_got::add_local_pair_with_rel): Remove second
+       reloc param.  Expand comment.
+       (Output_data_got::Got_entry): Rename use_plt_offset_ to
+       use_plt_or_tls_offset_, similarly for constructor param.
+       (Output_data_got::Got_entry::write): Add got_index param.
+       * output.cc (Output_data_got::add_global_tls, add_local_tls,
+       add_local_tls_pair): New functions.
+       (Output_data_got::Got_entry::write): Handle tls symbols
+       with use_plt_or_tls_offset_ set specially.
+       (Output_data_got::add_local_pair_with_rel): Only one reloc.
+       (Output_data_got::do_write): Replace iterator with index, pass
+       index to entry write function.
+       * target.h (Target::tls_offset_for_local, tls_offset_for_global,
+       do_tls_offset_for_local, do_tls_offset_for_global): New functions.
+       * arm.cc (Target_arm::Scan::local): Update add_local_pair_with_rel
+       call.
+       * i386.cc (Target_i386::Scan::local): Likewise.
+       * sparc.cc (Target_sparc::Scan::local): Likewise.
+       * x86_64.cc (Target_x86_64::Scan::local): Likewise.
+       * powerpc.cc (Target_powerpc::do_tls_offset_for_local,
+       do_tls_offset_for_global): New functions.
+       (Target_powerpc::Scan::local): Correct TLS relocations and got
+       entry values.
+       (Target_powerpc::Scan::global): Don't emit unnecessary
+       dynamic relocations on TLS GOT entries.
+
+2012-09-10  Matthias Klose  <doko@ubuntu.com>
+
+       * config.in: Disable sanity check for kfreebsd.
+
+2012-09-10  Sterling Augustine  <saugustine@google.com>
+
+       * gdb-index.cc (Gdb_index::pubnames_read): New parameter.
+       (Gdb_index::pubtypes_read): New parameter.
+       (Gdb_index_info_reader::read_pubnames_and_pubtypes): Add parameters
+       to calls.
+       * gdb-index.h (Gdb_index): New fields pubnames_object_ and
+       pubtypes_object_.
+
+2012-09-09  Alan Modra  <amodra@gmail.com>
+
+       * target.h (Target::gc_mark_symbol, do_gc_mark_symbol): New functions.
+       (Sized_target::gc_add_reference, do_gc_add_reference): New functions.
+       * gc.h (gc_process_relocs): Call target gc_add_reference.
+       * gold.cc (queue_middle_tasks): Use gc_mark_symbol on start sym.
+       * symtab.cc (Symbol_table::gc_mark_undef_symbols): Use gc_mark_symbol.
+       (Symbol_table::gc_mark_symbol): Call target gc_mark_symbol. Remove
+       unnecessary cast.
+       * powerpc.cc (Powerpc_relobj::get_opd_ent): Rearrange parameters
+       to cater for when we don't need code offset.  Update use.
+       (Powerpc_relobj::access_from_map_, opd_valid_): New vars.
+       (Powerpc_relobj::access_from_map, add_reference, opd_valid,
+       set_opd_valid): New functions.
+       (Target_powerpc::do_gc_add_reference): New function.
+       (Target_powerpc::gc_process_relocs): Call gc()->add_reference on
+       stashed refs.
+       (Target_powerpc::do_gc_mark_symbol): New function.
+
+2012-09-06  Cary Coutant  <ccoutant@google.com>
+
+       * dwarf_reader.cc (Dwarf_die::read_attributes): Add
+       DW_FORM_GNU_addr_index and DW_FORM_GNU_str_index.
+       (Dwarf_die::skip_attributes): Likewise.
+       * object.cc (Read_symbols_data::~Read_symbols_data): Update comment.
+       * testsuite/gdb_index_test.cc (inline_func_1): New function.
+       (main): Call it.
+       * testsuite/gdb_index_test_comm.sh: Check index for inline function.
+
+2012-09-05  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * testsuite/script_test_3.t: Add .got.plt output section
+       statement.
+       * testsuite/script_test_4.t: Likewise.
+
+2012-09-05  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Powerpc_relocate_functions): Upcase enum values,
+       update all uses and lose "enum" when using type.
+
+2012-09-05  Alan Modra  <amodra@gmail.com>
+
+       * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): False for powerpc.
+       * configure: Regenerate.
+       * testsuite/Makefile.am (final_layout.stdout): Pass --synthetic to nm.
+       (plugin_final_layout.stdout): Likewise.
+       (memory_test): Set page sizes to 0x1000.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/discard_locals_test.sh: Add FIXME comment.
+       * testsuite/justsyms_exec.c: Disable function test for powerpc64.
+       * testsuite/pr14265.t: Add .got output section statement.
+       * testsuite/script_test_2.t: Likewise.
+       * testsuite/script_test_3.t: Likewise.
+       * testsuite/script_test_4.t: Likewise.
+       * testsuite/script_test_5.t: Likewise.
+       * testsuite/script_test_6.t: Likewise.
+       * testsuite/script_test_7.t: Likewise.
+       * testsuite/script_test_9.t: Likewise.
+
+2012-09-05  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Powerpc_relobj::get_opd_ent): Make const.
+       (Powerpc_relocate_functions::Status): New typedef.
+       (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
+       (Target_powerpc::Scan::local): Handle REL64.
+       (Target_powerpc::Scan::global): Likewise, and dynamic relocs
+       for REL32 and REL64.
+       (Target_powerpc::symval_for_branch): New function, extracted from..
+       (Target_powerpc::Relocate::relocate): ..here.  Correct plt call
+       checks.  Report overflow errors.
+
+2012-09-05  Alan Modra  <amodra@gmail.com>
+
+       * object.h (Sized_relobj_file::emit_relocs): Delete.
+       (Sized_relobj_file::emit_relocs_reltype): Delete.
+       * reloc.cc (Sized_relobj_file::do_relocate_sections): Call target
+       relocate_relocs for --emit-relocs.
+       (Sized_relobj_file::emit_relocs, emit_relocs_reltype): Delete.
+       * output.h: Update comment.
+       (Output_segment::first_section): New function.
+       (Output_segment::first_section_load_address): Use first_section.
+       * output.cc (Output_segment::first_section): New function extracted..
+       (Output_segment::first_section_load_address): ..from here.  Delete.
+       * target-reloc.h (relocate_for_relocatable): Rename to relocate_relocs.
+       * target.h (Sized_target::relocate_for_relocatable): Likewise.
+       * arm.cc (Target_arm::relocate_for_relocatable): Likewise, and
+       adjust call to target.h function.
+       * i386.cc (Target_i386): Likewise.
+       * sparc.cc (Target_sparc): Likewise.
+       * x86_64.cc (Target_x86_64): Likewise.
+       * powerpc.cc (Target_powerpc): Likewise.
+       (Target_powerpc::Scan::local, global): Handle R_POWERPC_TLS.  Ensure
+       first tls section has section symbol for optimised local dynamic
+       output relocs.
+       (Target_powerpc::Relocate::relocate): Correct local dynamic value.
+       (Target_powerpc::relocate_relocs): Adjust relocs emitted for
+       optimised tls code.
+       * testsuite/testfile.cc (Target_test::relocate_for_relocatable):
+       Rename to relocate_relocs.  Update error message.
+
+2012-09-04  Andreas Schwab  <schwab@linux-m68k.org>
+
+       * powerpc.cc (do_make_elf_object): Allow ET_EXEC files with
+       --just-symbols.
+
+2012-08-31  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Powerpc_relobj): Add and use Address typedef.
+       (Powerpc_relobj::toc_base_offset): New stub function.
+       (Target_powerpc): Add tp_offset, dtp_offset.  Rename
+       got_mod_index_offset to tlsld_got_offset.  Update all refs.
+       (Target_powerpc::Relocate::enum skip_tls): New.
+       (Target_powerpc::call_tls_get_addr_): New var.
+       (Target_powerpc::is_branch_reloc): Move to file scope.
+       (Target_powerpc::relocate_tls, optimize_tls_reloc): Delete.
+       (Target_powerpc::optimize_tls_gd, optimize_tls_ld, optimize_tls_ie):
+       New functions.
+       (Target_powerpc::enum Got_type): Delete old values, add new ones.
+       (powerpc_info): Correct common_pagesize for ppc64.
+       (at_tls_transform, needs_dynamic_reloc, use_plt_offset): New functions.
+       (Powerpc_relocate_functions): Add overflow check enums and functions.
+       Add non-shift version of rela, rela_ua.  Delete all rel public
+       functions.  Delete addr16_lo.  Add addr64, addr64_u, addr32,
+       addr32_u, addr24, addr16_u, addr16_hi2, addr16_ha2, addr16_hi3,
+       addr16_ha3, addr14 functions.
+       (Output_data_got_powerpc::add_constant_pair): New function.
+       (Output_data_got_powerpc::got_base_offset): Likewise.
+       (Output_data_got_powerpc::do_write): Correct 64-bit got header.
+       (instruction constants): Sort, add some more.
+       (Output_data_glink::do_write): Add and use Address typedef.  Use
+       object->toc_base_offset() stub for 64-bit.
+       (Target_powerpc::tlsld_got_offset): Use add_constant_pair.
+       (Target_powerpc::Scan::get_reference_flags): Handle more relocs.
+       (Target_powerpc::Scan::local, global): Emit relative dynamic reloc
+       for R_PPC64_TOC.  Handle more relocs.  Generate got entries for TLS.
+       Always treat .opd relocs as against locally defined symbol.
+       Correct condition for RELATIVE relocs.
+       (Target_powerpc::do_finalize_sections): Test for NULL sections.
+       (Target_powerpc::Relocate::relocate): Use plt call stub as value
+       for 32-bit syms with a plt entry.  Correct ppc64 toc base
+       calculations.  Handle TLS relocs, and more.  Add overflow
+       checking and adjust for Powerpc_relocate_functions changes.
+       (Target_powerpc::relocate_for_relocatable): Handle zero r_sym.
+       Reinstate --emit-relocs code with FIXME.
+
+2012-08-30  Alan Modra  <amodra@gmail.com>
+
+       * layout.cc (Layout::set_segment_offsets): Set p_align to
+       abi_pagesize, not common_pagesize.
+       (Layout::relaxation_loop_body): Similarly use abi_pagesize
+       to determine whether file header can go in segment.
+
+2012-08-30  Alan Modra  <amodra@gmail.com>
+
+       * output.h (Output_reloc::Output_reloc <output section>): Add
+       is_relative param.  Adjust calls.
+       (Output_reloc::add_output_section_relative): New functions.
+       * output.cc (Output_reloc::Output_reloc <output section>): Handle
+       is_relative.
+       (Output_reloc::symbol_value): Handle SECTION_CODE.
+
+2012-08-24  Sriraman Tallam  <tmsriram@google.com>
+
+       * gold.cc (queue_middle_tasks): Call layout again when unique
+       segments for sections is desired.
+       * layout.cc (Layout::Layout): Initialize new members.
+       (Layout::get_output_section_flags): New function.
+       (Layout::choose_output_section): Call get_output_section_flags.
+       (Layout::layout): Make output section for mapping to a unique segment.
+       (Layout::insert_section_segment_map): New function.
+       (Layout::attach_allocated_section_to_segment): Make unique segment for
+       output sections marked so.
+       (Layout::segment_precedes): Check for unique segments when sorting.
+       * layout.h (Layout::Unique_segment_info): New struct.
+       (Layout::Section_segment_map): New typedef.
+       (Layout::insert_section_segment_map): New function.
+       (Layout::get_output_section_flags): New function.
+       (Layout::is_unique_segment_for_sections_specified): New function.
+       (Layout::set_unique_segment_for_sections_specified): New function.
+       (Layout::unique_segment_for_sections_specified_): New member.
+       (Layout::section_segment_map_): New member.
+       * object.cc (Sized_relobj_file<size, big_endian>::do_layout):
+       Rename is_gc_pass_one to is_pass_one.
+       Rename is_gc_pass_two to is_pass_two.
+       Rename is_gc_or_icf to is_two_pass.
+       Check for which pass based on whether symbols data is present.
+       Make it two pass when unique segments for sections is desired.
+       * output.cc (Output_section::Output_section): Initialize new
+       members.
+       * output.h (Output_section::is_unique_segment): New function.
+       (Output_section::set_is_unique_segment): New function.
+       (Output_section::is_unique_segment_): New member.
+       (Output_section::extra_segment_flags): New function.
+       (Output_section::set_extra_segment_flags): New function.
+       (Output_section::extra_segment_flags_): New member.
+       (Output_section::segment_alignment): New function.
+       (Output_section::set_segment_alignment): New function.
+       (Output_section::segment_alignment_): New member.
+       (Output_segment::Output_segment): Initialize is_unique_segment_.
+       (Output_segment::is_unique_segment): New function.
+       (Output_segment::set_is_unique_segment): New function.
+       (Output_segment::is_unique_segment_): New member.
+       * plugin.cc (allow_unique_segment_for_sections): New function.
+       (unique_segment_for_sections): New function.
+       (Plugin::load): Add new functions to transfer vector.
+       * Makefile.am (plugin_final_layout.readelf.stdout): Add readelf output.
+       * Makefile.in: Regenerate.
+       * testsuite/plugin_final_layout.sh: Check if unique segment
+       functionality works.
+       * testsuite/plugin_section_order.c (onload): Check if new interfaces
+       are available.
+       (allow_unique_segment_for_sections): New global.
+       (unique_segment_for_sections): New global.
+       (claim_file_hook): Call allow_unique_segment_for_sections.
+       (all_symbols_read_hook): Call unique_segment_for_sections.
+
+2012-08-22  Cary Coutant  <ccoutant@google.com>
+
+       * layout.cc (Layout::include_section): Don't assert on GROUP
+       sections with --emit-relocs.
+
+2012-08-21  Cary Coutant  <ccoutant@google.com>
+
+       * symtab.cc (Symbol_table::gc_mark_undef_symbols): Don't assert
+       if --export-dynamic-symbol names an undef symbol.
+
+2012-08-18  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc: Formatting and white space.
+       (Powerpc_relobj): Rename got2_section_ to special_.
+       Add opd_ent_shndx_ and opd_ent_off_ vectors.
+       (Powerpc_relobj::opd_shndx, init_opd, get_opd_ent, set_opd_ent,
+       scan_opd_relocs, do_read_relocs, opd_ent_ndx): New functions.
+       (Target_powerpc): Add Address typedef and invalid_address.  Use
+       throughout.
+       (Target_powerpc::is_branch_reloc): New function.
+       (Powerpc_relocate_functions): Add Address typedef, use throughout.
+       (Powerpc_relocate_functions:rela, rela_ua): Correct type used
+       for dst_mask, value and addend.
+       (Powerpc_relobj::do_find_special_sections): Find .opd for 64-bit.
+       (ld_2_1, cror_15_15_15, cror_31_31_31): New insn constants.
+       (Output_data_glink::do_write): Correct toc base.  Don't try to use
+       uint16_t for 24-bit offset.  Use get_output_section_offset and
+       check return.
+       (Target_powerpc::Scan::local): Handle more relocs.
+       (Target_powerpc::do_finalize_sections): Set up DT_PPC64_GLINK.
+       (Target_powerpc::Relocate::relocate): Correct toc base calculation.
+       Plug in toc restoring insn after plt calls.  Translate branches
+       to function descriptor symbols to corresponding entry point.
+       (Target_powerpc::relocate_for_relocatable): Check return from
+       get_output_section_offset.
+       * symtab.h: Comment typo.
+
+2012-08-14  Ian Lance Taylor  <iant@google.com>
+
+       * x86_64.cc (Target_x86_64::Scan::global): Fix erroneous call to
+       unsupported_relocal_local to call unsupported_reloc_global.
+
+2012-08-14  Nick Clifton  <nickc@redhat.com>
+
+       PR ld/14265
+       * script-sections.cc (Sections_element::output_section_name): Add
+       keep return parameter.
+       (Output_section_element::match_name): Add keep return parameter.
+       Return the value of the keep_ member.
+       * script-sections.h (class Output_section): Update
+       output_section_name prototype.
+       * layout.cc (Layout::keep_input_section): New public member
+       function.
+       (Layout::choose_output_section): Pass keep parameter to
+       output_section_name.
+       * layout.h (class Layout): Add keep_input_section.
+       * object.cc (Sized_relobj_file::do_layout): Check for kept input
+       sections.
+       * testsuite/Makefile.am: Add a test.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/pr14265.c: Source file for the test.
+       * testsuite/pr14265.t: Linker script for the test.
+       * testsuite/pr14265.sh: Shell script for the test.
+
+2012-08-14  Alan Modra  <amodra@gmail.com>
+
+       * target.h (Target::output_section_name): New function.
+       (Target::do_output_section_name): New function.
+       * layout.cc (Layout::choose_output_section): Call the above.
+       * powerpc.cc (Target_powerpc::do_output_section_name): New function.
+
+2012-08-14  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc: Update for renamed R_PPC_REL16 relocs.
+       (Output_data_got_powerpc::do_write): Don't rely on base class lookup
+       for replace_constant call.
+       (Output_data_plt_powerpc::do_print_to_mapfile): New function.
+       (Output_data_glink::do_print_to_mapfile): New function.
+       (Target_powerpc::Scan::local): Ignore R_PPC64_TOCSAVE.
+       (Target_powerpc::Relocate::relocate): Likewise.
+
+2012-08-14  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc (Powerpc_relobj::set_got2_shndx): Delete.
+       (Powerpc_relobj::do_find_special_sections): Don't use set_got2_shndx.
+       (Output_data_glink::add_entry,find_entry): Remove shndx param.
+       (class Glink_sym_ent): Rename from struct Glink_sym_ent.  Remove
+       all references to shndx_.  Handle special case for R_PPC_PLTREL24
+       here.
+       (class Glink_sym_ent_hash): Rename from struct Glink_sym_ent_hash.
+       (Output_data_glink::do_write): Retrieve got2_shdnx from object.
+       (Target_powerpc::make_plt_entry): Don't special case R_PPC_PLTREL24
+       here.
+       (Target_powerpc::Scan::global): Nor on make_plt_entry call.
+       (Target_powerpc::Relocate::relocate): Nor on glink->find_entry call.
+
+2012-08-12  Alan Modra  <amodra@gmail.com>
+
+       * powerpc.cc: Whitespace fixes.  Wrap overly long lines.
+       (glink insn constants): Use uint32_t.
+       (Output_data_glink::add_entry): Use insert, not [] operator.
+
+2012-08-11  Alan Modra  <amodra@gmail.com>
+
+       * object.h (Sized_relobj_file::find_shdr): New function.
+       (Sized_relobj_file::find_special_sections): New function.
+       * object.cc (Sized_relobj_file::find_shdr): New function.
+       (Sized_relobj_file::find_eh_frame): Use find_shdr.
+       (Sized_relobj_file::find_special_sections): New function, split out..
+       (Sized_relobj_file::do_read_symbols): ..from here.
+       * output.h (Output_data_got::replace_constant): New function.
+       (Output_data_got::num_entries): New function.
+       (Output_data_got::last_got_offset,set_got_size): Use num_entries.
+       (Output_data_got::got_offset): Protected rather than private.
+       (Output_data_got::replace_got_entry): New function.
+       * output.cc (Output_data_got::replace_got_entry): New function.
+       * powerpc.cc (class Powerpc_relobj): New.
+       (class Powerpc_relocate_functions): Delete all psymval variants or
+       convert to value,addend type.  Delete pcrela, pcrela_unaligned.
+       Implement _ha functions using corresponding _hi function.
+       (Powerpc_relobj::find_special_sections): New function.
+       (Target_powerpc::do_make_elf_object): New function.
+       (class Output_data_got_powerpc): New.
+       (class Output_data_glink): New.
+       (class Powerpc_scan_relocatable_reloc): New.
+       Many more changes througout file.
+
+2012-08-09  Nick Clifton  <nickc@redhat.com>
+
+       * po/vi.po: Updated Vietnamese translation.
+
+2012-08-07  Ian Lance Taylor  <iant@google.com>
+
+       * layout.cc (Layout::add_target_dynamic_tags): If
+       dynrel_includes_plt but no dyn_rel, emit dynamic reloc tags for
+       plt_rel.
+
+2012-07-30  Nick Clifton  <nickc@redhat.com>
+
+       * po/gold.pot: Updated template.
+       * po/es.po: Updated Spanish translation.
+
+2012-07-18  Cary Coutant  <ccoutant@google.com>
+
+       PR gold/14344
+       * configure.ac: Add check for -gpubnames support.
+       * configure: Regenerate.
+       * testsuite/Makefile.am (gdb_index_test_1): Add check for -gpubnames
+       support; force -gno-pubnames.
+       (gdb_index_test_2, gdb_index_test_3): Add check for -gpubnames
+       support.
+       (gdb_index_test_4): New test.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/gdb_index_test_1.sh: Refactor code into common file.
+       * testsuite/gdb_index_test_2.sh: Likewise.
+       * testsuite/gdb_index_test_3.sh: Don't look for space after colon.
+       * testsuite/gdb_index_test_4.sh: New script.
+       * testsuite/gdb_index_test_comm.sh: New script with common code;
+       don't look for space after colon.
+
+2012-07-16  Sriraman Tallam  <tmsriram@google.com>
+
+       * gold.cc (queue_middle_tasks): Update function order only after
+       deferred objects due to plugins are processed.
+
+2012-07-11  Ian Lance Taylor  <iant@google.com>
+
+       * arm.cc (Arm_relocate_functions::abs16): Remove unused typedef.
+       (Arm_exidx_cantunwind::do_fixed_endian_write): Likewise.
+       (Target_arm::scan_reloc_for_stub): Likewise.
+       * common.cc (Symbol_table::do_allocate_commons_list): Likewise.
+       * dwarf_reader.cc (Dwarf_die::skip_attributes): Likewise.
+       * ehframe.cc (Eh_frame::do_add_ehframe_input_section): Likewise.
+       * incremental.cc (Sized_incr_dynobj::do_add_symbols): Likewise.
+       * powerpc.cc (Target_powerpc::relocate_tls): Likewise.
+
+2012-07-10  Dodji Seketeli  <dodji@redhat.com>
+           Ian Lance Taylor  <iant@google.com>
+
+       PR gold/14309
+       * configure.ac: Test whether std::tr1::hash<off_t> works.
+       * gold.h: Add a specialization for std::tr1::hash<off_t> if
+       needed.
+       * output.h (class Output_fill): Add virtual destructor.
+       * configure, config.in: Rebuild.
+
+2012-06-22  Roland McGrath  <mcgrathr@google.com>
+
+       * layout.cc (finalize): Define __ehdr_start symbol if applicable.
+
 2012-06-12  Rafael Ávila de Espíndola <respindola@mozilla.com>
 
        * plugin.cc (Plugin::load): Handle position independent executables.
 
 2010-05-26  Rafael Espindola  <espindola@google.com>
 
-       PR 11604
+       PR 11604
        * gold/object.cc(Sized_relobj::do_layout_deferred_sections): Avoid
        adding sections the garbage collector removed.
        * gold/testsuite/Makefile.am: Add test.
 2010-01-08  Doug Kwan  <dougkwan@google.com>
 
        * arm.cc (Stub_table::Stub_table): Initalize cortex_a8_stubs_,
-         prev_data_size_ and prev_addralign_.  Remove initializer for
-         deleted data member has_been_changed_.
-         (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
-         to determine if the table is empty.
-         (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
-         Remove.
-         (Stub_table::add_reloc_stub): Define method in class definition
-         instead of just declaring it there.
-         (Stub_table::add_cortex_a8_stub): New method definition.
-         (Stub_table::update_data_size_and_addralign): Ditto.
-         (Stub_table::finalize_stubs): Ditto.
-         (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
-         (Stub_table::do_addralign_): Return address alignment in the
-         (Stub_table::do_reset_address_and_file_offset): Define method in
-         class definition instead of declaring it there.  Set current data
-         size to be the data size of the previous pass.
-         (Stub_table::set_final_data_size): Use current data size as the
-         final data size.
-         (Stub_table::relocate_stub): Change parameter type of stub from
-         Reloc_stub pointer to Stub pointer.
-         (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
-         (Stub_table::Cortex_a8_stub_list): New typedef.
-         (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
-          Stub_table::prev_addralign_): New data member.
-         (Arm_relobj::Arm_relobj): Initialize data member
-         section_has_cortex_a8_workaround_.
-         (Arm_relobj::section_has_cortex_a8_workaround,
-          Arm_relobj::mark_section_for_cortex_a8_workaround): New method
-          definitions.
-         (Arm_relobj::section_has_cortex_a8_workaround_): New data member
-         declarations.
-         (Target_arm::relocate_stub): Change parameter type of stub from
-         Reloc_stub pointer to Stub pointer.
-         (Insn_template::size, Insn_template::alignment): Handle
-         THUMB16_SPECIAL_TYPE.
-         (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
-          Stub_table::update_data_size_and_addralign,
-          Stub_table::apply_cortex_a8_workaround_to_address_range): New method
-         definitions.
-         (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
-         (Stub_table::do_write): Ditto.
-         (Target_arm::do_relax): Adjust code for changes in Stub_table.
+       prev_data_size_ and prev_addralign_.  Remove initializer for
+       deleted data member has_been_changed_.
+       (Stub_table::empty): Look at both reloc_stubs_ and cortex_a8_stubs_
+       to determine if the table is empty.
+       (Stub_table::has_been_changed, Stub_table_set_has_been_changed):
+       Remove.
+       (Stub_table::add_reloc_stub): Define method in class definition
+       instead of just declaring it there.
+       (Stub_table::add_cortex_a8_stub): New method definition.
+       (Stub_table::update_data_size_and_addralign): Ditto.
+       (Stub_table::finalize_stubs): Ditto.
+       (Stub_table::apply_cortex_a8_workaround_to_address_range): Ditto.
+       (Stub_table::do_addralign_): Return address alignment in the
+       (Stub_table::do_reset_address_and_file_offset): Define method in
+       class definition instead of declaring it there.  Set current data
+       size to be the data size of the previous pass.
+       (Stub_table::set_final_data_size): Use current data size as the
+       final data size.
+       (Stub_table::relocate_stub): Change parameter type of stub from
+       Reloc_stub pointer to Stub pointer.
+       (Stub_table::addralign_, Stub_table::has_been_changed_): Remove.
+       (Stub_table::Cortex_a8_stub_list): New typedef.
+       (Stub_table::cortex_a8_stubs_, Stub_table::prev_data_size_,
+        Stub_table::prev_addralign_): New data member.
+       (Arm_relobj::Arm_relobj): Initialize data member
+       section_has_cortex_a8_workaround_.
+       (Arm_relobj::section_has_cortex_a8_workaround,
+        Arm_relobj::mark_section_for_cortex_a8_workaround): New method
+        definitions.
+       (Arm_relobj::section_has_cortex_a8_workaround_): New data member
+       declarations.
+       (Target_arm::relocate_stub): Change parameter type of stub from
+       Reloc_stub pointer to Stub pointer.
+       (Insn_template::size, Insn_template::alignment): Handle
+       THUMB16_SPECIAL_TYPE.
+       (Stub_table::remove_all_cortex_a8_stubs, Stub_table::finalize_stubs,
+        Stub_table::update_data_size_and_addralign,
+        Stub_table::apply_cortex_a8_workaround_to_address_range): New method
+       definitions.
+       (Stub_table::relocate_stubs): Handle Cortex-A8 stubs.
+       (Stub_table::do_write): Ditto.
+       (Target_arm::do_relax): Adjust code for changes in Stub_table.
 
 2010-01-08  Ian Lance Taylor  <iant@google.com>
 
 
 2009-12-01  Rafael Avila de Espindola  <espindola@google.com>
 
-       * incremental-dump.cc (main): Fix typos.
+       * incremental-dump.cc (main): Fix typos.
 
 2009-11-27  Rafael Avila de Espindola  <espindola@google.com>
 
        (Incremental_inputs::sized_create_incremental_inputs_data): New method.
        * incremental.h: New file.
        * layout.cc (Layout::Layout): Handle new incremental_inputs_.
-       (Layout::finalize): Create incremental inputs section in
+       (Layout::finalize): Create incremental inputs section in
        incremental builds.
-       (Layout::create_incremental_info_sections): New method.
+       (Layout::create_incremental_info_sections): New method.
        * layout.h (Layout::incremental_inputs): New method.
-       (Layout::create_incremental_info_sections): New method.
-       (Layout::incremental_inputs_): New field.
+       (Layout::create_incremental_info_sections): New method.
+       (Layout::incremental_inputs_): New field.
        * main.cc (main): Notify Incremental_input of the command line.
 
 2009-04-01  Ian Lance Taylor  <iant@google.com>