+2011-08-29 Cary Coutant <ccoutant@google.com>
+
+ * output.cc: (Output_fill_debug_info::do_minimum_hole_size): Add
+ casts to match formatting specs.
+ (Output_fill_debug_line::do_minimum_hole_size): Likewise.
+
+2011-08-26 Cary Coutant <ccoutant@google.com>
+
+ * layout.cc (Free_list::allocate): Provide guarantee of minimum
+ remaining hole size when allocating.
+ (Layout::make_output_section): Set fill methods for debug sections.
+ * layout.h (Free_list::Free_list_node): Move from private to
+ public.
+ (Free_list::set_min_hole_size): New function.
+ (Free_list::begin, Free_list::end): New functions.
+ (Free_list::min_hole_): New data member.
+ * output.cc: Include dwarf.h.
+ (Output_fill_debug_info::do_minimum_hole_size): New function.
+ (Output_fill_debug_info::do_write): New function.
+ (Output_fill_debug_line::do_minimum_hole_size): New function.
+ (Output_fill_debug_line::do_write): New function.
+ (Output_section::Output_section): Initialize new data member.
+ (Output_section::set_final_data_size): Ensure patch space is larger
+ than minimum hole size.
+ (Output_section::do_write): Fill holes in debug sections.
+ * output.h (Output_fill): New class.
+ (Output_fill_debug_info): New class.
+ (Output_fill_debug_line): New class.
+ (Output_section::set_free_space_fill): New function.
+ (Output_section::free_space_fill_): New data member.
+ * testsuite/Makefile.am (incremental_test_3): Add
+ --incremental-patch option.
+ (incremental_test_4): Likewise.
+ (incremental_test_5): Likewise.
+ (incremental_test_6): Likewise.
+ (incremental_copy_test): Likewise.
+ (incremental_common_test_1): Likewise.
+ * testsuite/Makefile.in: Regenerate.
+
+2011-08-26 Nick Clifton <nickc@redhat.com>
+
+ * po/es.po: Updated Spanish translation.
+
+2011-08-01 Cary Coutant <ccoutant@google.com>
+
+ * gold/testsuite/Makefile.am (justsyms_exec): New testcase.
+ * gold/testsuite/Makefile.in: Regenerate.
+ * gold/testsuite/justsyms_exec.c: New source file.
+ * gold/testsuite/justsyms_lib.c: New source file.
+
+2011-08-01 Cary Coutant <ccoutant@google.com>
+
+ * layout.cc (Layout::set_segment_offsets): Don't realign text
+ segment if -Ttext was specified.
+ * object.cc (Sized_relobj_file::Sized_relobj_file): Store the ELF
+ file type.
+ * object.h (Sized_relobj_file::e_type): New function.
+ (Sized_relobj_file::e_type_): New data member.
+ * symtab.cc (Symbol_table::add_from_relobj): Don't add section
+ base address for ET_EXEC files.
+ * target.cc (Target::do_make_elf_object_implementation): Allow
+ ET_EXEC files with --just-symbols option.
+
+2011-07-28 Cary Coutant <ccoutant@google.com>
+
+ * workqueue-internal.h (Workqueue_threader::should_cancel_thread):
+ Add thread_number parameter.
+ (Workqueue_threader_threadpool::should_cancel_thread): Likewise.
+ * workqueue-threads.cc
+ (Workqueue_threader_threadpool::should_cancel_thread): Cancel
+ current thread if its thread number is greater than desired thread
+ count.
+ * workqueue.cc (Workqueue_threader_single::should_cancel_thread):
+ Add thread_number parameter.
+ (Workqueue::should_cancel_thread): Likewise.
+ (Workqueue::find_runnable_or_wait): Pass thread_number to
+ should_cancel_thread.
+ * workqueue.h (Workqueue::should_cancel_thread): Add thread_number
+ parameter.
+
+2011-07-22 Sriraman Tallam <tmsriram@google.com>
+
+ * symtab.cc (Symbol_table::add_from_relobj): Mark symbol as referenced
+ only after checking if it cannot be forced local.
+ * symtab.h (is_externally_visible): Check if the symbol is not forced
+ local.
+
+2011-07-15 Ian Lance Taylor <iant@google.com>
+
+ * options.h (class General_options): Add --print-output-format.
+ Move -EL next to -EB, for better --help output.
+ * target-select.cc: Include <cstdio>, "options.h", and
+ "parameters.h".
+ (Target_selector::do_target_bfd_name): New function.
+ (print_output_format): New function.
+ * target-select.h (class Target_selector): Update declarations.
+ (Target_selector::target_bfd_name): New function.
+ (print_output_format): Declare.
+ * main.cc: Include "target-select.h".
+ (main): Handle --print-output-format.
+ * gold.cc: Include "target-select.h".
+ (queue_initial_tasks): Handle --print-output-format when there are
+ no input files.
+ * parameters.cc (parameters_force_valid_target): Give a better
+ error message if -EB/-EL does not match target.
+ * freebsd.h (Target_selector_freebsd::do_target_bfd_name): New
+ function.
+
+2011-07-15 Ian Lance Taylor <iant@google.com>
+
+ * i386.cc (class Output_data_plt_i386): Add layout_ field.
+ (Output_data_plt_i386::Output_data_plt_i386): Initialize layout_.
+ (Output_data_plt_i386::do_write): Write address of .dynamic
+ section to first entry in .got.plt section.
+ * x86_64.cc (class Output_data_plt_x86_64): Add layout_ field.
+ (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
+ Initialize layout_.
+ (Output_data_plt_x86_64::do_write): Write address of .dynamic
+ section to first entry in .got.plt section.
+ * layout.h (Layout::dynamic_section): New function.
+
+2011-07-13 Sriraman Tallam <tmsriram@google.com>
+
+ * archive.cc (Archive::get_elf_object_for_member): Add extra parameter
+ to claim_file call.
+ * layout.cc (Layout::Layout): Initialize section_ordering_specified_,
+ input_section_position_, and input_section_glob_.
+ (read_layout_from_file): Call function section_ordering_specified.
+ * layout.h (is_section_ordering_specified): New function.
+ (section_ordering_specified): New function.
+ (section_ordering_specified_): New boolean member.
+ * main.cc(main): Call load_plugins after layout object is defined.
+ * output.cc (Output_section::add_input_section): Use
+ function section_ordering_specified to check if section ordering is
+ needed.
+ * output.cc (Output_section::add_relaxed_input_section): Use
+ function section_ordering_specified to check if section ordering is
+ needed.
+ (Output_section::update_section_layout): New function.
+ (Output_section::sort_attached_input_sections): Check if input section
+ must be reordered.
+ * output.h (Output_section::update_section_layout): New function.
+ * plugin.cc (get_section_count): New function.
+ (get_section_type): New function.
+ (get_section_name): New function.
+ (get_section_contents): New function.
+ (update_section_order): New function.
+ (allow_section_ordering): New function.
+ (Plugin::load): Add the new interfaces to the transfer vector.
+ (Plugin_manager::load_plugins): New parameter.
+ (Plugin_manager::all_symbols_read): New parameter.
+ (Plugin_manager::claim_file): New parameter. Save the elf object for
+ unclaimed objects.
+ (Plugin_manager::get_elf_object): New function.
+ (Plugin_manager::get_view): Change to directly use the bool to check
+ if get_view is called from claim_file_hook.
+ * plugin.h (input_objects): New function
+ (Plugin__manager::load_plugins): New parameter.
+ (Plugin_manager::claim_file): New parameter.
+ (Plugin_manager::get_elf_object): New function.
+ (Plugin_manager::in_claim_file_handler): New function.
+ (Plugin_manager::in_claim_file_handler_): New member.
+ (layout): New function.
+ * readsyms.cc (Read_symbols::do_read_symbols): Call the claim_file
+ handler with an extra parameter. Make the elf object before calling
+ claim_file handler.
+ * testsuite/plugin_test.c (get_section_count): New function pointer.
+ (get_section_type): New function pointer.
+ (get_section_name): New function pointer.
+ (get_section_contents): New function pointer.
+ (update_section_order): New function pointer.
+ (allow_section_ordering): New function pointer.
+ (onload): Check if the new interfaces exist.
+
+2011-07-13 Ian Lance Taylor <iant@google.com>
+
+ * i386.cc (Target_i386::got_section): If -z now, make .got.plt a
+ relro section.
+ * x86_64.cc (Target_x86_64::got_section): Likewise.
+ * testsuite/Makefile.am (check_PROGRAMS): Add relro_now_test.
+ (relro_now_test_SOURCES): New variable.
+ (relro_now_test_DEPENDENCIES): New variable.
+ (relro_now_test_LDFLAGS): New variable.
+ (relro_now_test_LDADD): New variable.
+ (relro_now_test.so): New target.
+ * testsuite/Makefile.in: Rebuild.
+
+2011-07-12 Ian Lance Taylor <iant@google.com>
+
+ PR gold/12980
+ * i386.cc (Target_i386::Scan::global): For a GOT reloc, use a
+ GLOB_DAT relocation rather than a RELATIVE relocation for a
+ protected symbol when creating a shared library.
+ * x86_64.cc (Target_x86_64::Scan::global): Likewise.
+ * testsuite/protected_1.cc (f2, get_f2_addr): New functions.
+ * testsuite/protected_main_1.cc (main): Test that protected
+ function has same address.
+
+2011-07-11 Ian Lance Taylor <iant@google.com>
+
+ PR gold/12979
+ * options.h (class General_options): Add -Bgroup.
+ * options.cc (General_options::finalize): If -Bgroup is set,
+ default to --unresolved-symbols=report-all.
+ * layout.cc (Layout::finish_dynamic_section): Implement -Bgroup.
+ * target-reloc.h (issue_undefined_symbol_error): Handle
+ --unresolved-symbols=report-all.
+
+2011-07-08 Ian Lance Taylor <iant@google.com>
+
+ PR gold/11985
+ * layout.cc (Layout::create_initial_dynamic_sections): Don't crash
+ if linker script discards key sections.
+ (Layout::create_dynamic_symtab): Likewise.
+ (Layout::assign_local_dynsym_offsets): Likewise.
+ (Layout::sized_create_version_sections): Likewise.
+ (Layout::create_interp): Likewise.
+ (Layout::finish_dynamic_section): Likewise.
+ (Layout::set_dynamic_symbol_size): Likewise.
+
+2011-07-08 Ian Lance Taylor <iant@google.com>
+
+ PR gold/12386
+ * options.h (class General_options): Add --unresolved-symbols.
+ * target-reloc.h (issue_undefined_symbol_error): Check
+ --unresolved-symbols. Add comments.
+
+2011-07-08 Ian Lance Taylor <iant@google.com>
+
+ * testsuite/odr_violation2.cc (Ordering::operator()): Make
+ expression more complex.
+
+2011-07-08 Ian Lance Taylor <iant@google.com>
+
+ PR gold/11317
+ * target-reloc.h (issue_undefined_symbol_error): New inline
+ function, broken out of relocate_section.
+ (relocate_section): Call issue_undefined_symbol_error.
+ * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
+ there is no TLS segment if we are about to issue an undefined
+ symbol error.
+ * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
+
+2011-07-08 Ian Lance Taylor <iant@google.com>
+
+ PR gold/12279
+ * resolve.cc (Symbol_table::should_override): Add fromtype
+ parameter. Change all callers. Give error when linking together
+ TLS and non-TLS symbol.
+ (Symbol_table::should_override_with_special): Add fromtype
+ parameter. Change all callers.
+ * i386.cc (Target_i386::Relocate::relocate_tls): Don't crash if
+ there is no TLS segment if we have reported some errors.
+ * x86_64.cc (Target_x86_64::relocate_tls): Likewise.
+
+2011-07-08 Ian Lance Taylor <iant@google.com>
+
+ PR gold/12372
+ * target.h (Target::plt_address_for_global): New function.
+ (Target::plt_address_for_local): New function.
+ (Target::plt_section_for_global): Remove.
+ (Target::plt_section_for_local): Remove.
+ (Target::do_plt_address_for_global): New virtual function.
+ (Target::do_plt_address_for_local): New virtual function.
+ (Target::do_plt_section_for_global): Remove.
+ (Target::do_plt_section_for_local): Remove.
+ (Target::register_global_plt_entry): Add Symbol_table and Layout
+ parameters.
+ * output.cc (Output_data_got::Got_entry::write): Use
+ plt_address_for_global and plt_address_for_local.
+ * layout.cc (Layout::add_target_dynamic_tags): Use size and
+ address of output section.
+ * i386.cc (class Output_data_plt_i386): Add irelative_rel_,
+ got_irelative_, and irelative_count_ fields. Update
+ declarations.
+ (Output_data_plt_i386::has_irelative_section): New function.
+ (Output_data_plt_i386::entry_count): Add irelative_count_.
+ (Output_data_plt_i386::set_final_data_size): Likewise.
+ (class Target_i386): Add got_irelative_ and rel_irelative_
+ fields. Update declarations.
+ (Target_i386::Target_i386): Initialize new fields.
+ (Target_i386::do_plt_address_for_global): New function replacing
+ do_plt_section_for_global.
+ (Target_i386::do_plt_address_for_local): New function replacing
+ do_plt_section_for_local.
+ (Target_i386::got_section): Create got_irelative_.
+ (Target_i386::rel_irelative_section): New function.
+ (Output_data_plt_i386::Output_data_plt_i386): Initialize new
+ fields. Don't define __rel_iplt_{start,end}.
+ (Output_data_plt_i386::add_entry): Add symtab and layout
+ parameters. Change all callers. Use different PLT and GOT for
+ IFUNC symbols.
+ (Output_data_plt_i386::add_local_ifunc_entry): Add symtab and
+ layout parameters. Change all callers. Use different PLT and
+ GOT.
+ (Output_data_plt_i386::rel_tls_desc): Fix formatting.
+ (Output_data_plt_i386::rel_irelative): New function.
+ (Output_data_plt_i386::address_for_global): New function.
+ (Output_data_plt_i386::address_for_local): New function.
+ (Output_data_plt_i386::do_write): Write out IRELATIVE area. Use
+ IRELATIVE GOT when changing IFUNC GOT entries.
+ (Target_i386::Scan::global): Use IRELATIVE GOT for IRELATIVE
+ reloc.
+ (Target_i386::do_finalize_sections): Create the __rel_iplt symbols
+ if we didn't create an IRELATIVE GOT.
+ (Target_i386::Relocate::relocate): Use plt_address_for_global and
+ plt_address_for_local.
+ (Target_i386::do_dynsym_value): Use plt_address_for_global.
+ * x86_64.cc (class Output_data_plt_x86_64): Add irelative_rel_,
+ got_irelative_, and irelative_count_ fields. Update
+ declarations.
+ (Output_data_plt_x86_64::Output_data_plt_x86_64) [both versions]:
+ Initialize new fields. Remove symtab parameter. Change all
+ callers.
+ (Output_data_plt_x86_64::get_tlsdesc_plt_offset): Add
+ irelative_count_.
+ (Output_data_plt_x86_64::has_irelative_section): New function.
+ (Output_data_plt_x86_64::entry_count): Add irelative_count_.
+ (class Target_x86_64): Add got_irelative_ and rel_irelative_
+ fields. Update declarations.
+ (Target_x86_64::Target_x86_64): Initialize new fields.
+ (Target_x86_64::do_plt_address_for_global): New function replacing
+ do_plt_section_for_global.
+ (Target_x86_64::do_plt_address_for_local): New function replacing
+ do_plt_section_for_local.
+ (Target_x86_64::got_section): Create got_irelative_.
+ (Target_x86_64::rela_irelative_section): New function.
+ (Output_data_plt_x86_64::init): Remove symtab parameter. Change
+ all callers. Don't create __rel_iplt_{start,end}.
+ (Output_data_plt_x86_64::add_entry): Add symtab and layout
+ parameters. Change all callers. Use different PLT and GOT for
+ IFUNC symbols.
+ (Output_data_plt_x86_64::add_local_ifunc_entry): Add symtab and
+ layout parameters. Change all callers. Use different PLT and
+ GOT.
+ (Output_data_plt_x86_64::add_relocation): Add symtab and layout
+ parameters. Change all callers. Use different PLT and GOT for
+ IFUNC symbols.
+ (Output_data_plt_x86_64::rela_tlsdesc): Fix formatting.
+ (Output_data_plt_x86_64::rela_irelative): New function.
+ (Output_data_plt_x86_64::address_for_global): New function.
+ (Output_data_plt_x86_64::address_for_local): New function.
+ (Output_data_plt_x86_64::set_final_data_size): Likewise.
+ (Output_data_plt_x86_64::do_write): Write out IRELATIVE area.
+ (Target_x86_64::init_got_plt_for_update): Create got_irelative_.
+ (Target_x86_64::register_global_plt_entry): Add symtab and layout
+ parameters.
+ (Target_x86_64::Scan::global): Use IRELATIVE GOT for IRELATIVE
+ reloc.
+ (Target_x86_64::do_finalize_sections): Create the __rela_iplt
+ symbols if we didn't create an IRELATIVE GOT.
+ (Target_x86_64::Relocate::relocate): Use plt_address_for_global and
+ plt_address_for_local.
+ (Target_x86_64::do_dynsym_value): Use plt_address_for_global.
+ * testsuite/ifuncvar1.c: New test file.
+ * testsuite/ifuncvar2.c: New test file.
+ * testsuite/ifuncvar3.c: New test file.
+ * testsuite/Makefile.am (check_PROGRAMS): Add ifuncvar.
+ (ifuncvar1_pic.o, ifuncvar2_pic.o, ifuncvar.so): New targets.
+ (ifuncvar_SOURCES, ifuncvar_DEPENDENCIES): New variables.
+ (ifuncvar_LDFLAGS, ifuncvar_LDADD): New variables.
+ * testsuite/Makefile.in: Rebuild.
+
+2011-07-07 Cary Coutant <ccoutant@google.com>
+
+ * testsuite/Makefile.am (two_file_test_1_v1_ndebug.o): New target.
+ (two_file_test_1_ndebug.o): Likewise.
+ (two_file_test_1b_ndebug.o): Likewise.
+ (two_file_test_2_ndebug.o): Likewise.
+ (two_file_test_main_ndebug.o): Likewise.
+ (incremental_test_2): Link with no-debug versions.
+
+2011-07-06 Cary Coutant <ccoutant@google.com>
+
+ * gold/incremental.cc
+ (Output_section_incremental_inputs::write_info_blocks): Check for
+ hidden and internal symbols.
+
+2011-07-06 Cary Coutant <ccoutant@google.com>
+
+ * incremental.cc (Sized_incremental_binary::do_file_has_changed):
+ Check disposition for startup file.
+ (Incremental_inputs::report_command_line): Ignore
+ --incremental-startup-unchanged option.
+ * options.cc (General_options::parse_incremental_startup_unchanged):
+ New function.
+ (General_options::General_options): Initialize new data member.
+ * options.h (Incremental_disposition): Add INCREMENTAL_STARTUP.
+ (General_options): Add --incremental-startup-unchanged option.
+ (General_options::incremental_startup_disposition): New function.
+ (General_options::incremental_startup_disposition_): New data member.
+
2011-07-06 Cary Coutant <ccoutant@google.com>
* incremental.cc (Sized_incremental_binary::setup_readers): Pass
* testsuite/Makefile.am (final_layout.stdout): Use -n option with nm.
* testsuite/Makefile.in: Regenerate.
-2010-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
+2011-03-23 Rafael Ávila de Espíndola <respindola@mozilla.com>
* plugin.cc (get_view): New.
(Plugin::load): Pass get_view to the plugin.
the toolchain building binutils.
* configure: Rebuild.
-2010-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
+2011-02-18 Rafael Ávila de Espíndola <respindola@mozilla.com>
* symtab.cc (Symbol::should_add_dynsym_entry) Return false for
plugin only symbols.
* reloc.cc (Sized_relobj::do_relocate): Don't call
clear_local_symbols.
-2010-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
+2011-02-08 Rafael Ávila de Espíndola <respindola@mozilla.com>
* plugin.cc (is_visible_from_outside): Return true for symbols
in the -u option.