OSDN Git Service

2010-05-12 Doug Kwan <dougkwan@google.com>
[pf3gnuchains/pf3gnuchains4x.git] / gold / ChangeLog
index 2a811db..71bbf2a 100644 (file)
+2010-05-12  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::do_finalize_sections): Create an empty
+       attributes section only if there no attributes section after merging.
+       (Target_arm::merge_object_attributes): Move value of
+       Tag_MPextension_use_legacy to that of Tag_MPextension_use. 
+       Handle Tag_DIV_use and Tag_MPextension_use_legacy.
+       * testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
+       (check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
+       and arm_attr_merge_7.stdout.
+       (arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
+       arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
+       arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
+       arm_attr_merge_7b.o): New rules.
+       (MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
+       arm_attr_merge_7
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/arm_attr_merge.sh: New file.
+       * testsuite/arm_attr_merge_[67][ab].s: Same.
+
+2010-05-05  Nick Clifton  <nickc@redhat.com>
+
+       * po/es.po: Updated Spanish translation.
+
+2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * Makefile.am (install-exec-local): Properly install gold as
+       default cross linker.
+       * Makefile.in: Regenerated.
+
+2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>
+           Nick Clifton  <nickc@redhat.com>
+
+       * configure.ac (install_as_default): Define and set to false
+       unless --enable-gold or --enable-gold=both/gold has been
+       specified.
+       * configure: Regenerate.
+
+       * Makefile.am (install-exec-local): Install the executable as
+       'ld.gold'.  If install_as_default is true then also install it as
+       'ld'.
+       * Makefile.in: Regenerated.
+
+2010-04-24  Ian Lance Taylor  <iant@google.com>
+
+       * layout.cc (Layout::layout_reloc): In relocatable link don't
+       combine reloc sections for grouped sections.
+
+2010-04-23  Sriraman Tallam  <tmsriram@google.com>
+
+       * gc.h (gc_process_relocs): Pass information on relocs pointing to
+       sections that are not ordinary to icf.
+       * icf.cc (get_section_contents): Handle relocation pointing to section
+       with no object or shndx information.
+       * testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/icf_virtual_function_folding_test.cc: Remove printf.
+       * testsuite/icf_virtual_function_folding_test.sh: Delete file.
+
+2010-04-22  Ian Lance Taylor  <iant@google.com>
+
+       * expression.cc (Expression::Expression_eval_info): Add
+       result_alignment_pointer field.
+       (Expression::eval_with_dot): Add result_alignment_pointer
+       parameter.  Change all callers.
+       (Expression::eval_maybe_dot): Likewise.
+       (class Binary_expression): Add alignment_pointer parameter to
+       left_value and right_value.  Change all callers.
+       (BINARY_EXPRESSION): Set result alignment.
+       (class Trinary_expression): Add alignment_pointer parameter to
+       arg2_value and arg3_value.  Change all callers.
+       (Trinary_cond::value): Set result alignment.
+       (Max_expression::value, Min_expression::value): Likewise.
+       (Align_expression::value): Likewise.
+       * script-sections.cc (class Sections_element): Add dot_alignment
+       parameter to set_section_addresses virtual function.  Update
+       instantiations.
+       (class Output_section_element): Likewise.
+       (Script_sections::create_segments): Add dot_alignment parameter.
+       Change all callers.
+       (Script_sections::create_segments_from_phdrs_clause): Likewise.
+       (Script_sections::set_phdrs_clause_addresses): Likewise.
+       * script-sections.h: Update declarations.
+       * script.h: Update declarations.
+       * output.h (Output_segment::set_minimum_p_align): Don't decrease
+       min_p_align.
+       * testsuite/script_test_3.t: Set large alignment.
+       * testsuite/script_test_3.sh: Make sure that at least one LOAD
+       segment has expected alignment.
+
+2010-04-22  Nick Clifton  <nickc@redhat.com>
+
+       * po/gold.pot: Updated by the Translation project.
+       * po/vi.po: Updated Vietnamese translation.
+
+2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * testsuite/Makefile.am (check_PROGRAMS): Add
+       icf_virtual_function_folding_test.
+       * testsuite/Makefile.in: Regenerated.
+
+2010-04-15  Andrew Haley  <aph@redhat.com>
+
+       * options.h (merge_exidx_entries): New option.
+       * arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
+       (class Arm_exidx_fixup::merge_exidx_entries_): New member.
+       (Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
+       (Target_arm::merge_exidx_entries): New function.
+       (process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
+       (Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
+       to Arm_exidx_fixup constructor.
+       Add new arg, merge_exidx_entries.
+       (Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
+       Arm_output_section::fix_exidx_coverage.
+
+2010-04-18  Sriraman Tallam  <tmsriram@google.com>
+
+       * icf.cc (get_section_contents): Check for preemptible functions.
+       Ignore addend when appropriate.
+       * symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
+       section folded.
+       (add_from_relobj): Check for section folded.
+       (set_dynsym_indexes): Fix call to should_add_dynsym_entry.
+       * symtab.h (should_add_dynsym_entry): Add new parameter.
+       * target-reloc.h (scan_relocs): Check for section folded.
+       * x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
+       Check reloc types for function pointers in shared objects.
+       * testsuite/Makefile.am (icf_virtual_function_folding_test): New test
+       case.
+       (icf_preemptible_functions_test): New test case.
+       (icf_string_merge_test): New test case.
+       * testsuite.Makefile.in: Regenerate.
+       * testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
+       bar_glob.  Refactor code.
+       * testsuite/icf_preemptible_functions_test.cc: New file.
+       * testsuite/icf_preemptible_functions_test.sh: New file.
+       * testsuite/icf_string_merge_test.cc: New file.
+       * testsuite/icf_string_merge_test.sh: New file.
+       * testsuite/icf_virtual_function_folding_test.cc: New file.
+       * testsuite/icf_virtual_function_folding_test.sh: New file.
+
+2010-04-14  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_output_section::fix_exidx_coverage): Mark object
+       for local symbol recounting if we remove a section due to ICF.
+       * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if
+       there are no regular objects in input.
+
+2010-04-13  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_input_section::set_final_data_size): Compute
+       accurate final data size instead of using current data size.
+
+2010-04-09  Doug Kwan  <dougkwan@google.com>
+
+       * layout.cc (Layout::choose_output_section): Handle script section
+       types.
+       (Layout::make_output_section_for_script): Add section type parameter.
+       Handle script section types.
+       * layout.h (Layout::make_output_section_for_script): Add section
+       type parameter.
+       * output.cc (Output_section::Output_section): Initialize data member
+       is_noload_.
+       (Output_section::do_reset_address_and_file_offset): Do not set address
+       to 0 if section is a NOLOAD section.
+       * output.h (Output_section::is_noload): New method.
+       (Output_section::set_is_noload): Ditto.
+       (Output_section::is_noload_): New data member.
+       * script-c.h (Script_section_type): New enum type.
+       (struct Parser_output_section_header): Add new file section_type.
+       * script-sections.cc (Sections_element::output_section_name): Add
+       parameter for returning script section type.
+       (Output_section_definition::output_section_name): Ditto.
+       (Output_section_definition::section_type)P; New method.
+       (Output_section_definiton::script_section_type_name): Ditto.
+       (Output_section_definition::script_section_type_): New data member.
+       (Output_section_definition::Output_section_definition): Initialize
+       data member Output_section_definition::script_section_type_.
+       (Output_section_definition::create_sections): Pass script section type
+       to Layout::make_output_section_for_script.
+       (Output_section_definition::output_section_name): Return script
+       section type to caller.
+       (Output_section_definition::set_section_address): Do not advance
+       dot value and load address if section type is NOLOAD.  Set address
+       of NOLOAD sections regardless of section flags.
+       (Output_section_definition::print): Print section type if it is
+       not SCRIPT_SECTION_TYPE_NONE.
+       (Output_section_definition::section_type): New method.
+       (Output_section_definition::script_section_type_name): Ditto.
+       (Script_sections::output_section_name): Add new parameter
+       PSECTION_TYPE for returning script section type.  Pass it to
+       section elements.  Handle discard sections.
+       (Sort_output_sections::operator()): Handle NOLOAD sections.
+       * script-sections.h (Script_sections::Section_type): New enum type.
+       (Script_sections::output_section_name): Add a new parameter for
+       returning script section type.
+       * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT,
+       INFO and NOLOAD.
+       * yyscript.y (union): Add new field SECTION_TYPE.
+       (COPY, DSECT, INFO, NOLOAD): New tokens.
+       (opt_address_and_section_type): Change type to output_section_header.
+       (section_type): New non-terminal
+       (section_header): Handle section type.
+       (opt_address_and_section_type): Return section type value.
+
+2010-04-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * testsuite/plugin_common_test_1.c (foo): Add prototype.
+       * testsuite/plugin_common_test_2.c (foo): Likewise.
+
+2010-04-08  Doug Kwan  <dougkwan@google.com>
+
+       * merge.cc (Output_merge_data::set_final_data_size): Handle empty
+       Output_merge_data.
+       * output.cc (Output_section::add_merge_input_section): Simplify
+       code and return status of Output_merge_base::add_input_section.
+       Update merge section map only if Output_merge_base::add_input_section 
+       returns true.
+
+2010-04-07  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn
+       if section is marked as containing instructions but has no mapping
+       symbols.
+       (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get
+       correct section index.
+       (Arm_relobj::find_linked_text_section): Ditto.
+
+2010-04-07  Cary Coutant  <ccoutant@google.com>
+
+       * archive.cc (include_member): Destroy Read_symbols_data object before
+       releasing file.
+       * object.cc (Read_symbols_data::~Read_symbols_data) New destructor.
+       * object.h (Read_symbols_data::Read_symbols_data) New constructor.
+       (Read_symbols_data::~Read_symbols_data) New destructor.
+       (Section_relocs::Section_relocs) New constructor.
+       (Section_relocs::~Section_relocs) New destructor.
+       (Read_relocs_data::Read_relocs_data) New constructor.
+       (Read_relocs_data::~Read_relocs_data) New destructor.
+       * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member
+       pointers to NULL after deleting.
+
+2010-04-07  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc: Replace "endianity" with "endianness" in comments.
+       (Arm_exidx_cantunwind): Ditto.
+       (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures.
+       (Arm_relobj::merge_flags_and_attributes): New method.
+       (Arm_relobj::merge_flags_and_attributes_): New data member.
+       (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting.
+       (Arm_relobj::scan_sections_for_stubs): Ditto.
+       (Arm_relobj::do_read_symbols): Check to see if we really want to
+       merge processor-specific flags and attributes.  Exit early if
+       an object is empty except for section names and the undefined symbol.
+       (Target_arm::do_finalize_sections): Move check for ELF format to
+       Arm_relobj::do_read_symbols.  Merge processor specific flags and
+       attributes from a regular object only when we have determined that
+       it is aapropriate.  Do not create an .ARM.attributes section in
+       output if there is no regular input object.
+       (Target_arm::merge_processor_specific_flags): Check
+       --warn-mismatch before printing any error.
+       (Target_arm::merge_object_attributes): Ditto.
+       * gold.cc (queue_middle_tasks): Handle the case in which there is
+       no regular object in input.
+       * options.cc (General_options::parse_EB): New method.
+       (General_options::parse_EL): Same.
+       (General_options::General_options): Initialize endianness_.
+       * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch):
+       New options.
+       (General_options::Endianness): New enum.
+       (General_options::endianness): New method.
+       (General_options::endianness_): New data member.
+       * parameters.cc (Parameters::set_options): Check target endianness.
+       (Parameters::set_target_once): Ditto.
+       (Parameters::check_target_endianness): New method.
+       (parameters_force_valid_target): If either -EL or -EB is specified,
+       use it to define endianness of default target.
+       * parameters.h (Parameters::check_target_endianness): New method
+       declaration.
+       * target.h (class Target): Change "endianity" to "endianness"
+       in comments.
+
+2010-04-07  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
+       * configure: Regenerate.
+       * Makefile.in: Regenerate.
+       * testsuite/Makefile.in: Regenerate.
+
+2010-04-06  Cary Coutant  <ccoutant@google.com>
+
+       gcc PR lto/42757
+       * plugin.cc (Pluginobj::get_symbol_resolution_info): Check for
+       prevailing definitions of common symbols.
+       * testsuite/plugin_test_6.sh: New test case.
+       * testsuite/plugin_common_test_1.c: New test case.
+       * testsuite/plugin_common_test_2.c: New test case.
+       * testsuite/Makefile.am (plugin_test_6): New test case.
+       * testsuite/Makefile.in: Regenerate.
+
+2010-04-06  Nick Clifton  <nickc@redhat.com>
+
+       * po/vi.po: New Vietnamese translation.
+
+2010-03-30  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::using_thumb_only): Handle v6-M
+
+2010-03-25  Doug Kwan  <dougkwan@google.com>
+
+       * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
+       to avoid a conversion warning on a 32-bit host.
+
+2010-03-24  Ian Lance Taylor  <iant@google.com>
+
+       * testsuite/script_test_3.t: Add a TLS segment.
+       * testsuite/Makefile.am (check_PROGRAMS): Add
+       tls_phdrs_script_test.
+       (tls_phdrs_script_test_SOURCES): Define.
+       (tls_phdrs_script_test_DEPENDENCIES): Define.
+       (tls_phdrs_script_test_LDFLAGS): Define.
+       (tls_phdrs_script_test_LDADD): Define.
+       * testsuite/Makefile.in: Rebuild.
+
+2010-03-23  Cary Coutant  <ccoutant@google.com>
+
+       * fileread.cc (find_or_make_view): Fix comment.
+
+2010-03-23  Ian Lance Taylor  <iant@google.com>
+
+       * script-sections.cc (class Orphan_section_placement): Define
+       PLACE_TLS and PLACE_TLS_BSS.
+       (Orphan_section_placement::Orphan_section_placement): Initialize
+       new places.
+       (Orphan_section_placement::find_place): Handle SHF_TLS sections.
+       * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test.
+       (tls_script_test_SOURCES): Define.
+       (tls_script_test_DEPENDENCIES): Define.
+       (tls_script_test_LDFLAGS): Define.
+       (tls_script_test_LDADD): Define.
+       * testsuite/Makefile.in: Rebuild.
+
+2010-03-22  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relocate_functions::abs8,
+       Arm_relocate_functions::abs16): Use correct check for overflow
+       specified in the ARM ELF specs.
+       (Arm_relocate_functions): thumb_branch_common.  Handle bit 1 of branch
+       target of a BLX instruction specially.
+       (Reloc_stub::stub_type_for_reloc): Ditto.
+       (Relocate::relocate): Use symbolic names instead of numeric relocation
+       codes to report error.
+       (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8
+       workaround.
+       * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout,
+       thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and
+       thumb2_blx_out_of_range.stdout
+       (thumb_bl_out_of_range, thumb_bl_out_of_range.o,
+       thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices.
+       (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o,
+       thumb_blx_out_of_range.stdout, thumb_blx_out_of_range,
+       thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout,
+       thumb2_blx_in_range, thumb2_blx_in_range.o,
+       thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range,
+       thumb2_blx_out_of_range.o): New rules.
+       (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range,
+       thumb2_blx_in_range and thumb2_blx_out_of_range.
+       * testsuite/Makefile.in: Regenerate.
+       * arm_branch_in_range.sh: Add tests for THUMB BLX.
+       * testsuite/thumb_blx_in_range.s: New file.
+       * testsuite/thumb_blx_out_of_range.s: New file.
+
+2010-03-22  Rafael Espindola  <espindola@google.com>
+
+       * archive.cc (Should_include): Move to archive.h.
+       (should_include_member): Make it a member of Archive.
+       (Lib_group): New.
+       (Add_lib_group_symbols): New.
+       * archive.h: Include options.h.
+       (Archive_member): Moved from Archive.
+       (Should_include): Moved from archive.cc.
+       (Lib_group): New.
+       (Add_lib_group_symbols): New.
+       * dynobj.cc (do_should_include_member): New.
+       * dynobj.h (do_should_include_member): New.
+       * gold.cc (queue_initial_tasks): Update call to queue.
+       * main.cc (main): Print lib group stats.
+       * object.cc (do_should_include_member): New.
+       * object.h: Include archive.h.
+       (Object::should_include_member): New.
+       (Object::do_should_include_member): New.
+       (Sized_relobj::do_should_include_member): New.
+       * options.cc (General_options::parse_start_lib): New.
+       (General_options::parse_end_lib): New.
+       (Input_arguments::add_file): Handle lib groups.
+       (Input_arguments::start_group): Check we are not in a lib.
+       (Input_arguments::start_lib): New.
+       (Input_arguments::end_lib): New.
+       * options.h (General_options): Add start_lib and end_lib.
+       (Input_argument::lib_): New.
+       (Input_argument::lib): New.
+       (Input_argument::is_lib): New.
+       (Input_file_lib): New.
+       (Input_arguments::in_lib_): New.
+       (Input_arguments::in_lib): New.
+       (Input_arguments::start_lib): New.
+       (Input_arguments::end_lib_): New.
+       * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols
+       in unused members as preempted.
+       (Sized_pluginobj::do_should_include_member): New.
+       * plugin.h (Sized_pluginobj::do_should_include_member): New.
+       * readsyms.cc (Read_symbols::locks): If we are just reading a member,
+       return the blocker.
+       (Read_symbols::do_whole_lib_group): New.
+       (Read_symbols::do_lib_group): New.
+       (Read_symbols::do_read_symbols): Handle lib groups.
+       (Read_symbols::get_name): Handle lib groups.
+       * readsyms.h (Read_symbols): Add an archive member pointer.
+       (Read_symbols::do_whole_lib_group): New.
+       (Read_symbols::do_lib_group): New.
+       (Read_symbols::member_): New.
+       * script.cc (read_input_script): Update call to queue_soon.
+
+2010-03-19  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Stub_table::Stub_table): Initialize new data members
+       Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
+       (Stub_table::add_reloc_stub): Assign stub offset and update
+       Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_.
+       (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_):
+       New data members.
+       (Stub_table::update_data_size_and_addralign): Use
+       Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_
+       instead of going over all reloc stubs.
+       (Stub_table::finalize_stubs): Do not assign reloc stub offsets.
+       * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
+       Stringpool_template::offset_ to size of Stringpool_char.
+       (Stringpool_template::new_key_offset): Remove code to initialize
+       Stringpool_template::offset_.
+       * stringpool.h (Stringpool_template::set_no_zero_null): Set
+       Stringpool_template::offset_ to zero.
+
+2010-03-15  Doug Kwan  <dougkwan@google.com>
+
+       * stringpool.cc (Stringpool_template::Stringpool_template): Initialize
+       offset_.
+       (Stringpool_template::new_key_offset): New method.
+       (Stringpool_template::add_string): Assign offsets when adding new
+       strings.
+       (Stringpool_template::set_string_offsets): Do not set string offsets
+       when not optimizing.
+       * stringpool.h (Chunked_vector::Chunked_vector): Initialize data
+       member size_.
+       (Chunked_vector::clear): Clear size_.
+       (Chunked_vector::reserve): Call reserve method of all Element_vectors.
+       (Chunked_vector::size): Return size_.
+       (Chunked_vector::push_back): Use size_ to find insert position.
+       (Chunked_vector::size_): New data member. 
+       (Stringpool_template::set_no_zero_null): Assert string set is empty.
+       (Stringpool_template::new_key_offset): New method declaration.
+       (Stringpool_template::offset_): New data member.
+
+2010-03-15   Rafael Espindola  <espindola@google.com>
+
+       * readsyms.cc (Read_symbols::do_read_symbols): Update calls to
+       Add_symbols' constructor.
+       * readsyms.h (Add_symbols): Remove the input_group member.
+
+2010-03-10  Ian Lance Taylor  <iant@google.com>
+
+       * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
+       target to ask whether a reference to a symbol requires a stack
+       split.
+       * target.h (Target::is_call_to_non_split): New function.
+       (Target::do_is_call_to_non_split): Declare virtual function.
+       * target.cc: Include "symtab.h".
+       (Target::do_is_call_to_non_split): New function.
+       * i386.cc (Target_i386::do_is_call_to_non_split): New function.
+
+2010-03-10  Cary Coutant  <ccoutant@google.com>
+
+       * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
+       (File_read::open[1]): Remove initial mapping of whole_file_view_.
+       (File_read::open[2]): Add whole_file_view_ to list of views.
+       (File_read::make_view): Remove test of whole_file_view_.
+       (File_read::find_or_make_view): Create whole_file_view_ if
+       necessary.
+       (File_read::clear_views): Replace bool parameter with enum;
+       adjust all callers.  Don't delete views with permanent data;
+       do delete cached views and views from archives if
+       --no-keep-files-mapped is set.  Set whole_file_view_ to NULL
+       if clearing the corresponding view.
+       * fileread.h (File_read::Clear_views_mode): New enum.
+       (File_read::View::is_permanent_view): New method.
+       (File_read::clear_views): Replace bool parameter
+       with enum; adjust all callers.
+       * options.h (General_options): Change keep_files_mapped option;
+       add map_whole_files.
+       * readsyms.cc (Add_symbols::run): Delete sd_ object before
+       releasing the file.
+       * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing
+       the file.
+
+2010-03-10  David S. Miller  <davem@davemloft.net>
+
+       * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.
+
+2010-03-09  Sriraman Tallam  <tmsriram@google.com>
+
+       * icf.cc (get_section_contents): Add '@' marker after processing the
+       merge reloc.
+
+2010-03-08  Doug Kwan  <dougkwan@google.com>
+
+       * gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage
+       due to a conversion warning.
+       (Arm_relobj::update_output_local_symbol_count): Check for local
+       symbol with unset output index.
+
+2010-03-05  Ian Lance Taylor  <iant@google.com>
+
+       * options.h (class General_options): Add --spare-dynamic-tags.
+       * output.cc (Output_data_dynamic::set_final_data_size): Implement
+       --spare-dynamic-tags.
+
+2010-03-05  Ian Lance Taylor  <iant@google.com>
+
+       * incremental.cc: Include "libiberty.h".
+
+2010-03-05  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member
+       function, is_info_ member.
+       * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_.
+       (Versions::Versions): Update caller.
+       (Versions::define_base_version): Likewise.
+       (Versions::add_def): Likewise.
+
+2010-03-03  Sriraman Tallam  <tmsriram@google.com>
+
+       * i386.cc (Target_i386::can_check_for_function_pointers): New function.
+       (Scan::possible_function_pointer_reloc): New function.
+       (Scan::local_reloc_may_be_function_pointer): Change to call
+       possible_function_pointer_reloc.
+       (Scan::global_reloc_may_be_function_pointer): Ditto.
+       * icf.h (Icf::check_section_for_function_pointers): Change to reject
+       relocations in ".data.rel.ro._ZTV" section.
+       * testsuite/icf_safe_so_test.sh: Change to pass i386.
+       * testsuite/icf_safe_so_test.cc: Ditto.
+       * testsuite/icf_safe_test.cc: Ditto.
+       * testsuite/icf_safe_test.sh: Ditto.
+
+2010-03-03  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+           Ian Lance Taylor  <iant@google.com>
+
+       * target-reloc.h (relocate_section): Check the symbol table index
+       for -1U before setting the local symbol index.
+       (scan_relocatable_relocs): If copying the relocation, record that
+       the local symbol is required.
+       * object.h (Symbol_value::is_output_symtab_index_set): New
+       function.
+       (Symbol_value::may_be_discarded_from_output_symtab): New
+       function.
+       (Symbol_value::has_output_symtab_entry): New function.
+       (Symbol_value::needs_output_symtab_entry): Remove.
+       (Symbol_value::output_symtab_index): Make sure the symbol index is
+       set.
+       (Symbol_value::set_output_symtab_index): Make sure the symbol
+       index is not set.  Make sure the new index is valid.
+       (Symbol_value::set_must_have_output_symtab_entry): New function.
+       (Symbol_value::has_output_dynsym_entry): New function.
+       (Symbol_value::set_output_dynsym_index): Make sure the new index
+       is valid.
+       (Sized_relobj::set_must_have_output_symtab_entry): New function.
+       * object.cc (Sized_relobj::do_count_local_symbols): Only discard a
+       local symbol if permitted.
+       (Sized_relobj::do_finalize_local_symbols): Call
+       is_output_symtab_index_set rather than needs_output_symtab_entry.
+       (Sized_relobj::write_local_symbols): Call has_output_symtab_entry
+       rather than needs_output_symtab_entry.  Call
+       has_output_dynsym_entry rather than needs_output_dynsym_entry.
+       * arm.cc (Arm_relobj::update_output_local_symbol_count): Call
+       is_output_symtab_index_set rather than needs_output_symtab_entry.
+       * testsuite/discard_locals_relocatable_test.c: New file.
+       * testsuite/discard_locals_test.sh: Test -r.
+       * testsuite/Makefile.am (check_DATA): Add
+       discard_locals_relocatable_test1.syms,
+       discard_local_relocatable_test2.syms.
+       (MOSTLYCLEANFILES): Likewise.  Also add
+       discard_locals_relocatable_test1.lout and
+       discard_locals_relocatable_test2.out.
+       (discard_locals_relocatable_test1.syms): New target.
+       (discard_locals_relocatable_test.o): New target.
+       (discard_locals_relocatable_test1.out): New target.
+       (discard_locals_relocatable_test2.syms): New target.
+       (discard_locals_relocatable_test2.out): New target.
+       (various): Add missing ../ld-new dependencies.
+       * testsuite/Makefile.in: Rebuild.
+
+2010-03-03  Nick Clifton  <nickc@redhat.com>
+
+       * po/fi.po: New Finnish translation.
+
+2010-03-01  Doug Kwan  <dougkwan@google.com>
+
+       * layout.cc (Layout::Layout): Force section types of .init_array*,
+       .preinit_array* and .fini_array* sections.
+       * output.cc (Output_section::Input_section_sort_entry::has_priority):
+       Fix check of return value of std::string::find.().
+       (Output_section::Input_section_sort_compare::operator()): Remove
+       comment about .init_array.
+       (Output_section::Input_section_sort_init_fini_compare::operator()):
+       New method.
+       (Output_section::sort_attached_input_sections): Handle .init_array
+       and .fini_array specially.
+       * output.h (Output_section::Inut_section_sort_compare): Update
+       comment.
+       (Output_section::Input_section_sort_init_fini_compare): New struct.
+
+2010-02-26  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat
+       R_ARM_PREL31 and R_ARM_SBREL31 as position independent.
+       * testsuite/debug_msg.sh: Avoid matching source line number for
+       use of global variable undef_int.
+
+2010-02-26  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::scan_reloc_for_stub): Move code handling
+       R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs.
+       (Target_arm::scan_reloc_section_for_stubs): Instead of calling
+       scan_reloc_for_stub, do all processing of R_ARM_V4BX here.
+       * options.cc (General_options::General_options): Initialize member
+       fix_v4bx_.
+       * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh
+       (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout
+       and rm_no_fix_v4bx.stdout
+       (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o,
+       arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking,
+       arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules.
+       (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking
+       and arm_no_fix_v4bx.
+       * Makefile.in: Regenerate.
+       * testsuite/arm_fix_v4bx.s: New file.
+       * testsuite/arm_fix_v4bx.sh: Ditto.
+
+2010-02-24  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::got_section): Make the .got section the first
+       non RELRO section in the data segment.
+       * testsuite/script_test_5.sh: Fix match patterns to avoid matching
+       suffixes of section names.
+
+2010-02-24  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::do_finalize_sections): Skip processor specific
+       flags and attributes merging if an input file is a binary file.
+       * fileread.cc (Input_file::open): Record format of original file.
+       * fileread.h (Input_file::Format): New enum type.
+       (Input_file::Input_file): Initialize data member format_.
+       (Input_file::format): New method definition.
+       (Input_file::format_):: New data member.
+
+2010-02-24  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_output_data_got): New class.
+       (ARM_TCB_SIZE): New constant
+       (Target_arm): Use Arm_output_data_got instead of Output_data_got.
+       (Arm_output_section::fix_exidx_coverage): Add a parameter for layout.
+       If user uses a script with a SECTIONS clause, issue only a warning
+       for a misplaced EXIDX input section.  Otherwise, issue an error.
+       (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing
+       garbage collection.
+       (Target_arm::got_mode_index_entry): Handle static linking.
+       (Target_arm::Scan::local): Ditto.
+       (Target_arm::Scan::global): Ditto.
+       (Target_arm::Relocate::relocate_tls): Handle static linking.  Fix
+       all incorrectly implemented relocations.
+       (Target_arm::fix_exidx_coverage): Pass layout to 
+       Arm_output_section::fix_exidx_coverage.
+       * layout.cc (Layout::section_name_mapping): Remove trailing dots
+       from ".ARM.exidx." and ".ARM.extab.".
+
+2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+
+       * arm.cc (Target_arm::do_finalize_sections): Create attribute
+       section if it does not already exist.
+       * attributes.cc (Attributes_section_data::Attributes_section_data):
+       Don't crash if size is zero.
+
+2010-02-23  Viktor Kutuzov  <vkutuzov@accesssoftek.com>
+           Ian Lance Taylor  <iant@google.com>
+
+       * gold.cc (queue_middle_tasks): If no input files were opened,
+       exit.
+       * workqueue.h (Task_function::Task_function): Assert that there is
+       a blocker.
+
+2010-02-22  Doug Kwan  <dougkwan@google.com>
+
+       * gold-threads.h (Once::~Once): Explicitly define virtual destructor.
+       * icf.cc (get_section_contents): Cast snprintf arguments to long long
+       types to avoid warnings due to different uint64_t implementations
+       on different hosts.
+
+2010-02-21  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in
+       handling of the maximum backward branch offset.
+       (Arm_relocate_functions::thumb_branch_common): Ditto.
+       * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh.
+       (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout
+       thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout, 
+       thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout.
+       (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o,
+       arm_bl_out_of_range.stdout, arm_bl_out_of_range,
+       arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range,
+       thumb_bl_in_range.o, thumb_bl_out_of_range.stdout,
+       thumb_bl_out_of_range thumb_bl_out_of_range.o,
+       thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o
+       thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range,
+       thumb2_bl_out_of_range.o): New rules.
+       (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range,
+       thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and
+       thumb2_bl_out_of_range
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/arm_bl_in_range.s: New file.
+       * testsuite/arm_bl_out_of_range.s: Ditto.
+       * testsuite/arm_branch_in_range.sh: Ditto.
+       * testsuite/arm_branch_range.t: Ditto.
+       * testsuite/thumb2_branch_range.t: Ditto.
+       * testsuite/thumb_bl_in_range.s: Ditto.
+       * testsuite/thumb_bl_out_of_range.s: Ditto.
+       * testsuite/thumb_branch_range.t: Ditto.
+
+2010-02-20  Sriraman Tallam  <tmsriram@google.com>
+
+       * gc.h (gc_process_relocs): Change vectors to point to the new list.
+       Add reloc offset information.
+       * icf.cc (get_section_contents): Change iterators to point to the new
+       vectors. Add reloc offset information to the contents.
+       * icf.h (Icf::Sections_reachable_info): New typedef.
+       (Icf::Sections_reachable_list): New typedef.
+       (Icf::Offset_info): New typedef.
+       (Icf::Reloc_info): New struct typedef.
+       (Icf::Reloc_info_list): New typedef.
+       (Icf::symbol_reloc_list): Delete method.
+       (Icf::addend_reloc_list): Delete method.
+       (Icf::section_reloc_list): Delete method.
+       (Icf::reloc_info_list): New method.
+       (Icf::reloc_info_list_): New member.
+
+2010-02-19  Doug Kwan  <dougkwan@google.com>
+
+       * arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32,
+       R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented.
+       * arm.cc (Arm_relocation_functions): New forward declaration.
+       (Target_arm::Target_arm): Initialize new data members
+       got_mod_index_offset_ and tls_base_symbol_defined_.
+       (Target_arm::Relocate::relocate_tls): New method.
+       (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol,
+        Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section):
+       New methods.
+       (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET,
+       GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC.
+       (Target_arm::got_mod_index_offset_,
+       Target_arm::tls_base_symbol_defined_): New data members.
+       (Target_arm::Scan::local, Target::Scan::global,
+       Target_arm::Relocate::relocate): Handle 32-bit initial TLS
+       relocations.
+
+2010-02-18  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::find_linked_text_section): New method.
+       (Arm_relobj::make_exidx_input_section): Pass section index of linked
+       text section as a parameter becuase some broken tools may not set
+       the link in section header.
+       (Target_arm::has_got_section): New method.
+       (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section
+       without any mapping symbol as data only.  Remove warning.
+       (Arm_relobj::do_read_synbols): If an EXIDX input section has no
+       link in its section header, try to discover the link by inspecting the
+       REL31 relocation at the beginning of the section.
+       (Target_arm::Scan::check_non_pic): Report name of offending relocation
+       in error message.
+       (Target_arm::Scan::global): Treat any reference to the symbol
+       _GLOBAL_OFFSET_TABLE_ as a GOT access.
+
+2010-02-12  Sriraman Tallam  <tmsriram@google.com>
+
+       * arm.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       * i386.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function.
+       (Scan::global_reloc_may_be_function_pointer): New function.
+       (Scan::possible_function_pointer_reloc): New function.
+       (Target_x86_64::can_check_for_function_pointers): New function.
+       * gc.h (gc_process_relocs): Scan relocation types to determine if
+       function pointers were taken for targets that support it.
+       * icf.cc (Icf::find_identical_sections): Include functions for
+       folding in safe ICF whose pointer is not taken.
+       * icf.h (Secn_fptr_taken_set): New typedef.
+       (fptr_section_id_): New member.
+       (section_has_function_pointers): New function.
+       (set_section_has_function_pointers): New function.
+       (check_section_for_function_pointers): New function.
+       * options.h: Fix comment for safe ICF option.
+       * target.h (can_check_for_function_pointers): New function.
+       * testsuite/Makefile.am: Add icf_safe_so_test test case.
+       Modify icf_safe_test for X86-64.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/icf_safe_so_test.cc: New file.
+       * testsuite/icf_safe_so_test.sh: New file.
+       * testsuite/icf_safe_test.cc (kept_func_3): New function.
+       (main): Change to take pointer to function kept_func_3.
+       * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe
+       folding is done correctly for X86-64.
+
+2010-02-12  David S. Miller  <davem@davemloft.net>
+
+       * output.h (Output_reloc<SHT_REL>::Output_reloc): Add
+       is_symbolless parameter.
+       (Output_reloc<SHT_REL>::is_symbolless): New.
+       (Output_reloc<SHT_REL>::is_symbolless_): New.
+       (Output_reloc<SHT_REL>::type_): Decrease to 29 bits.
+       (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter.
+       (Output_reloc<SHT_RELA>::is_symbolless): New.
+       (Output_data_reloc::add_global): Handle is_symbolless.
+       (Output_data_reloc::add_global_relative): Likewise.
+       (Output_data_reloc::add_local): Likewise.
+       (Output_data_reloc::add_local_relative): Likewise.
+       (Output_data_reloc::add_symbolless_global_addend): New.
+       (Output_data_reloc::add_symbolless_local_addend): New.
+       * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle
+       is_symbolless.
+       (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_
+       instead of ->is_relative_
+       (Output_reloc::write): Likewise.
+       (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_
+       (Output_reloc::write_rel): Simplify.
+
+       * sparc.cc (Target_sparc::Scan::local): Use
+       ->add_symbolless_local_addend as needed.
+       (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as
+       needed.  Also, emit appropriate unaligned vs. aligned dynamic reloc
+       based upon relocation offset.
+
+2010-02-11  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::Scan::local): Fix bugs in relocation handling.
+       (Target_arm::Scan::global): Ditto.  Also remove a comment before the
+       beginning of function.
+       (Target_arm::Relocate::relocate): Remove error messages for MOVW_ABS
+       and MOVT_ABS relocations.  Those are non issued in scanning.  Fix
+       parameter is_32bit in calls to should_apply_static_reloc.
+       * testsuite/Makefile.am (check_SCRIPTS): Add arm_abs_global.sh.
+       (check_DATA): Add arm_abs_global.stdout.
+       (arm_abs_lib.o, libarm_abs.so, arm_abs_global.o, arm_abs_global,
+       arm_abs_global.stdout): New rules.
+       (MOSTLLYCLEANFILES): Add arm_abs_global
+       * Makefile.in: Regenerate.
+       * testsuite/arm_abs_global.s: New file.
+       * testsuite/arm_abs_global.sh: Ditto.
+       * testsuite/arm_abs_lib.s: Ditto.
+
+2010-02-11  Ian Lance Taylor  <iant@google.com>
+
+       * gold.cc (queue_middle_gc_tasks): Use a separate blocker for each
+       Read_relocs task.
+       (queue_middle_tasks): Likewise, and also for Scan_relocs.  Run
+       Allocate_commons_task first.
+       * reloc.cc (Read_relocs::run): Pass next_blocker_ down to next
+       task, rather than symtab_lock_.
+       (Gc_process_relocs::~Gc_process_relocs): New function.
+       (Gc_process_relocs::is_runnable): Check this_blocker_.
+       (Gc_process_relocs::locks): Use next_blocker_ rather than
+       blocker_.
+       (Scan_relocs::~Scan_relocs): New function.
+       (Scan_relocs::is_runnable): Check this_blocker_ rather than
+       symtab_lock_.
+       (Scan_relocs::locks): Drop symtab_lock_ and blocker_.  Add
+       next_blocker_.
+       * reloc.h (class Read_relocs): Drop symtab_lock_ and blocker_
+       fields.  Add this_blocker_ and next_blocker_ fields.  Adjust
+       constructor accordingly.
+       (class Gc_process_relocs): Likewise.
+       (class Scan_relocs): Likewise.
+       * common.h (class Allocate_commons_task): Remove symtab_lock_
+       field, and corresponding constructor parameter.
+       * common.cc (Allocate_commons_tasK::is_runnable): Remove use of
+       symtab_lock_.
+       (Allocate_commons_task::locks): Likewise.
+
+2010-02-11  Ian Lance Taylor  <iant@google.com>
+
+       * gold-threads.h (class Once): Define.
+       (class Initialize_lock): Rewrite as child of Once.
+       * gold-threads.cc (class Once_initialize): Define.
+       (once_pointer_control): New static variable.
+       (once_pointer, once_arg): New static variables.
+       (c_run_once): New static function.
+       (Once::Once, Once::run_once, Once::internal_run): New functions.
+       (class Initialize_lock_once): Remove.
+       (initialize_lock_control): Remove.
+       (initialize_lock_pointer): Remove.
+       (initialize_lock_once): Remove.
+       (Initialize_lock::Initialize_lock): Move to gold-threads.h.
+       (Initialize_lock::initialize): Rewrite.
+       (Initialize_lock::do_run_once): New function.
+       * archive.cc (Archive::interpret_header): Only clear name if it is
+       not already empty.
+       * fileread.cc: Include "gold-threads.h"
+       (file_counts_lock): New static variable.
+       (file_counts_initialize_lock): Likewise.
+       (File_read::release): Only increment counts when using --stats.
+       Use a lock around the increment.
+       * parameters.cc (class Set_parameters_target_once): Define.
+       (set_parameters_target_once): New static variable.
+       (Parameters::Parameters): Move here from parameters.h.
+       (Parameters::set_target): Rewrite.
+       (Parameters::set_target_once): New function.
+       (Parameters::clear_target): Move here and rewrite.
+       * parameters.h (class Parameters): Update declarations.  Add
+       set_parameters_target_once_ field.
+       (Parameters::Parameters): Move to parameters.cc.
+       (Parameters::clear_target): Likewise.
+       * readsyms.cc (Read_symbols::do_group): Create a Start_group
+       task.
+       (Start_group::~Start_group): New function.
+       (Start_group::is_runnable): New function.
+       (Start_group::locks, Start_group::run): New functions.
+       (Finish_group::run): Change saw_undefined to size_t.
+       * readsyms.h (class Start_group): Define.
+       (class Finish_group): Change saw_undefined_ field to size_t.
+       (Finish_group::Finish_group): Remove saw_undefined and
+       this_blocker parameters.  Change all callers.
+       (Finish_group::set_saw_undefined): New function.
+       (Finish_group::set_blocker): New function.
+       * symtab.h (class Symbol_table): Change saw_undefined to return
+       size_t.  Change saw_undefined_ field to size_t.
+       * target-select.cc (Set_target_once::do_run_once): New function.
+       (Target_selector::Target_selector): Initialize set_target_once_
+       field.  Don't initialize lock_ and initialize_lock_ fields.
+       (Target_selector::instantiate_target): Rewrite.
+       (Target_selector::set_target): New function.
+       * target-select.h (class Set_target_once): Define.
+       (class Target_selector): Update declarations.  Make
+       Set_target_once a friend.  Remove lock_ and initialize_lock_
+       fields.  Add set_target_once_ field.
+
+2010-02-10  Ian Lance Taylor  <iant@google.com>
+
+       * dirsearch.cc (Dirsearch::initialize): Add all blockers before
+       queueing any tasks.
+       * gold.cc (queue_middle_gc_tasks): Likewise.  Fix final blocker.
+       (queue_middle_tasks): Add all blockers before queueing any tasks.
+       (queue_final_tasks): Likewise.
+       * token.h (Task_token::add_blockers): New function.
+       * object.h (Input_objects::number_of_relobjs): New function.
+
+2010-02-10  Ian Lance Taylor  <iant@google.com>
+
+       * i386.cc (Relocate::relocate_tls): A local symbol is final if not
+       shared, not if not position independent.
+       * x86_64.cc (Relocate::relocate_tls): Likewise.
+       * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_pic_test.
+       (tls_pie_pic_test): New target.
+       * testsuite/Makefile.in: Rebuild.
+
+       * testsuite/Makefile.am (check_PROGRAMS): Add tls_pie_test.
+       (tls_test_main_pie.o, tls_test_pie.o): New targets.
+       (tls_test_file2_pie.o, tls_test_c_pie.o, tls_pie_test): Likewise.
+       * testsuite/Makefile.in: Rebuild.
+
+2010-02-09  David S. Miller  <davem@davemloft.net>
+
+       * sparc.cc (Target_sparc::Scan::local): Do not emit relocs other than
+       R_SPARC_RELATIVE using ->add_local_relative().
+       (Target_sparc::Scan::global): Likewise for ->add_global_relative().
+
+       * output.h (Output_data_dynamic::add_section_size): New method
+       that takes two Output_data objects.
+       (Output_data_dynamic::Dynamic_entry): Create storage for secondary
+       entry param.  Handle it in initializers.
+       * output.cc (Output_data_dynamic::Dynamic_entry::write): For
+       DYNAMIC_SECTION_SIZE, add in second object size if non-NULL.
+       * layout.h (Layout::add_target_dynamic_tags): Add dynrel_includes_plt
+       arg.
+       * layout.cc (Layout::add_target_dynamic_tags): If dynrel_includes_plt,
+       and .rela.plt exists, set DT_REL{,A}SZ to sum of .rela.dyn and .rela.plt
+       * arm.cc (Target_arm::do_finalize_sections): Update to pass false
+       for dynrel_includes_plt.
+       * i386.cc (Target_i386::do_finalize_sections): Likewise.
+       * x86_64.cc (Target_x86_64::do_finalize_sections): Likewise.
+       * sparc.cc (Target_sparc::make_plt_entry): Force .rela.dyn to be output
+       before .rela.plt
+       (Target_sparc::do_finalize_sections): Update to pass true for
+       dynrel_includes_plt.
+       * powerpc.cc (Target_powerpc::make_plt_entry): Force .rela.dyn to be
+       output before .rela.plt
+       (Target_powerpc::do_finalize_sections): Update to pass true for
+       dynrel_includes_plt when 32-bit.
+
+2010-02-08  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Arm_relobj::simple_input_section_output_address): New
+       method.
+       (Arm_relobj::section_needs_cortex_a8_stub_scanning,
+       Arm_relobj::scan_section_for_cortex_a8_stubs,
+       Arm_relobj::do_relocation_section): Instead of calling
+       Output_section::output_address, use faster
+       Arm_relobj::simple_input_section_output_address.
+
+2010-02-08  David S. Miller  <davem@davemloft.net>
+
+       * sparc.cc (Target_sparc::Relocate::relocate): If relocation offset is
+       unaligned for R_SPARC_16, R_SPARC_32, or R_SPARC_64, use the unaligned
+       relocation helper function.
+
+       * sparc.cc (Target_sparc::Scan::local): Handle R_SPARC_GOTDATA_OP*
+       just like R_SPARC_GOT{10,13,22}.
+       (Target_sparc::Scan::local): Likewise.
+       (Target_sparc::Relocate:relocate): Likewise.
+
+2010-02-06  Ian Lance Taylor  <iant@google.com>
+
+       * configure.ac: Rewrite targetobjs duplicate removal code to use
+       only shell constructs.
+       * configure: Rebuild.
+
+2010-02-05  Doug Kwan  <dougkwan@google.com>
+
+       PR 11247
+       * arm.cc (Arm_relobj::section_is_scannable): New method.
+       (Arm_relobj::section_needs_reloc_stub_scanning): Use it.
+       (Arm_relobj::section_needs_cortex_a8_stub_scanning): Same.
+
+2010-02-04  Doug Kwan  <dougkwan@google.com>
+
+       PR 11247
+       * arm-reloc-property.cc (cstdio): Include.
+       * configure.ac (targetobjs): Remove duplicates.
+       * configure: Regenerate.
+       * resolve.cc (Symbol_table::resolve): Explicit instantiate both
+       big and little endian version for a given address size.
+
+2010-02-03  Doug Kwan  <dougkwan@google.com>
+
+       * arm-reloc-property.cc
+       (Arm_reloc_property_table::reloc_name_in_error_message): New method
+       definition.
+       * arm-reloc-property.h
+       (Arm_reloc_property_table::get_implemented_static_reloc_property):
+       New method definition.
+       (Arm_reloc_property_table::reloc_name_in_error_message): New method
+       declaration.
+       * arm-reloc.def (THM_MOVT_ABS, THM_MOVT_PREL, THM_MOVT_BREL): Change
+       overflow to N.
+       (GOT_PREL): Change implemented to Y.
+       * arm.cc (Target_arm::reloc_uses_thumb_bit): Remove method.
+       (Target_arm::Relocate::reloc_needs_sym_origin): Remove method.
+       (Arm_relocate_functions::movw_abs_nc): Remove method.
+       (Arm_relocate_functions::movt_abs): Ditto.
+       (Arm_relocate_functions::thm_movw_abs_nc): Ditto.
+       (Arm_relocate_functions::thm_movt_abs): Ditto.
+       (Arm_relocate_functions::movw_rel_nc): Ditto.
+       (Arm_relocate_functions::movw_rel): Ditto.
+       (Arm_relocate_functions::movt_rel): Ditto.
+       (Arm_relocate_functions:thm_movw_rel_nc): Ditto.
+       (Arm_relocate_functions:thm_movw_rel): Ditto.
+       (Arm_relocate_functions:thm_movt_rel): Ditto.
+       (Arm_relocate_functions::movw, Arm_relocate_functions::movt,
+       (Arm_relocate_functions::thm_movw, Arm_relocate_functions::thm_movt):
+       New method definitions.
+       (Arm_relocation_functions::arm_grp_alu): Add assertion for group index.
+       (Arm_relocation_functions::arm_grp_ldr): Ditto.
+       (Arm_relocation_functions::arm_grp_ldrs): Ditto.
+       (Arm_relocation_functions::arm_grp_ldc): Ditto.
+       (Target_arm::Relocate::relocate): Check for non-static or
+       unimplemented relocation code and exit early.  Change calls to
+       Target_arm::reloc_uses_thumb_bit and
+       Target_arm::Reloc::reloc_needs_sym_origin to use relocation property
+       instead.  Refactor code to handle similar relocations to increase
+       code sharing.  Remove check for unsupported relocation code in switch
+       statement.
+       (Target_arm::Relocatable_size_for_reloc::get_size_for_reloc): Use
+       relocation property table to find out size.  Change error message to
+       print out the name of a relocation code instead of the numeric value.
+       (Target_arm::scan_reloc_for_stub): Use relocation property table
+       instead of calling Target_arm::reloc_uses_thumb_bit().
+
+2010-02-02  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (Target_arm::relocate_section): Do view adjustment for all
+       types of relaxed input section.
+
+2010-02-02  Doug Kwan  <dougkwan@google.com>
+
+       * Makefile.am (HFILES): Add arm-reloc-property.h.
+       (DEFFILES): New.
+       (TARGETSOURCES): Add arm-reloc-property.cc
+       (ALL_TARGETOBJS): Add arm-reloc-property.$(OBJEXT)
+       (libgold_a_SOURCES): $(DEFFILES)
+       * Makefile.in: Regenerate.
+       * arm-reloc-property.cc: New file.
+       * arm-reloc-property.h: New file.
+       * arm-reloc.def: New file.
+       * arm.cc: Update comments.
+       (arm-reloc-property.h): New included header.
+       (arm_reloc_property_table): New global variable.
+       (Target_arm::do_select_as_default_target): New method definition.
+       * configure.tgt (armeb*-*-*,armbe*-*-*,arm*-*-*): Add
+       arm-reloc-property to targ_extra_obj.
+       * parameters.cc (set_parameters_target): Call
+       Target::select_as_default_target().
+       * target.h (Target::select_as_default_target): New method definition.
+       (Target::do_select_as_default_target): Same.
+
 2010-02-01  Doug Kwan  <dougkwan@google.com>
 
        * arm.cc (Arm_exidx_fixup::Arm_exidx_fixup): Initialize