PR gold/12525
[binutils-gdb.git] / gold / ChangeLog
index c68e4b2c553bb882e8feb1a2ef8719a0d9402751..c02a174494ee382bb33112b8d0eb6020d323374a 100644 (file)
@@ -1,3 +1,482 @@
+2011-03-08  Ian Lance Taylor  <iant@google.com>
+
+       PR gold/12525
+       * fileread.cc: #include <climits>.
+       (GOLD_IOV_MAX): Define.
+       (File_read::read_multiple): Limit number of entries by iov_max.
+       * fileread.h (class File_read): Always set max_readv_entries to
+       128.
+
+2011-03-07  Ian Lance Taylor  <iant@google.com>
+
+       PR gold/12525
+       * options.h (class General_options): Add -dy and -dn.
+
+2011-03-02  Cary Coutant  <ccoutant@google.com>
+
+       * testsuite/script_test_9.t: Add TLS segment.
+
+2011-03-02  Simon Baldwin  <simonb@google.com>
+
+       * configure.ac: Add check for gnu_indirect_function support in
+       the toolchain building binutils.
+       * configure: Rebuild.
+
+2010-02-18  Rafael Ávila de Espíndola <respindola@mozilla.com>
+
+       * symtab.cc (Symbol::should_add_dynsym_entry) Return false for
+       plugin only symbols.
+       (Symbol_table::sized_finalize_symbol) Mark symbol only present
+       in plugin files as not needed in the symbol table.
+
+2011-02-11  Sriraman Tallam  <tmsriram@google.com>
+
+       * output.cc (Output_section::add_input_section): Delay fill
+       generation for section ordering.
+
+2011-02-09  Ian Lance Taylor  <iant@google.com>
+
+       PR gold/12316
+       * object.h (class Sized_relobj): Remove clear_local_symbols.
+       * reloc.cc (Sized_relobj::do_relocate): Don't call
+       clear_local_symbols.
+
+2010-02-08  Rafael Ávila de Espíndola <respindola@mozilla.com>
+
+       * plugin.cc (is_visible_from_outside): Return true for symbols
+       in the -u option.
+
+2011-02-04  Jeffrey Yasskin  <jyasskin@google.com>
+
+       * symtab.cc (Odr_violation_compare::operator()): Sort by just the
+       filename.
+
+2011-02-02  Sriraman Tallam  <tmsriram@google.com>
+
+       * icf.h (is_section_foldable_candidate): Change type of parameter
+        to std::string.
+       * icf.cc (Icf::find_identical_sections): Change type of local variable
+        section_name to be std::string.
+       (is_function_ctor_or_dtor): Change type of parameter to std::string.
+
+2011-01-25  Ian Lance Taylor  <iant@google.com>
+
+       * script.cc (script_add_extern): Rewrite to use
+       add_symbol_reference.
+
+2011-01-25  Doug Kwan  <dougkwan@google.com>
+
+       * icf.cc (get_section_contents): Always lock section's object.
+
+2011-01-24  Ian Lance Taylor  <iant@google.com>
+
+       * options.h (class General_options): Accept
+       --no-detect-odr-violations.
+
+2011-01-24  Ian Lance Taylor  <iant@google.com>
+
+       * version.cc (version_string): Bump to 1.11.
+
+2011-01-24  Ian Lance Taylor  <iant@google.com>
+
+       * plugin.cc (class Plugin_rescan): Define new class.
+       (Plugin_manager::claim_file): Set any_claimed_.
+       (Plugin_manager::save_archive): New function.
+       (Plugin_manager::save_input_group): New function.
+       (Plugin_manager::all_symbols_read): Create Plugin_rescan task if
+       necessary.
+       (Plugin_manager::new_undefined_symbol): New function.
+       (Plugin_manager::rescan): New function.
+       (Plugin_manager::rescannable_defines): New function.
+       (Plugin_manager::add_input_file): Set any_added_.
+       * plugin.h (class Plugin_manager): define new fields rescannable_,
+       undefined_symbols_, any_claimed_, and any_added_.  Declare
+       Plugin_rescan as friend.  Declare new functions.
+       (Plugin_manager::Rescannable): Define type.
+       (Plugin_manager::Rescannable_list): Define type.
+       (Plugin_manager::Undefined_symbol_list): Define type.
+       (Plugin_manager::Plugin_manager): Initialize new fields.
+       * archive.cc (Archive::defines_symbol): New function.
+       (Add_archive_symbols::run): Pass archive to plugins if any.
+       * archive.h (class Archive): Declare defines_symbol.
+       * readsyms.cc (Input_group::~Input_group): New function.
+       (Finish_group::run): Pass input_group to plugins if any.
+       * readsyms.h (class Input_group): Declare destructor.
+       * symtab.cc (add_from_object): Pass undefined symbol to plugins if
+       any.
+
+2011-01-10  Ian Lance Taylor  <iant@google.com>
+
+       * layout.cc (Layout::layout_eh_frame): Mark a writable .eh_frame
+       section as relro.
+       (Layout::set_segment_offsets): Reset increase_relro before calling
+       set_section_addresses a second time.
+
+2011-01-04  Cary Coutant  <ccoutant@google.com>
+
+       * script-sections.cc (Sort_output_sections::operator()): Sort TLS
+       sections before NOBITS sections.
+
+2011-01-01  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * version.cc (print_version): Update copyright to 2011.
+
+2010-12-23  Cary Coutant  <ccoutant@google.com>
+
+       * output.h (Output_data_reloc::add_output_section): Pass OD instead
+       of OS to this->add.  Add OD parameter to second form of the function.
+
+2010-12-20  Ian Lance Taylor  <iant@google.com>
+
+       * dwarf_reader.cc (Sized_dwarf_line_info::read_lines): Only keep
+       second of two consecutive entries with same offset.
+
+2010-12-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * testsuite/Makefile.am (ifuncmain2static_LDADD)
+       (ifuncmain2_LDADD, ifuncmain4static_LDADD, ifuncmain4_LDADD)
+       (ifuncmain7static_LDADD, ifuncmain7_LDADD): New empty variables,
+       to avoid unneeded links against $(LDADD).
+       * testsuite/Makefile.in: Regenerate.
+
+2010-12-15  Ian Lance Taylor  <iant@google.com>
+
+       PR gold/12324
+       * x86_64.cc (Target_x86_64::Scan::check_non_pic): Give an error
+       for R_X86_64_32 and R_X86_64_PC32.
+       * testsuite/Makefile.am (ver_matching_def.so): Depend on and use
+       ver_matching_def_pic.o.
+       (ver_matching_def_pic.o): New target.
+
+2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * fileread.cc (file_counts_lock, file_counts_initialize_lock)
+       (total_mapped_bytes, current_mapped_bytes, maximum_mapped_bytes):
+       Move definition before File_read::View member definitions.
+       (File_read::View::~View): Initialize and hold lock before
+       updating current_mapped_bytes.
+
+2010-12-14  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * dwarf_reader.cc: Remove outdated comment.
+       * gold-threads.cc: Fix typo in error message.
+       * archive.cc: Fix typos in comments.
+       * archive.h: Likewise.
+       * arm-reloc-property.cc: Likewise.
+       * arm-reloc-property.h: Likewise.
+       * arm-reloc.def: Likewise.
+       * arm.cc: Likewise.
+       * attributes.h: Likewise.
+       * cref.cc: Likewise.
+       * ehframe.cc: Likewise.
+       * fileread.h: Likewise.
+       * gold.h: Likewise.
+       * i386.cc: Likewise.
+       * icf.cc: Likewise.
+       * incremental.h: Likewise.
+       * int_encoding.cc: Likewise.
+       * layout.h: Likewise.
+       * main.cc: Likewise.
+       * merge.h: Likewise.
+       * object.cc: Likewise.
+       * object.h: Likewise.
+       * options.cc: Likewise.
+       * readsyms.cc: Likewise.
+       * reduced_debug_output.cc: Likewise.
+       * reloc.cc: Likewise.
+       * script-sections.cc: Likewise.
+       * sparc.cc: Likewise.
+       * symtab.h: Likewise.
+       * target-reloc.h: Likewise.
+       * target.cc: Likewise.
+       * target.h: Likewise.
+       * timer.cc: Likewise.
+       * timer.h: Likewise.
+       * x86_64.cc: Likewise.
+
+2010-12-09  Cary Coutant  <ccoutant@google.com>
+
+       * layout.cc (Layout::layout_gnu_stack): Add warnings for executable
+       stack.
+       * layout.h (Layout::layout_gnu_stack): Add pointer to Object
+       parameter; change all callers.
+       * object.cc (Sized_relobj::do_layout): Adjust call to layout_gnu_stack.
+       * options.h (warn_execstack): New option.
+
+2010-12-07  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::Scan::get_reference_flags): Treat R_ARM_PREL31
+       like function call relocations.
+
+2010-12-07  Ian Lance Taylor  <iant@google.com>
+
+       * archive.cc (Archive::get_elf_object_for_member): Permit
+       punconfigured to be NULL.
+       (Archive::read_symbols): Pass NULL to get_elf_object_for_member.
+       (Archive::include_member): Pass NULL to get_elf_object_for_member
+       if we searched for the archive and this is the first included
+       object.
+
+2010-12-01  Ian Lance Taylor  <iant@google.com>
+
+       * dwarf_reader.h (class Sized_dwarf_line_info): Add
+       track_relocs_type_ field.
+       * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
+       Set track_relocs_type_.
+       (Sized_dwarf_line_info::process_one_opcode): Ignore the section
+       contents when using RELA relocs.
+       (Sized_dwarf_line_info::read_relocs): Add the reloc addend to
+       reloc_map_.
+       * reloc.cc (Track_relocs::next_addend): New function.
+       * reloc.h (class Track_relocs): Declare next_addend.
+
+2010-12-01  Ian Lance Taylor  <iant@google.com>
+
+       * testsuite/icf_virtual_function_folding_test.cc (class Bar): Add
+       virtual destructor.
+
+2010-12-01  Ian Lance Taylor  <iant@google.com>
+
+       * README: Update compilers known to work and fail.
+
+2010-11-23  Matthias Klose  <doko@ubuntu.com>
+
+       * configure.in: For --enable-gold, handle value `default' instead of
+       `both*'.  Always install ld as ld.bfd, install as ld if gold is
+       not the default.
+       * configure: Regenerate.
+
+2010-11-18  Doug Kwan  <dougkwan@google.com>
+
+       * expression.cc (BINARY_EXPRESSION): Initialize left_alignment
+       and right_alignment to be zero.  Store result alignment only if it is
+       greater than existing alignment.
+
+2010-11-16  Cary Coutant  <ccoutant@google.com>
+
+       PR gold/12220
+       * dwarf_reader.cc (Sized_dwarf_line_info::Sized_dwarf_line_info):
+       Check for ".zdebug_line".
+
+2010-11-16  Doug Kwan  <dougkwan@google.com>
+           Cary Coutant  <ccoutant@google.com>
+
+       * output.h (Output_segment::set_section_addresses): Pass increase_relro
+       by reference; adjust all callers.
+       * output.cc (Output_segment::set_section_addresses): Adjust references
+       to increase_relro. Add padding to *increase_relro when ORDER_RELRO_LAST
+       list is empty.
+       (Output_segment::set_offset): Assert if PT_GNU_RELRO segment does not
+       end at page boundary.
+
+2010-11-16  Cary Coutant  <ccoutant@google.com>
+
+       PR gold/12220
+       * layout.cc (Layout::choose_output_section): Transform names of
+       compressed sections even when using a script with a SECTIONS clause.
+       (Layout::output_section_name): Remove code to transform
+       compressed debug section names.
+       * output.cc (Output_section::add_input_section): Use uncompressed
+       section size when tracking input sections.
+
+2010-11-11  Richard Sandiford  <richard.sandiford@linaro.org>
+
+       * symtab.h (Symbol::NON_PIC_REF): Remove.
+       (Symbol::RELATIVE_REF, Symbol::TLS_REF): New Reference_flags.
+       (Symbol::FUNCTION_CALL): Renumber.  Reword comment.
+       (Symbol::needs_dynamic_reloc): Don't check NON_PIC_REF.
+       (Symbol::use_plt_offset): Take a flags argument and pass it
+       directly to needs_dynamic_reloc.  Restrict check for undefined
+       weak symbols to function calls.
+       * arm.cc (Target_arm::Scan::get_reference_flags): New function.
+       (Target_arm::Scan::global): Use it.
+       (Target_arm::Scan::scan_reloc_for_stub): Likewise.
+       (Target_arm::Relocate::relocate): Likewise.
+       (Target_arm::Relocate::should_apply_static_reloc): Replace flags
+       parameter with an r_type parameter.  Use get_reference_flags
+       to get the flags.
+       (Target_arm::Relocate::relocate): Update accordingly.
+       * i386.cc (Target_i386::Scan::get_reference_flags): New function.
+       (Target_i386::Scan::reloc_needs_plt_for_ifunc): Use it.
+       (Target_i386::Scan::global): Likewise.
+       (Target_i386::Relocate::relocate): Likewise.
+       (Target_i386::Relocate::should_apply_static_reloc): Replace flags
+       parameter with an r_type parameter.  Use get_reference_flags
+       to get the flags.
+       (Target_i386::Relocate::relocate): Update accordingly.
+       * powerpc.cc (Target_powerpc::Scan::get_reference_flags): New function.
+       (Target_powerpc::Scan::global): Use it.
+       (Target_powerpc::Scan::scan_reloc_for_stub): Likewise.
+       (Target_powerpc::Relocate::relocate): Likewise.
+       * sparc.cc (Target_sparc::Scan::get_reference_flags): New function.
+       (Target_sparc::Scan::global): Use it.
+       (Target_sparc::Scan::scan_reloc_for_stub): Likewise.
+       (Target_sparc::Relocate::relocate): Likewise.
+       * x86_64.cc (Target_x86_64::Scan::get_reference_flags): New function.
+       (Target_x86_64::Scan::reloc_needs_plt_for_ifunc): Use it.
+       (Target_x86_64::Scan::global): Likewise.
+       (Target_x86_64::Relocate::relocate): Likewise.
+
+2010-11-08  Doug Kwan  <dougkwan@google.com>
+           Cary Coutant  <ccoutant@google.com>
+
+       * arm.cc (Arm_exidx_merge_section::build_contents): New method.
+       (Arm_exidx_merge_section::section_contents_): New data member.
+       (Arm_input_section::Arm_input_section): Initialize original_contents_.
+       (Arm_input_section::~Arm_input_section): De-allocate memory.
+       (Arm_input_section::original_contents_): New data member.       
+       (Arm_exidx_fixup::process_exidx_section): Pass EXIDX section contents
+       in parameters instead of calling Object::section_contents without
+       locking.
+       (Arm_output_section::group_section): New parameter TASK.  Pass it
+       to callees that need locking objects.
+       (Arm_output_section::fix_exidx_coverage): New parameter TASK.  Use it
+       to lock EXIDX input sections.  Fix a formatting issue.  Call
+       Arm_exidx_merged_section::build_contents to create merged section
+       contents.
+       (Arm_output_section::create_stub_group): New parameter TASK.  Use it
+       to lock object of stub table owner.
+       (Arm_exidx_input_section::Arm_exidx_input_section): Add new parameter
+       TEXT_SIZE to initialize data member TEXT_SIZE_.
+       (Arm_exidx_input_section::addralign): Fix typo in comment.
+       (Arm_exidx_input_section::text_size): New method.
+       (Target_arm::do_relax): New parameter TASK.  Pass it to callees
+       that require locking objects.  Lock objects before scanning for stubs
+       and updating local symbols.
+       (Arm_input_section<big_endian>::init): Copy contents of original
+       input section.
+       (Arm_input_section<big_endian>::do_write): Use saved contents of
+       original input section instead of calling Object::section_contents
+       without locking.
+       (Arm_exidx_cantunwind::do_fixed_endian_write): Find out text section
+       size without calling Object::section_size().
+       (Arm_exidx_merged_section::Arm_exidx_merged_section): Add sanity check
+       for size.  Allocate a buffer for merged EXIDX entries.
+       (Arm_exidx_merged_section::build_contents): New method.
+       (Arm_exidx_merged_section::do_write): Move merge section contents
+       building code to Arm_exidx_merged_section::build_contetns.  Write
+       out contetns in buffer instead of building it on the fly.
+       (Arm_relobj::make_exidx_input_section): Also pass text section size
+       to Arm_exidx_input_section constructor.
+       (Arm_relobj::do_read_symbols): Fix memory leak.  Fix a formatting issue.
+       (Arm_dynobj::do_read_symbols): Fix memory leak.
+       * layout.cc (Layout::finalize): Pass TASK to Target::relax().
+       * target.h: (class Task): Add forward declaration.
+       (Target::relax): Add new parameter TASK and pass it to
+       Target::do_relax().
+       (Target::do_relax):: New parameter TASK.  Fix a formatting issue.
+
+2010-11-05  Cary Coutant  <ccoutant@google.com>
+
+       PR gold/10708
+       * copy-relocs.cc (Copy_relocs::emit_copy_reloc): Hold a lock on the
+       object when reading from the file.
+       * gold.cc (queue_middle_tasks): Hold a lock on the object when doing
+       second layout pass.
+       * icf.cc (preprocess_for_unique_sections): Hold a lock on the object
+       when reading section contents.
+       (get_section_contents): Likewise.
+       (icf::find_identical_sections): Likewise.
+       * mapfile.cc (Mapfile::print_discarded_sections): Hold a lock on the
+       object when reading from the file.
+       * plugin.cc (Plugin_manager::layout_deferred_objects): Hold a lock on
+       the object when doing deferred section layout.
+
+2010-11-03  Nick Clifton  <nickc@redhat.com>
+
+       PR gold/12001
+       * script.h (class Symbol_assignment: name): New member.  Returns
+       the name of the symbol.
+       * scrfipt.cc (Script_options::is_pending_assignment): New member.
+       Returns true if the given symbol name is on the list of
+       assignments wating to be processed.
+       * archive.cc (should_incldue_member): If the symbol is undefined,
+       check to see if it is on the list of symbols pending assignment.
+
+2010-11-03  Ryan Mansfield  <rmansfield@qnx.com>
+
+       * script-sections.cc (Script_sections::find_memory_region): Check
+       for a NULL output section pointer.
+
+2010-10-29  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_outout_section::fix_exidx_coverage): Adjust call to
+       Output_section::add_relaxed_input_section.
+       * output.cc (Output_section::add_relaxed_input_section): Add new
+       arguments LAYOUT and NAME.  Set section order index.
+       (Output_section::convert_input_sections_in_list_to_relaxed_sections):
+       Copy section order index.
+       * output.h (Output_section::add_relaxed_input_section): Add new
+       arguments LAYOUT and NAME.
+
+2010-10-29  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+
+       * testsuite/Makefile.am: Move gcctestdir/ld rule to
+        NATIVE_OR_CROSS_LINKER.
+       * testsuite/Makefile.in: Regenerate.
+
+2010-10-20  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::do_read_symbols): Warn about ARM EXIDX sections
+       without SHF_LINK_ORDER flags.
+       * layout.cc (Layout::choose_output_section): Do not filter
+       SHF_LINK_ORDER flag in a relocatable link.
+
+2010-10-17  Cary Coutant  <ccoutant@google.com>
+
+       * output.h (Output_segment::set_section_addresses): Change function
+       signature.  Update all callers.
+       * output.cc (Output_segment::is_first_section_relro): Ignore TLS
+       sections.
+       (Output_segment::set_section_addresses): Align after last TLS
+       section.  Add padding before last relro section instead of after.
+
+2010-10-17  Doug Kwan  <dougkwan@google.com>
+
+       * gold/arm.cc (Target_arm::got_section): Use correct order and set
+       GOT output section to be writable.
+
+2010-10-14  Cary Coutant  <ccoutant@google.com>
+
+       * debug.h (DEBUG_INCREMENTAL): New flag.
+       (debug_string_to_enum): Add DEBUG_INCREMENTAL).
+       * gold.cc (queue_initial_tasks): Check parameters for incremental link
+       mode.
+       * incremental.cc (report_command_line): Ignore all forms of
+       --incremental.
+       * layout.cc (Layout::Layout): Check parameters for incremental link
+       mode.
+       * options.cc (General_options::parse_incremental): New function.
+       (General_options::parse_no_incremental): New function.
+       (General_options::parse_incremental_full): New function.
+       (General_options::parse_incremental_update): New function.
+       (General_options::incremental_mode_): New data member.
+       (General_options::finalize): Check incremental_mode_.
+       * options.h (General_options): Update help text for --incremental.
+       Add --no-incremental, --incremental-full, --incremental-update.
+       (General_options::Incremental_mode): New enum type.
+       (General_options::incremental_mode): New function.
+       (General_options::incremental_mode_): New data member.
+       * parameters.cc (Parameters::incremental_mode_): New data member.
+       (Parameters::set_options): Set incremental_mode_.
+       (Parameters::set_incremental_full): New function.
+       (Parameters::incremental): New function.
+       (Parameters::incremental_update): New function.
+       (set_parameters_incremental_full): New function.
+       * parameters.h (Parameters::set_incremental_full): New function.
+       (Parameters::incremental): New function.
+       (Parameters::incremental_update): New function.
+       (Parameters::incremental_mode_): New data member.
+       (set_parameters_incremental_full): New function.
+       * plugin.cc (Plugin_manager::add_input_file): Check parameters for
+       incremental link mode.
+       * reloc.cc (Sized_relobj::do_read_relocs): Likewise.
+       (Sized_relobj::do_relocate_sections): Likewise.
+       * testsuite/Makefile.am (incremental_test): Use --incremental-full
+       option.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/incremental_test.sh: Filter all forms of --incremental.
+
 2010-10-12  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
 
        * script-sections.h (class Script_sections): Make