2009-08-11 Doug Kwan <dougkwan@google.com>
[deliverable/binutils-gdb.git] / gold / ChangeLog
index e351dbaa744526fef14f09304ffd3edba7dfe487..754938264c6a4494b730663ad8950056da6ad0da 100644 (file)
+2009-08-11  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc: Update comments.
+       (Target_arm::do_finalize_sections): Add a special PT_ARM_EXIDX
+       segment to locate the .ARM.exidx section if present.
+
+2009-08-09  Doug Kwan  <dougkwan@google.com>
+
+       * dynobj.h (Sized_dynobj::do_section_entsize): Revert the previous
+       patch.
+
+2009-08-07  Sriraman Tallam  <tmsriram@google.com>
+       * dynobj.h (Sized_dynobj::do_section_entsize): Add return to avoid
+       compiler warnings.
+
+2009-08-06  Sriraman Tallam  <tmsriram@google.com>
+
+       * x86_64.cc (Target_x86_64::Relocate::relocate_tls): Check for a
+       valid tls_segment only for non-debug-section relocations.
+       * testsuite/Makefile.am: Add gc_tls_test.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/gc_tls_test.cc: New file.
+       * testsuite/gc_tls_test.sh: New file.
+
+2009-08-05  Sriraman Tallam  <tmsriram@google.com>
+       
+       * icf.cc: New file.
+       * icf.h: New file.
+       * Makefile.am (CCFILES): Add icf.cc.
+       (HFILES): Add icf.h
+       * Makefile.in: Regenerate.
+       * dynobj.h (Sized_dynobj::do_section_entsize): New function.
+       * gc.h (gc_process_relocs): Populate lists used by icf to contain
+       section, symbol and addend information for the relocs.
+       * gold.cc (queue_middle_tasks): Call identical code folding.
+       * gold.h: Add defines for multimap.
+       * layout.cc (Layout::create_symtab_sections): Add symtab as parameter
+       to the call of finalize_local_symbols.
+       * main.cc (main): Create object of class Icf.
+       * object.cc (Sized_relobj::do_layout): Allow this function to be
+       called twice during icf.
+       (Sized_relobj::do_finalize_local_symbols): Fold symbols corresponding
+       to sections marked as identical by icf.
+       (Sized_relobj::do_section_flags): Get section_flags from Symbols_data
+       when available.
+       (Sized_relobj::do_section_entsize): New function.
+       * object.h (Object::section_entsize): New function.
+       (Object::do_section_entsize): New pure virtual function.
+       (Relobj::finalize_local_symbols): Add new parameter.
+       (Relobj::do_section_entsize): New function.
+       * options.h (General_options::icf): New option.
+       (General_options::icf_iterations): New option.
+       (General_options::print_icf_sections): New option.
+       * plugin.cc (Sized_pluginobj::do_section_entsize): New function.
+       * plugin.h (Sized_pluginobj::do_section_entsize): New function.
+       * reloc.cc (Read_relocs::run): Delay scanning relocs when doing
+       icf.
+       * symtab.cc (Symbol_table::is_section_folded): New function.
+       (Symbol_table::sized_finalize_symbol):  Fold symbols corresponding
+       to sections marked as identical by icf.
+       * symtab.h (Symbol_table::set_icf): New function.
+       (Symbol_table::icf): New function.
+       (Symbol_table::is_section_folded): New function.
+       (Symbol_table::icf_): New data member.
+       * target-reloc.h (relocate_section): Ignore sections folded by icf.
+       * testsuite/Makefile.am: Add commands to build icf_test.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/icf_test.sh: New file.
+       * testsuite/icf_test.cc: New file.
+
+2009-07-24  Chris Demetriou  <cgd@google.com>
+
+       * layout.cc (is_compressible_debug_section): Fix incorrect
+       comment about compressed section names.
+
+2009-07-20  Ian Lance Taylor  <ian@airs.com>
+
+       PR 10419
+       * x86_64.cc (Target_x86_64::do_code_fill): Correct nop sequences.
+
+2009-07-16  Ian Lance Taylor  <iant@google.com>
+
+       PR 10400
+       * layout.h: #include <map>.
+       (class Kept_section): Change from struct to class.  Add accessors
+       and setters.  Add section size to Comdat_group mapping.  Change
+       Comdat_group to std::map.  Add is_comdat_ field.  Add
+       linkonce_size field in union.
+       (class Layout): Update declaration of find_or_add_kept_section.
+       Don't declare find_kept_object.
+       * layout.cc (Layout::find_or_add_kept_section): Remove candidate
+       parameter.  Add object, shndx, is_comdat, and is_group_name
+       parameters.  Change all callers.  Adjust for new Kept_section.
+       (Layout::find_kept_object): Remove.
+       * object.cc (Sized_relobj::include_section_group): Update use of
+       Kept_section.  Rename secnum to shndx.  Only record
+       Kept_comdat_section if sections are the same size.
+       (Sized_relobj::include_linkonce_section): Update use of
+       Kept_section.  Only record Kept_comdat_section if sections are the
+       same size.  Set size of linkonce section.
+       (Sized_relobj::map_to_kept_section): Update call to
+       get_kept_comdat_section.
+       * object.h (class Sized_relobj): Rename fields in
+       Kept_comdat_section to drop trailing underscores; change object
+       field to Relobj*.  Change Kept_comdat_section_table to store
+       struct rather than pointer.
+       (Sized_relobj::set_kept_comdat_section): Remove kept parameter.
+       Add kept_object and kept_shndx parameters.  Change all callers.
+       (Sized_relobj::get_kept_comdat_section): Change return type to
+       bool.  Add kept_object and kept_shndx parameters.  Change all
+       callers.
+       * plugin.cc (Pluginobj::include_comdat_group): Update call to
+       Layout::find_or_add_kept_section.
+
+2009-07-09  Ian Lance Taylor  <iant@google.com>
+
+       * merge.cc (Object_merge_map::initialize_input_to_output_map):
+       Reserve space in the hash table.
+
+2009-07-06  Mikolaj Zalewski  <mikolajz@google.com>
+
+       * fileread.cc (File_read::get_mtime): New method.
+       * fileread.h (Timespec): New structure.
+       (File_read::get_mtime): New method.
+       * incremental.cc (Incremental_inputs_entry_data::timestamp_usec):
+       Renamed from timestamp_nsec.
+       (Incremental_inputs_entry_write::timestamp_sec): Fix argument to
+       Elf_Xword.
+       (Incremental_inputs_entry_write::timestamp_usec): Renamed from 
+       timestamp_nsec.
+       (Incremental_inputs::report_archive): Save mtime; style fix. 
+       (Incremental_inputs::report_obejct): Save mtime; style fix.
+       (Incremental_inputs::report_script): Save mtime; style fix.
+       (Incremental_inputs::finalize_inputs): Style fix.
+       (Incremental_inputs::finalize): Style fix.
+       (Incremental_inputs::create_input_section_data): Store inputs
+       mtime.
+       * incremental.h (Incremental_inputs::report_script): Add mtime
+       argument.
+       (Incremental_inputs::Input_info::Input_info): Intialize only one
+       union member.
+       (Incremental_inputs::Input_info::archive): Move to nameless
+       union.
+       (Incremental_inputs::Input_info::obejct): Move to nameless union.
+       (Incremental_inputs::Input_info::script): Move to nameless union.
+       (Incremental_inputs::mtime): New field.
+       * script.cc (read_input_script): Pass file mtime to
+       Incremental_input.
+       * script.h (Script_info::inputs): Style fix.
+
+2009-07-01  Ian Lance Taylor  <ian@airs.com>
+
+       * freebsd.h (Target_freebsd::do_adjust_elf_header): Use size
+       instead of 32.
+
+2009-06-24  Ian Lance Taylor  <iant@google.com>
+
+       PR 10156
+       * layout.cc (Layout::choose_output_section): If we find an
+       existing section, update the flags.
+       (Layout::create_notes): New function, broken out of
+       Layout::finalize.
+       (Layout::finalize): Don't create note sections.
+       (Layout::create_note): Don't crash if linker script discards
+       section.
+       (Layout::create_gold_note): Likewise.
+       (Layout::create_build_id): Likewise.  Don't set
+       after_input_sections on the section.
+       (Layout::create_executable_stack_info): Remove target parameter.
+       Change caller.
+       * layout.h (class Layout): Declare create_notes.  Update
+       declaration of create_executable_stack_info.
+       * gold.cc (queue_middle_tasks): Call create_notes.
+       * output.cc (Output_section::update_flags_for_input_section): Move
+       here from output.h.  If SHF_ALLOC flag is newly set, mark address
+       invalid.
+       * output.h (Output_data::mark_address_invalid): New function.
+       (class Output_section): Only declare, not define,
+       update_flags_for_input_section.  Remove set_flags.
+
+2009-06-24  Ian Lance Taylor  <iant@google.com>
+
+       * script-sections.cc (Output_section_definition::
+       set_section_addresses): Rename shadowing local load_address to
+       laddr.
+
+2009-06-24  Ian Lance Taylor  <iant@google.com>
+
+       PR 10244
+       * reloc.cc (relocate_sections): Skip empty relocation sections.
+
+2009-06-23  Ian Lance Taylor  <iant@google.com>
+
+       PR 10156
+       * layout.cc (Layout::create_note): Use choose_output_section
+       rather than make_output_section.
+
+2009-06-23  Ian Lance Taylor  <iant@google.com>
+
+       PR 10237
+       * options.cc (General_options::parse_V): Set printed_version_.
+       (General_options::General_options): Initialize printed_version_.
+       * options.h (class General_options): Add printed_version_ field.
+       * gold.cc (queue_initial_tasks): If there are no input files,
+       don't give a fatal error if we printed the version information.
+       (queue_middle_tasks): If using -r with a shared object, give a
+       fatal error rather than an ordinary error.
+
+2009-06-23  Ian Lance Taylor  <iant@google.com>
+
+       PR 10219
+       * layout.cc (Layout::Layout): Initialize have_stabstr_section_.
+       (Layout::make_output_section): Set have_stabstr_section_ if we see
+       a .stab*str section.
+       (Layout::finalize): Call link_stabs_sections.
+       (Layout::link_stabs_sections): New file.
+       * layout.h (class Layout): Add have_stabstr_section_ field.
+       Declare link_stabs_sections.
+
+2009-06-23  Doug Kwan  <dougkwan@google.com>
+
+       * Makefile.am (libgold_a_LIBADD): New.
+       (ld_new_DEPENDENCIES, ld_new_LDADD): Remove LIBOBJS
+       * Makefile.in: Regenerate.
+       * config.in (HAVE_DECL_MEMMEM, HAVE_DECL_STRNDUP): New.
+       * configure: Regenerate.
+       * configure.ac (AC_CHECK_DECLS): Add strndup and memmem.
+       * fileread.cc: Include sys/state.h
+       * gold.h: Declare memmem and strndup if found missing.
+       * gold_reloc.h: Include byteswap.h if HAVE_BYTESWAP_H is defined.
+
+2009-06-23  Ian Lance Taylor  <iant@google.com>
+
+       * configure.ac: Call AC_CHECK_DECLS using C, not C++.
+       * configure: Rebuild.
+
+2009-06-23  Ian Lance Taylor  <iant@google.com>
+
+       PR 10147
+       * object.cc (Object::section_contents): Don't try to get a view if
+       the section has length zero.
+       (Object::handle_gnu_warning_section): If the section is empty, use
+       the name of the section as the warning.
+
+2009-06-23  Ian Lance Taylor  <iant@google.com>
+
+       PR 10133
+       * stringpool.h (class Stringpool_template): Add optimize_ field.
+       (Stringpool_template::set_optimize): New function.
+       * stringpool.cc (Stringpool_template::Stringpool_template):
+       Initialize optimize_ field.
+       (Stringpool_template::set_string_offsets): Test local optimize
+       fild rather than parameter.
+       * layout.cc (Layout::Layout): Call set_optimize on the section
+       name stringpool.
+
+2009-06-22  Ian Lance Taylor  <iant@google.com>
+
+       PR 10030
+       * yyscript.y: Parse TARGET.
+       * script.cc (script_set_target): New function.
+       * script-c.h (script_set_target): Declare.
+       * options.cc (General_options::string_to_object_format): Rename
+       from string_to_object_format in anonymous namespace.  Change
+       callers.
+       * options.h (class General_options): Declare
+       string_to_object_format.
+
+2009-06-22  Ian Lance Taylor  <iant@google.com>
+
+       * script-sections.cc (Script_sections::create_segments): Don't put
+       program headers in a PT_LOAD segment if -n or -N.
+
+2009-06-22  Ian Lance Taylor  <iant@google.com>
+
+       PR 10141
+       * options.h (class General_options): Add -z lazy and -z now.  Sort
+       -z options into alphabetical order.
+       * layout.cc (Layout::finish_dynamic_section): Handle -z now.
+
+2009-06-21  Ian Lance Taylor  <iant@google.com>
+
+       * layout.cc (Layout::make_output_section): Call
+       Target::new_output_section.
+       (Layout::attach_allocated_section_to_segment): Put large section
+       sections in a separate load segment with the large segment flag
+       set.
+       (Layout::segment_precedes): Sort large data segments after other
+       load segments.
+       (align_file_offset): New static function.
+       (Layout::set_segment_offsets): Use align_file_offset.
+       * output.h (class Output_section): Add is_small_section_ and
+       is_large_section_ fields.
+       (Output_section::is_small_section): New function.
+       (Output_section::set_is_small_section):  New function.
+       (Output_section::is_large_section): New function.
+       (Output_section::set_is_large_section): New function.
+       (Output_section::is_large_data_section): New function.
+       (class Output_segment): Add is_large_data_segment_ field.
+       (Output_segment::is_large_data_segment): New function.
+       (Output_segment::set_is_large_data_segment): New function.
+       * output.cc (Output_section::Output_section): Initialize new
+       fields.
+       (Output_segment::Output_segment): Likewise.
+       (Output_segment::add_output_section): Add assertion that large
+       data sections always go in large data segments.  Force small data
+       sections to the end of the list of data sections.  Force small BSS
+       sections to the start of the list of BSS sections.  For large BSS
+       sections to the end of the list of BSS sections.
+       * symtab.h (class Symbol): Declare is_common_shndx.
+       (Symbol::is_defined): Check Symbol::is_common_shndx.
+       (Symbol::is_common): Likewise.
+       (class Symbol_table): Define enum Commons_section_type.  Update
+       declarations.  Add small_commons_ and large_commons_ fields.
+       * symtab.cc (Symbol::is_common_shndx): New function.
+       (Symbol_table::Symbol_table): Initialize new fields.
+       (Symbol_table::add_from_object): Put small and large common
+       symbols in the right list.
+       (Symbol_table::sized_finalized_symbol): Check
+       Symbol::is_common_shndx.
+       (Symbol_table::sized_write_globals): Likewise.
+       * common.cc (Symbol_table::do_allocate_commons): Allocate new
+       common symbol lists.  Don't call do_allocate_commons_list if the
+       list is empty.
+       (Symbol_table::do_allocate_commons_list): Remove is_tls
+       parameter.  Add comons_section_type parameter.  Change all
+       callers.  Handle small and large common symbols.
+       * object.cc (Sized_relobj::do_finalize_local_symbols): Check
+       Symbol::is_common_shndx.
+       * resolve.cc (symbol_to_bits): Likewise.
+       * target.h (Target::small_common_shndx): New function.
+       (Target::small_common_section_flags): New function.
+       (Target::large_common_shndx): New function.
+       (Target::large_common_section_flags): New function.
+       (Target::new_output_section): New function.
+       (Target::Target_info): Add small_common_shndx, large_common_shndx,
+       small_common_section_flags, and large_common_section_flags
+       fields.
+       (Target::do_new_output_section): New virtual function.
+       * arm.cc (Target_arm::arm_info): Initialize new fields.
+       * i386.cc (Target_i386::i386_info): Likewise.
+       * powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
+       Likewise.
+       * sparc.c (Target_sparc::sparc_info) [all versions]: Likewise.
+       * x86_64.cc (Target_x86_64::x86_64_info): Likewise.
+       (Target_x86_64::do_new_output_section): New function.
+       * configure.ac: Define conditional MCMODEL_MEDIUM.
+       * testsuite/Makefile.am (check_PROGRAMS): Add large.
+       (large_SOURCES, large_CFLAGS, large_DEPENDENCIES): Define.
+       (large_LDFLAGS): Define.
+       * testsuite/large.c: New file.
+       * testsuite/testfile.cc (Target_test::test_target_info):
+       Initialize new fields.
+       * configure, testsuite/Makefile.in: Rebuild.
+
+2009-06-05  Doug Kwan  <dougkwan@google.com>
+
+       * Makefile.am (CCFILES): Add target.cc.
+       * Makefile.in: Regenerate. 
+       * i386.cc (class Target_i386): Define new virtual method to
+       override do_is_local_label_name in parent.
+       * object.cc (Sized_relobj::do_count_local_symbols): Discard
+       local symbols if --discard-locals or -X is given.
+       * options.h (class General_options): Declare new options
+       '--discard-locals' and '-X' for discarding locals.
+       * target.h (class Target): Define new methods is_local_label_name.
+       Declare new virtual method do_is_local_label_name.
+       * target.cc: New file.
+       * testsuite/Makefile.am (check_PROGRAMS): Add discard_locals_test.
+       (check_SCRIPTS): Add discard_locals_test.sh.
+       (check_DATA): Add discard_local_tests.syms.
+       (discard_locals_test_SOURCES, discard_locals_test_LDFLAGS): Define.
+       (discard_local_tests.syms, discard_locals_test.o): New make rules.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/discard_locals_test.c: New file.
+       * testsuite/discard_locals_test.sh: Same.
+
+2009-06-05  Doug Kwan  <dougkwan@google.com>
+
+       * object.cc (Sized_relobj::Sized_relobj): Initialize
+       discarded_eh_frame_shndx_ to -1U.
+       (Sized_relobj::do_layout): Record index of a discard .eh_frame
+       section.
+       (Sized_relobj::do_count_local_symbols): Skip local symbols in
+       a discarded .eh_frame section.
+       (Sized_relobj::do_finalize_local_symbols): Ditto.
+       * object.h (class Sized_relobj): Declare new member
+       discarded_eh_frame_shndx_.
+       * testsuite/Makefile.am (check_PROGRAMS): Add local_labels_test.
+       (local_labels_test.o, local_labels_test): New rules.
+       * testsuite/Makefile.in: Regenerate.
+
+2009-06-04  Doug Kwan  <dougkwan@google.com>
+
+       * layout.cc (Layout::section_name_mapping): Add mapping for
+       special ARM sections.
+
+2009-06-03  Doug Kwan  <dougkwan@google.com>
+
+       * arm.cc (utils::sign_extend): Reverse test in gold_assert.
+       (utils::has_overflow): Same.
+
+2009-06-03  Ian Lance Taylor  <iant@google.com>
+
+       * layout.cc (Layout::section_name_mapping): New array, replacing
+       Layout::linkonce_mapping.
+       (Layout::section_name_mapping_count): New variable, replacing
+       Layout::linkonce_mapping_count.
+       (Layout::linkonce_output_name): Remove.
+       (Layout::output_section_name): Rewrite.
+       * layout.h (class Layout): Rename Linkonce_mapping to
+       Section_name_mapping, linkonce_mapping to section_name_mapping,
+       linkonce_mapping_count to section_name_mapping_count.  Don't
+       declare linkonce_output_name.
+
+2009-06-03  Doug Kwan  <dougkwan@google.com>
+
+       * gold/arm.cc (namespace utils): New.
+       (Target_arm::reloc_is_non_pic): Define new method.
+       (class Arm_relocate_functions): New.
+       (Target_arm::Relocate::relocate): Handle relocation types used by
+       Android.
+
+2009-06-03  Ian Lance Taylor  <iant@google.com>
+
+       * arm.cc (Target_arm::scan::global): Use || instead of |.
+
+2009-06-02  Doug Kwan  <dougkwan@google.com>
+
+       * gold/arm.cc (Target_arm::Scan::Scan):  Initialize
+       issued_non_pic_error_.
+       (class Target_arm::Scan): Declare new method check_non_pic.
+       Define new method symbol_needs_plt_entry.
+       Declare new data member issued_non_pic_error_.
+       (class Target_arm::Relocate): Declare new method
+       should_apply_static_reloc.
+       (Target_arm::may_need_copy_reloc): Handle STT_ARM_TFUNC.
+       (Target_arm::Scan::check_non_pic): Define new method.
+       (Target_arm::Scan::local): Handle a small subset of reloc types used
+       by Android.
+       (Target_arm::Scan::local): Same.
+       (Target_arm::Relocate::should_apply_statci_reloc): Define new method.
+
+2009-05-31  Mikolaj Zalewski  <mikolajz@google.com>
+
+       * incremental.cc (Incremental_inputs::report_command_line): Filter
+       out --incremental-* options.
+
+2009-05-29  Doug Kwan  <dougkwan@google.com>
+
+       * gold/arm.cc (Output_data_plt_arm): Forward declaration for new
+       template class.
+       (class Target_arm): Update comment.
+       (Target_arm::Target_arm): Initialize new data members GOT_,
+       PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_ and DYNBSS_.
+       Declare new methods Target_arm::got_section, Target_arm::make_plt_entry
+       and Target_arm::rel_dyn_section.
+       Declare new_enum Target_arm::Got_type.
+       Declare new data members GOT_, PLT_, GOT_PLT_, REL_DYN_, COPY_RELOCS_
+       and DYNBSS_.
+       Update commments for member do_dynsym_value.
+       (Target_arm::got_size, Target_arm::plt_section,
+       Target_arm::may_need_copy_reloc and Target_arm::copy_reloc): Define
+       new methods inside class defintion.
+       (Target_arm::got_section): Define new method.
+       (Target_arm::rel_dyn_section): Same.
+       (Output_data_plt_arm): New template class.
+       (Output_data_plt_arm::Output_data_plt_arm): Define constructor.
+       (Output_data_plt_arm:do_adjust_output_section): Define new method.
+       (Output_data_plt_arm::add_entry): Same.
+       (Output_data_plt_arm::first_plt_entry): Define new
+       static data member for PLT instruction template.
+       (Output_data_plt_arm::plt_entry): Same.
+       (Output_data_plt_arm::do_write): Define new method.
+       (Target_arm::make_plt_entry): Same.
+       (Target_arm::do_finalize_sections): Same.
+       (Target_arm::do_dynsym_value): Same.
+
+2009-05-28  Doug Kwan  <dougkwan@google.com>
+
+       * Makefile.am (TARGETSOURCES): Add arm.cc.
+       (ALL_TARGETOBJECTS): Add arm.$(OBJEXT)
+       * Makefile.in: Regenerate.
+       * arm.cc: New file.
+       * configure.tgt: Add armbe*-*-*, armeb*-*-* and arm*-*-* targets.
+
+2009-05-26  Doug Kwan  <dougkwan@google.com>
+
+       * options.cc (General_options::parse_exclude_libs).  Fix a comment.
+       (General_options::check_excluded_libs): Strip off directories in
+       archive name before matching like GNU ld does.
+       * testsuite/Makefile.am (MOSTLYCLEANFILES,
+       exclude_libs_test_DEPENDENCIES): Add alt/libexclude_libs_test_3.a
+       (exclude_libs_test_LDFLAGS): Add linker option
+       -Wl,--exclude-libs,libexclude_libs_test_3
+       (exclude_libs_test_LADD): Add alt/libexclude_libs_test_3.a as
+       an explicit archive without using -l.
+       (alt/libexclude_libs_test_3.a): New make rule.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/exclude_libs_test.c : Declare lib3_default().
+       (main): Call it.
+       * exclude_libs_test.sh: Add tests for alt/exclude_libs_test_3.a.
+       * exclude_libs_test_3.c: New file.
+
+2009-05-26  Nick Clifton  <nickc@redhat.com>
+
+       * po/id.po: New Indonesian translation.
+       * po/gold.pot: Updated template file.
+
+2009-05-22  Sriraman Tallam  <tmsriram@google.com>
+
+       * testsuite/Makefile.am: Add -ffunction-sections to compile 
+       gc_comdat_test files.  Add -Wl,--gc-sections to build
+       gc_comdat_test.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/gc_comdat_test.sh: Fix the condition around grep.
+
+2009-05-21  Sriraman Tallam  <tmsriram@google.com>
+
+       * object.cc (Sized_relobj::map_to_kept_section): Return NULL if the
+       kept comdat section was garbage collected.
+       * testsuite/Makefile.am: Add test gc_comdat_test.sh.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/gc_comdat_test.sh: New file.
+       * testsuite/gc_comdat_test_1.cc: New file.
+       * testsuite/gc_comdat_test_2.cc: New file.
+
+2009-05-19  Doug Kwan  <dougkwan@google.com>
+
+       * archive.cc (Archive::Archive): Move constructor from archive.h
+       to here.  Initialize no_export_.
+       (Archive::get_elf_object_for_member): Set no_export flag of object.
+       * archive.h (Archive::Archive): Move constructor body to
+       archive.cc.
+       (Archive::no_export): New method.
+       (Archive::no_export_): New field.
+       * object.h (Object::Object): Initialize no_export_ to false.
+       (Object::no_export, Object::set_no_export): New methods.
+       (Object::no_export_): New field.
+       * options.cc (General_options::parse_exclude_libs): New method.
+       (General_options::check_excluded_libs) Same.
+       * options.h (exclude_libs): New option.
+       (General_options::check_excluded_libs): New method declaration.
+       (General_options::excluded_libs_): New field.
+       * symtab.cc (Symbol_table::add_from_relobj): Hide symbols with
+       default or protected visibility if an object has no-export flag set.
+       testsuite/Makefile.am (check_PROGRAMS): Add exclude_libs_test.
+       (check_SCRIPTS): Add exclude_libs_test.sh.
+       (check_DATA): Add exclude_libs_test.syms.
+       (MOSTLYCLEANFILES): Add exclude_libs_test.syms,
+       libexclude_libs_test_1.a and libexclude_libs_test_2.a.
+       (exclude_libs_test_SOURCES, exclude_libs_test_DEPENDENCIES,
+       exclude_libs_test_LDFLAGS and exclude_libs_test_LDADD): Define.
+       (exclude_libs_test.syms, libexclude_libs_test_1.a,
+       libexclude_libs_test_2.a): New rules.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/exclude_libs_test.c: New file.
+       * testsuite/exclude_libs_test.sh: Ditto.
+       * testsuite/exclude_libs_test_1.c: Ditto.
+       * testsuite/exclude_libs_test_2.c: Ditto.
+
+2009-05-15  Ian Lance Taylor  <iant@google.com>
+
+       * configure.ac: Check for declarations for cases where libiberty.h
+       checks HAVE_DECL_xxx.
+       * configure, config.in: Rebuild.
+
+2009-05-15  Mikolaj Zalewski  <mikolajz@google.com>
+
+       * gold.h (Incremental_argument_list): Remove (invalid) forward
+       declaration.
+       * incremental.cc (Incremental_inputs::report_achive): New method.
+       (Incremental_inputs::report_object): New method.
+       (Incremental_inputs::report_script): New method.
+       (Incremental_inputs::finalize_inputs): New method.
+       (Incremental_inputs::finalize): Call finalize_inputs().
+       (Incremental_inputs::sized_create_incremental_inputs_section_data):
+       Create inputs entries.
+       * incremental.h (Incremental_input_type): New enum.
+       (Incremental_inputs::Incremental_input): Initialize new fields.
+       (Incremental_inputs::report_inputs): New method.
+       (Incremental_inputs::report_achive): New method.
+       (Incremental_inputs::report_object): New method.
+       (Incremental_inputs::report_script): New method.
+       (Incremental_inputs::finalize_inputs): New method.
+       (Incremental_inputs::Input_info): New struct.
+       (Incremental_inputs::Input_info_map): New typedef.
+       (Incremental_inputs::lock_): New field.
+       (Incremental_inputs::Inputs_): New field.
+       (Incremental_inputs::Inputs_map): New field.
+       * main.cc (main): Call Incremental_input::report_inputs.
+       * options.h (Input_argument_list): Typedef moved from
+       Input_arguments.
+       (Input_file_group::Files): Remove, use ::Input_argument_list.
+       (Input_file_group::Input_argument_list): Remove, use
+       ::Input_argument_list.
+       * plugin.cc (Plugin_manager::add_input_file): Add error in
+       incremental build.
+       * read_syms.cc (do_read_syms): Call Incremental_input::report_*
+       functions.
+       * script.cc (read_input_script): Call
+       Incremental_input::report_script.
+       * script.h (Script_info): New class.
+
+2009-04-27  Ian Lance Taylor  <iant@google.com>
+
+       * x86_64.cc (do_adjust_output_section): Set entsize to
+       plt_entry_size.
+
+2009-04-23  Elliott Hughes  <enh@google.com>
+
+       * output.cc (Output_file::close): After short writes, continue
+       writing from the correct offset in the buffer being written.
+
+2009-04-23  Chris Demetriou  <cgd@google.com>
+
+       * configure.ac (HAVE_TR1_UNORDERED_MAP_REHASH): New define.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+       * gold.h: Avoid std::tr1::unordered_map and std::tr1::unordered_set
+       if HAVE_TR1_UNORDERED_MAP_REHASH is not defined.
+
+2009-04-21  Mikolaj Zalewski  <mikolajz@google.com>
+
+       * incremental.cc (Incremental_inputs_header_data): Renamed from
+       Incremental_input_header_data.
+       (Incremental_inputs_header_data::data_size): New field.
+       (Incremental_inputs_header_data::put_input_file_count): Renamed
+       from input_file_count.
+       (Incremental_inputs_header_data::put_command_line_offset): Renamed
+       from command_line_offset.
+       (Incremental_inputs_header_data::put_reserved): Renamed from
+       put_reserved.
+       (Incremental_inputs_entry_data): Renamed from
+       Incremental_input_entry_data.
+       (Incremental_inputs_entry_data::data_size): New field.
+       (Incremental_inputs::report_command_line): New method.
+       (Incremental_inputs::finalize): New method.
+       (Incremental_inputs::create_incremental_inputs_data): New method.
+       (Incremental_inputs::sized_create_incremental_inputs_data): New method.
+       * incremental.h: New file.
+       * layout.cc (Layout::Layout): Handle new incremental_inputs_.
+       (Layout::finalize): Create incremental inputs section in
+       incremental builds.
+       (Layout::create_incremental_info_sections): New method.
+       * layout.h (Layout::incremental_inputs): New method.
+       (Layout::create_incremental_info_sections): New method.
+       (Layout::incremental_inputs_): New field.
+       * main.cc (main): Notify Incremental_input of the command line.
+
+2009-04-01  Ian Lance Taylor  <iant@google.com>
+           Mikolaj Zalewski  <mikolajz@google.com>
+
+       * gold.h (reserve_unordered_map): Define, three versions, one for
+       each version of Unordered_map.
+       * layout.cc (Layout::Layout): Remove options parameter.  Add
+       number_of_input_files parameter.  Don't initialize options_.
+       Initialize number_of_input_files_ and resized_signatures_.  Move
+       sections_are_attached_.
+       (Layout::layout_group): Reserve space for group_signatures_.
+       (Layout::find_or_add_kept_section): Change name parameter to be a
+       reference.  Resize signatures_ map when it gets large enough.
+       (Layout::layout_eh_frame): Use parameters->options() instead of
+       this->options_.
+       (Layout::make_output_section): Likewise.
+       (Layout::attach_allocated_section_to_segment): Likewise.
+       (Layout::finalize, Layout::create_executable_stack): Likewise.
+       (Layout::set_segment_offsets, Layout::create_interp): Likewise.
+       (Layout::finish_dynamic_section, Layout::write_binary): Likewise.
+       * layout.h (class Layout): Update declarations.  Remove options_
+       field.  Add number_of_input_files_ and resized_signatures_
+       fields.  Move sections_are_attached_ field.
+       * main.cc (main): Pass number of input files to Layout
+       constructor.  Don't pass options.
+
+2009-03-30  Ian Lance Taylor  <iant@google.com>
+
+       * ffsll.c (ffsll): Correct implementation.
+
+2009-03-27  Ian Lance Taylor  <iant@google.com>
+
+       * ffsll.c: New file.
+       * configure.ac: Call AC_REPLACE_FUNCS on ffsll.
+       * gold.h (ffsll): Declare if HAVE_FFSLL is not defined.
+       * ftruncate.c (ftruncate): Declare before definition.
+       * mremap.c (mremap): Likewise.
+       * pread.c (pread): Likewise.
+       * configure, Makefile.in, config.in: Rebuild.
+
+       * mremap.c: New file.
+       * configure.ac: Call AC_REPLACE_FUNCS on mremap.
+       * gold.h (MREMAP_MAYMOVE): Define if HAVE_MREMAP is not defined.
+       (mremap): Declare if HAVE_MREMAP is not defined.
+       * configure, Makefile.in, config.in: Rebuild.
+
+2009-03-27  Cary Coutant  <ccoutant@google.com>
+
+       * powerpc.cc (Target_powerpc::check_non_pic): Assert that output is
+       position independent.
+       * sparc.cc (Target_sparc::check_non_pic): Likewise.
+       * x86_64.cc (Target_x86_64::check_non_pic): Likewise.
+
+2009-03-24  Cary Coutant  <ccoutant@google.com>
+
+       * symtab.h (needs_plt_entry): Check for unsatisfied reference from
+       an executable.
+       (needs_dynamic_reloc): Likewise.
+
+2009-03-24  Ian Lance Taylor  <iant@google.com>
+
+       * yyscript.y (file_cmd): Recognize EXTERN.
+       (extern_name_list, extern_name_list_body): New nonterminals.
+       * script.cc (script_add_extern): Define.
+       * script-c.h (script_add_extern): Declare.
+
+2009-03-24  Rafael Avila de Espindola  <espindola@google.com>
+
+       * object.cc (is_elf_object): Define.
+       * object.h (is_elf_object): Declare.
+       * archive.cc (Archive::get_elf_object_for_member): Call
+       is_elf_object.
+       * readsyms.cc (Read_symbols::do_read_symbols): Likewise.
+
+2009-03-24  Elliott Hughes  <enh@google.com>
+
+       * output.cc (Output_file::map_anonymous): Define.
+       (Output_file::map): Use map_anonymous.  If the regular mmap fails,
+       try an anonymous one.  Report the size if the mmap fails.
+       * output.h (class Output_file): Declare map_anonymous.
+
+2009-03-24  Ian Lance Taylor  <iant@google.com>
+
+       * target-select.cc (instantiate_target): Don't acquire the lock if
+       the instantiated_target_ field has already been set.
+
+2009-03-23  Ian Lance Taylor  <iant@google.com>
+
+       * gold-threads.h (class Initialize_lock): Define.
+       * gold-threads.cc (class Initialize_lock_once): Define.
+       (initialize_lock_control): New static variable.
+       (initialize_lock_pointer): New static variable.
+       (initialize_lock_once): New static function.
+       (Initialize_lock::Initialize_lock): Define.
+       (Initialize_lock::initialize): Define.
+       * target-select.h: Include "gold-threads.h".
+       (class Target_selector): Add lock_ and initialize_lock_ fields.
+       Don't define instantiate_target, just declare it.
+       * target-select.cc (Target_selector::Target_selector): Initialize
+       new fields.
+       (Target_selector::instantiate_target): Define.
+       * descriptors.h: Include "gold-threads.h".
+       (class Descriptors): Add initialize_lock_ field.
+       * descriptors.cc (Descriptors::Descriptors): Initialize new
+       field.
+       (Descriptors::open): Use initialize_lock_ field
+       * errors.h (class Errors): Add initialize_lock_ field.
+       * errors.cc (Errors::Errors): Initialize new field.
+       (Errors::initialize_lock): Use initialize_lock_ field.
+       * powerpc.cc (class Target_selector_powerpc): Remove
+       instantiated_target_ field.  In do_recognize call
+       instantiate_target rather than do_instantiate_target.  In
+       do_instantiate_target just allocate a new target.
+       * sparc.cc (class Target_selector_sparc): Likewise.
+
+       * freebsd.h: New file.
+       * i386.cc: Include "freebsd.h".
+       (Target_i386): Derive from Target_freebsd rather than
+       Sized_target.
+       (Target_selector_i386): Derive from Target_selector_freebsd rather
+       than Target_selector.
+       * x86_64.cc: Include "freebsd.h".
+       (Target_x86_64): Derive from Target_freebsd rather than
+       Sized_target.
+       (Target_selector_x86_64): Derive from Target_selector_freebsd
+       rather than Target_selector.
+       * target.h (class Target): Add adjust_elf_header and
+       do_adjust_elf_header.
+       * output.cc (Output_file_header:: do_sized_write): Call target
+       adjust_elf_header routine.
+       * configure.tgt: Set targ_osabi.
+       * configure.ac: Define GOLD_DEFAULT_OSABI.
+       * parameters.cc (Parameters::default_target): Pass
+       GOLD_DEFAULT_OSABI to select_target.
+       * target-select.h (class Target_selector): Make instantiate_target
+       protected rather than private.
+       * Makefile.am (HFILES): Add freebsd.h.
+       * configure, Makefile.in, config.in: Rebuild.
+
+       * merge.cc (do_add_input_section): Correct pend value.  Change
+       message about last entry not being null terminated from error to
+       warning.
+
+2009-03-20  Mikolaj Zalewski  <mikolajz@google.com>
+
+       * incremental.cc: New file.
+       * Makefile.am (CCFILES): Add incremental.cc.
+       * Makefile.in: Rebuild.
+
+2009-03-19  Paul Pluzhnikov  <ppluzhnikov@google.com>
+
+       * layout.cc (Layout::output_section_name): Preserve names
+       of '.note.' sections.
+       
+2009-03-19  Ian Lance Taylor  <iant@google.com>
+
+       * descriptors.cc (Descriptors::open): Check that the options are
+       valid before using them.
+
+2009-03-18  Ian Lance Taylor  <iant@google.com>
+
+       * script-sections.h: Include <list>.
+       (class Script_sections): Change Sections_elements from std::vector
+       to std::list.  Typedef public Elements_iterator.  Add
+       orphan_section_placement_, data_segment_align_start_, and
+       saw_data_segment_align_ fields.  Remove data_segment_align_index_
+       field.
+       * script-sections.cc (class Orphan_section_placement): New class.
+       (class Sections_element): Add virtual functions is_relro and
+       orphan_section_init.  Remove virtual function place_orphan_here.
+       (class Output_section_definition): Add is_relro and
+       orphan_section_init.  Remove place_orphan_here.
+       (class Orphan_output_section): Likewise.
+       (Script_sections::Script_sections): Update for field changes.
+       (Script_sections::data_segment_align): Set saw_data_segment_align_
+       and data_segment_align_start_, not data_segment_align_index.
+       (Script_sections::data_segment_relro_end): Check
+       saw_data_segment_align_.  Use data_segment_align_start_ rather
+       than data_segment_align_index_.
+       (Script_sections::place_orphan): Rewrite to use
+       Orphan_section_placement.
+
+2009-03-17  Ian Lance Taylor  <iant@google.com>
+
+       * archive.cc (Archive::add_symbols): Check for a version attached
+       to the symbol name in the archive map.
+       * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_11.
+       (ver_test_11_SOURCES, ver_test_11_DEPENDENCIES): Define.
+       (ver_test_11_LDFLAGS, ver_test_11_LDADD): Define.
+       (ver_test_11.a): New target.
+       * testsuite/Makefile.in: Rebuild.
+
+       * configure.ac: Check for chsize and posix_fallocate.  Replace
+       ftruncate.
+       * ftruncate.c: New file, from gnulib.
+       * output.cc (posix_fallocate): Define dummy version if not
+       HAVE_POSIX_FALLOCATE.
+       (Output_file::map): Call posix_fallocate rather than lseek and
+       write.
+       * gold.h (ftruncate): Declare if not HAVE_FTRUNCATE.
+       * configure, Makefile.in, config.in: Rebuild.
+
+2009-03-17  Paul Pluzhnikov  <ppluzhnikov@google.com>
+       
+       * layout.h (Layout::create_note): Add section_name parameter.
+       * layout.cc (Layout::create_note): Likewise.
+       (Layout::create_build_id, Layout::create_gold_note): Fix callers.
+       
+2009-03-17  Ian Lance Taylor  <iant@google.com>
+
+       * descriptors.cc: Include "options.h".
+       (FD_CLOEXEC, O_CLOEXEC): Define if not defined.
+       (Descriptors::open): Always use O_CLOEXEC when opening a new
+       descriptor.  If we have a plugin, and O_CLOEXEC was not defined,
+       then set FD_CLOEXEC.
+
+       * sparc.cc (class Target_sparc): Add has_got_section.
+       (Target_sparc::Scan::global): If we see _GLOBAL_OFFSET_TABLE_,
+       make sure we have a GOT section.
+
+       * sparc.cc (optimize_tls_reloc): Recognize R_SPARC_TLS_IE_ADD.
+       (Target_sparc::Scan::local): Likewise.
+       (Target_sparc::Scan::global): Likewise.
+       (Target_sparc::Relocate::relocate): Likewise.
+       (Target_sparc::Relocate::relocate_tls): Likewise.
+
+       * symtab.cc (Symbol_table::define_default_version): New function,
+       broken out of add_from_object.
+       (Symbol_table::add_from_object): Call define_default_version.
+       (Symbol_table::define_special_symbol): Add resolve_oldsym
+       parameter.  Change all callers.  If the version for a symbol comes
+       from a version script, resolve it with the symbol with the same
+       name with no version.  Also add the symbol without a version if
+       appropriate.
+       (do_define_in_output_data): If resolving with oldsym, don't delete
+       sym.
+       (do_define_in_output_segment): Likewise.
+       (do_define_as_constant): Likewise.
+       * symtab.h (class Symbol_table): Update declarations.
+
+2009-03-13  Ian Lance Taylor  <iant@google.com>
+
+       * readsyms.cc (Read_symbols::incompatible_warning): New function.
+       (Read_symbols::requeue): New function.
+       (Read_symbols::do_read_symbols): If make_elf_object fails because
+       the target type is not configured, and the file was searched for,
+       issue a warning and retry with the next directory.
+       (Add_symbols::run): If the file has an incompatible format, and
+       it was searched for, requeue the Read_symbols task.  On error,
+       release the object.
+       * readsyms.h (class Read_symbols): Add dirindex_ field.  Add
+       dirindex parameter to constructor.  Change all callers.  Declare
+       incompatible_warning and requeue.
+       (class Add_symbols): Add dirpath_, dirindex_, mapfile_,
+       input_argument_ and input_group_ fields.  Add them to
+       constructor.  Change all callers.
+       (class Read_script): Add dirindex_ field.  Add it to constructor.
+       Change all callers.
+       * archive.cc (Archive::setup): Remove input_objects parameter.
+       Change all callers.
+       (Archive::get_file_and_offset): Likewise.
+       (Archive::read_all_symbols): Likewise.
+       (Archive::read_symbols): Likewise.
+       (Archive::get_elf_object_for_member): Remove input_objects
+       parameter.  Add punconfigured parameter.  Change all callers.
+       (Archive::add_symbols): Change return type to bool.  Check return
+       value of include_member.
+       (Archive::include_all_members): Likewise.
+       (Archive::include_member): Change return type to bool.  Return
+       false if first included object has incompatible target.  Set
+       included_member_ field.
+       (Add_archive_symbols::run): If add_symbols returns false, requeue
+       Read_symbols task.
+       * archive.h (class Archive): Add included_member_ field.
+       Initialize it in constructor.  Add input_file and searched_for
+       methods.  Update declarations.
+       (class Add_archive_symbols): Add dirpath_, dirindex_, and
+       input_argument_ fields.  Add them to constructor.  Change all
+       callers.
+       * script.cc: Include "target-select.h".
+       (class Parser_closure): Add skip_on_incompatible_target_ and
+       found_incompatible_target_ fields.  Add
+       skip_on_incompatible_target parameter to constructor.  Change all
+       callers.  Add methods skip_on_incompatible_target,
+       clear_skip_on_incompatible_target, found_incompatible_target, and
+       set_found_incompatible_target.
+       (read_input_script): Add dirindex parameter.  Change all callers.
+       If parser finds an incompatible target, requeue Read_symbols
+       task.
+       (script_set_symbol): Clear skip_on_incompatible_target in
+       closure.
+       (script_add_assertion, script_parse_option): Likewise.
+       (script_start_sections, script_add_phdr): Likewise.
+       (script_check_output_format): New function.
+       * script.h (read_input_script): Update declaration.
+       * script-c.h (script_check_output_format): Declare.
+       * yyscript.y (file_cmd): Handle OUTPUT_FORMAT.
+       (ignore_cmd): Remove OUTPUT_FORMAT.
+       * fileread.cc (Input_file::Input_file): Add explicit this.
+       (Input_file::will_search_for): New function.
+       (Input_file::open): Add pindex parameter.  Change all callers.
+       * fileread.h (class Input_file): Add input_file_argument method.
+       Declare will_search_for.  Update declarations.
+       * object.cc (make_elf_object): Add punconfigured parameter.
+       Change all callers.
+       * object.h (class Object): Make input_file public.  Add
+       searched_for method.
+       (make_elf_object): Update declaration.
+       * dirsearch.cc (Dirsearch::find): Add pindex parameter.  Use it to
+       restart search.
+       * dirsearch.h (class Dirsearch): Update declaration.
+       * options.h (class General_options): Add --warn-search-mismatch.
+       * parameters.cc (Parameters::is_compatible_target): New function.
+       * parameters.h (class Parameters): Declare is_compatible_target.
+       * workqueue.cc (Workqueue::add_blocker): New function.
+       * workqueue.h (class Workqueue): Declare add_blocker.
+
+       * fileread.cc (Input_file::open): Remove options parameter.
+       Change all callers.
+       (Input_file::open_binary): Likewise.
+       * script.cc (read_input_script): Likewise.
+       * readsyms.h (class Read_symbols): Remove options_ field.  Remove
+       options parameter from constructor.  Change all callers.
+       (class Read_script): Likewise.
+       * fileread.h (class Input_file): Update declarations.
+       * script.h (read_input_script): Update declaration.
+
+2009-03-10  Nick Clifton  <nickc@redhat.com>
+
+       * po/es.po: New Spanish translation.
+
+2009-03-06  Cary Coutant  <ccoutant@google.com>
+
+       * options.cc (parse_short_option): Keep dash_z from registering itself.
+
+2009-03-03  Ian Lance Taylor  <iant@google.com>
+
+       PR 9918
+       * target-reloc.h (relocate_section): Pass output_section to
+       relocate.
+       * i386.cc (Target_i386::should_apply_static_reloc): Add
+       output_section parameter.  Change all callers.
+       (Target_i386::Relocate::relocate): Add output_section parameter.
+       * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
+       * sparc.cc (Target_sparc::Relocate::relocate): Likewise.
+       * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise.
+       * testsuite/two_file_shared.sh: New script.
+       * testsuite/Makefile.am (check_SCRIPTS): Add two_file_shared.sh.
+       (check_DATA): Add two_file_shared.dbg.
+       (two_file_shared.dbg): New target.
+       * testsuite/Makefile.in: Rebuild.
+
 2009-03-01  Ian Lance Taylor  <iant@google.com>
 
        * configure.ac: Check for byteswap.h.
This page took 0.046876 seconds and 4 git commands to generate.