include/elf:
[deliverable/binutils-gdb.git] / gold / ChangeLog
index 5901d3d18f683fbb0e944f9933bf3de9a980e8f3..1297e19e028b15d0ad1847b5d92571631bc76e26 100644 (file)
+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.
+       * configure: Rebuild.
+       * config.in: Rebuild.
+
+2009-03-01  Mikolaj Zalewski  <mikolajz@google.com>
+
+       * layout.cc (Layout::find_or_add_kept_section): New function.
+       (Layout::add_comdat): Removed.
+       * layout.h (struct Kept_section): Move out of class Layout.
+       Remove trailing underscores from field names.  Add group_sections
+       field.  Rename group_ field to is_group.  Change all uses.
+       (class Layout): Declare find_or_add_kept_section, not add_comdat.
+       * object.cc (Sized_relobj::Sized_relobj): Don't initialize
+       comdat_groups_ field.
+       (Sized_relobj::include_section_group): Use
+       find_or_add_kept_section and Kept_section::group_sections.
+       (Sized_relobj::include_linkonce_section): Likewise.
+       * object.cc (class Sized_relobj): Don't define Comdat_group or
+       Comdat_group_table.  Remove find_comdat_group and
+       add_comdat_group.  Remove comdat_groups_ field.
+       * plugin.cc (include_comdat_group): Use
+       Layout::find_or_add_kept_section.
+
+2009-02-28  Ian Lance Taylor  <iant@google.com>
+
+       * README: --gc-sections and map files are now supported.  Document
+       some build requirements.
+
+       PR 6992
+       * symtab.cc (Symbol_table::sized_write_section_symbol): In a
+       relocatable link set the value of the section symbol to zero.
+       * object.cc (Sized_relobj::do_finalize_local_symbols): In a
+       relocatable link don't include the section address in the local
+       symbol value.
+
+2009-02-27  Ian Lance Taylor  <iant@google.com>
+
+       PR 6811
+       * options.h (class Search_directory): Add is_system_directory.
+       (class General_options): Declare is_in_system_directory.
+       * options.cc (get_relative_sysroot): Make static.
+       (get_default_sysroot): Make static.
+       (General_optoins::is_in_system_directory): New function.
+       * fileread.cc (Input_file::is_in_system_directory): New function.
+       * fileread.h (class Input_file): Declare is_in_system_directory.
+       * object.h (class Object): Add is_in_system_directory.
+       (class Input_objects): Remove system_library_directory_ field.
+       * object.cc (Input_objects::add_object): Don't set
+       system_library_directory_.
+       (input_objects::found_in_system_library_directory): Remove.
+       * symtab.cc (Symbol_table::write_globals): Remove input_objects
+       parameter.  Change all callers.
+       (Symbol_table::sized_write_globals): Likewise.
+       (Symbol_table::warn_about_undefined_dynobj_symbol): Likewise.
+       Call Object::is_in_system_directory.
+       * symtab.h (class Symbol_table): Update declarations.
+
+       PR 5990
+       * descriptors.h (Open_descriptor): Add is_on_stack field.
+       * descriptors.cc (Descriptors::open): If the descriptor is on the
+       top of the stack, remove it.  Initialize is_on_stack field.
+       (Descriptors::release): Only add pod to stack if it is not on the
+       stack already.
+       (Descriptors::close_some_descriptor): Clear stack_next and
+       is_on_stack fields.
+
+       PR 7091
+       * output.cc (Output_section::find_starting_output_address): Rename
+       from starting_output_address; add PADDR parameter; change return
+       type.
+       * output.h (class Output_section): Declare
+       find_starting_output_address instead of starting_output_address.
+       * object.cc (Sized_relobj::do_finalize_local_symbols): Handle a
+       section symbol for which we can't find a merge section.
+
+       PR 9836
+       * symtab.cc (Symbol_table::add_from_object): If the visibility is
+       hidden or internal, force the symbol to be local.
+       * resolve.cc (Symbol::override_visibility): Define.
+       (Symbol::override_base): Use override_visibility.
+       (Symbol_table::resolve): Likewise.
+       (Symbol::override_base_with_special): Likewise.
+       (Symbol_table::override_with_special): If the visibility is hidden
+       or internal, force the symbol to be local.
+       * symtab.h (class Symbol): Add set_visibility and
+       override_visibility.
+       * testsuite/ver_test_1.sh: New file.
+       * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
+       (check_DATA): Add ver_test_1.syms.
+       (ver_test_1.syms): New target.
+       * testsuite/Makefile.in: Rebuild.
+
+2009-02-25  Cary Coutant  <ccoutant@google.com>
+
+       * layout.cc (Layout::choose_output_section): Don't rename sections
+       when using a linker script that has a SECTIONS clause.
+       * Makefile.in: Regenerate.
+
+       * testsuite/Makefile.am (script_test_5.sh): New test case.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/script_test_5.cc: New file.
+       * testsuite/script_test_5.sh: New file.
+       * testsuite/script_test_5.t: New file.
+
+2009-02-13  Rafael Avila de Espindola  <espindola@google.com>
+
+       * archive.cc (Archive::include_member): Update calls to add_symbols.
+       * dynobj.cc (Sized_dynobj<size, big_endian>::make_version_map): Add
+       the Layout argument.
+       * dynobj.h (do_add_symbols): Add the Layout argument.
+       * object.cc (Sized_relobj<size, big_endian>::do_add_symbols): Add the
+       Layout argument.
+       * object.h (Object::add_symbols): Add the Layout argument.
+       (Object::do_add_symbols): Add the Layout argument.
+       (Sized_relobj::do_add_symbols): Add the Layout argument.
+       * plugin.cc (Sized_pluginobj<size, big_endian>::do_add_symbols):
+       Unify the two versions.
+       (Add_plugin_symbols): Remove.
+       * plugin.h (Pluginobj::add_symbols, Pluginobj::do_add_symbols): Remove.
+       (Sized_pluginobj::do_add_symbols): Unify the two versions.
+       (Add_plugin_symbols): Remove.
+       * readsyms.cc (Read_symbols::do_read_symbols): Update call to
+       Add_symbols. Use Add_symbols instead of Add_plugin_symbols.
+       (Add_symbols::run): Make it work with Pulginobj.
+
+2009-02-06  Ian Lance Taylor  <iant@google.com>
+
+       * object.cc (Sized_relobj::do_layout): Make info message start
+       with lower case letter.
+
+2009-02-06  Mikolaj Zalewski  <mikolajz@google.com>
+
+       * binary.cc: Fix file comment.
+
+       * options.h (enum Incremental_disposition): Define.
+       (class General_options): Add new options: --incremental,
+       --incremental_changed, --incremental_unchanged,
+       --incremental_unknown.  Add incremental_disposition_ and
+       implicit_incremental_ fields.
+       (General_options::incremental_disposition): New function.
+       (class Position_dependent_options): Add incremental_disposition
+       option.
+       (Position_dependent_options::copy_from_options): Set incremental
+       dispositions.
+       * options.cc (General_options::parse_incremental_changed): New
+       function.
+        (General_options::parse_incremental_unchanged): New function.
+        (General_options::parse_incremental_unknown): New function.
+        (General_options::General_options): Initialize new fields
+       incremental_disposition_ and implicit_incremental_.
+        (General_options::finalize): Check for uasge of --incremental-*
+       without --incremental.
+
+2009-02-06  Chris Demetriou  <cgd@google.com>
+
+       * gold.h (gold_undefined_symbol): Change to take only a Symbol
+       pointer and to report location as the file name associated with
+       the symbol.
+       (gold_undefined_symbol_at_location): New function to replace the
+       old gold_undefined_symbol functionality.
+       * target-reloc.h (relocate_section): Update to use
+       gold_undefined_symbol_at_location.
+       * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
+       Call gold_undefined_symbol function rather than gold_error.
+       * errors.h (Errors::undefined_symbol): Take location as a
+       string, rather than calculating it from a relocation.
+       * errors.cc (Errors::fatal): Print "fatal error:" before the
+       formatted message.
+       (Errors::error, Errors::error_at_location): Print "error: "
+       before the formatted message.
+       (Errors::undefined_symbol): Take location as a string, rather
+       than calculating it from a relocation.
+       (gold_undefined_symbol_at_location): New function akin to
+       old gold_undefined_symbol, calculates location from relocation.
+       (gold_undefined_symbol): Change to take only a Symbol pointer
+       and to report location as the file name associated with the symbol.
+       * testsuite/debug_msg.sh: Update for changed error messages.
+       * testsuite/undef_symbol.sh: Likewise.
+
+2009-02-04  Duncan Sands  <baldrick@free.fr>
+
+       PR 9812
+       * reduced_debug_output.h
+       (Output_reduced_debug_abbrev_section::failed): Use format for
+       gold_warning.
+       (Output_reduced_debug_info_section::faild): Likewise.
+
+2009-01-31  Mikolaj Zalewski  <mikolajz@google.com>
+
+       * script.cc (Lazy_demangler): New class.
+        (Version_script_info::get_symbol_version_helper): Demangle a
+       symbol only once.
+
+2009-01-29  Cary Coutant  <ccoutant@google.com>
+
+       * i386.cc (Target_i386::Relocate::relocate): Recognize non-PIC calls
+       to __tls_get_addr.
+       * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.
+
+2009-01-28  Ian Lance Taylor  <iant@google.com>
+
+       * version.cc (version_string): Bump to 1.9.
+
+       * gold.h: Include <cstring> and <stdint.h>.
+       * version.cc: Include <cstdio>.
+       * object.cc (Sized_relobj::do_layout): Initialize gc_sd to avoid a
+       warning.
+       * reduced_debug_output.cc (insert_into_vector): Rename from
+       Insert_into_vector; change all callers.  Use Swap_unaligned to
+       avoid aliasing issue; remove union since it is unnecessary.
+
+2009-01-27  Sriraman Tallam  <tmsriram@google.com>
+
+       * Makefile.am (CCFILES): Add gc.cc.
+       (HFILES): Add gc.h.
+       * Makefile.in: Regenerate.
+       * gold.cc (Gc_runner): New class.
+       (queue_initial_tasks): Call garbage collection related tasks
+       when corresponding options are invoked.
+       (queue_middle_gc_tasks): New function.
+       (queue_middle_tasks): Reorder tasks to allow relocs to be read and
+       processed early before laying out sections during garbage collection.
+       * gold.h (queue_middle_gc_tasks): New function.
+       (is_prefix_of): Move from "layout.cc".
+       * i386.cc (Target_i386::gc_process_relocs): New function.
+       * layout.cc (is_prefix_of): Remove. Move to "gold.h"
+       * main.cc (main): Create object of class "Garbage_collection".
+       * object.cc (Relobj::copy_symbols_data): New function.
+       (Relobj::is_section_name_included): New function.
+       (Sized_relobj::do_layout): Allow this function to be called twice 
+       during garbage collection and defer layout of section during the 
+       first call.
+       * object.h (Relobj::get_symbols_data): New function.
+       (Relobj::is_section_name_included): New function.
+       (Relobj::copy_symbols_data): New function.
+       (Relobj::set_symbols_data): New function.
+       (Relobj::get_relocs_data): New function.
+       (Relobj::set_relocs_data): New function.
+       (Relobj::is_output_section_offset_invalid): New pure virtual function.
+       (Relobj::gc_process_relocs): New function.
+       (Relobj::do_gc_process_relocs): New pure virtual function.
+       (Relobj::sd_): New data member.
+       (Sized_relobj::is_output_section_offset_invalid): New function.
+       (Sized_relobj::do_gc_process_relocs): New function.
+       * options.h (General_options::gc_sections): Modify to not be a no-op.
+       (General_options::print_gc_sections): New option.
+       * plugin.cc (Plugin_finish::run): Remove function call to
+       Plugin_manager::layout_deferred_objects.  Move it to "gold.cc".
+       * powerpc.cc (Target_powerpc::gc_process_relocs): New function.
+       * reloc.cc (Read_relocs::run): Add task to process relocs and
+       determine unreferenced sections when doing garbage collection.
+       (Gc_process_relocs): New class.
+       (Sized_relobj::do_gc_process_relocs): New function.
+       (Sized_relobj::do_scan_relocs): Don't try to scan the relocs for
+       sections that are garbage collected.
+       * reloc.h (Gc_process_relocs): New class.
+       * sparc.cc (Target_sparc::gc_process_relocs): New function.
+       * symtab.cc (Symbol::should_add_dynsym_entry): Do not add entries for
+       symbols whose corresponding sections are garbage collected.
+       (Symbol_table::Symbol_table): Add new parameter for the garbage
+       collection object.
+       (Symbol_table::gc_mark_undef_symbols): New function.
+       (Symbol_table::gc_mark_symbol_for_shlib): New function.
+       (Symbol_table::gc_mark_dyn_syms): New function.
+       (Symbol_table::resolve): Do not treat symbols seen in dynamic objects
+       as garbage.
+       (Symbol_table::add_from_object): Likewise.
+       (Symbol_table::add_from_relobj): When building shared objects, do not
+       treat externally visible symbols as garbage.
+       (Symbol_table::sized_finalize_symbol): Do not check dynamic symbol
+       table information for static and relocatable links.
+       * symtab.h (Symbol_table::set_gc): New function.
+       (Symbol_table::gc): New function.
+       (Symbol_table::gc_mark_undef_symbols): New function.
+       (Symbol_table::gc_mark_symbol_for_shlib): New function.
+       (Symbol_table::gc_mark_dyn_syms): New function.
+       (Symbol_table::gc_): New data member.
+       * target.h (Sized_target::gc_process_relocs): New pure virtual 
+       function.
+       * x86_64.cc (Target_x86_64::gc_process_relocs): New function.
+       * testsuite/testfile.cc (Target_test::gc_process_relocs): New function.
+
+2009-01-20  Chris Faylor <me.sourceware@sourceware.org>
+
+       * options.h (General_options::gc_sections): Define as a no-op for now.
+       (General_options::no_keep_memory): Ditto.
+       (General_options::Bshareable): Define.
+       * options.cc (General_options::finalize): Honor -Bshareable.
+
+2009-01-20  Andreas Schwab  <schwab@suse.de>
+
+       * powerpc.cc (Powerpc_relocate_functions::rel16_ha): Don't try to
+       read the value in the contents, since we don't use it.  Use the
+       template endianness when writing.
+       (Relocate::relocate): Use it for R_PPC_REL16_HA.
+
+2009-01-19  Andreas Schwab  <schwab@suse.de>
+
+       * configure.tgt (powerpc64-*): Fix targ_obj.
+
+2009-01-15  Ian Lance Taylor  <iant@google.com>
+
+       * object.cc (Sized_relobj::write_local_symbols): Don't write out
+       local symbols when stripping all symbols.
+
+2009-01-14  Cary Coutant  <ccoutant@google.com>
+
+       * output.cc (Output_reloc): Add explicit instantiations.
+
+2009-01-14  Cary Coutant  <ccoutant@google.com>
+
+       * archive.cc (Archive::get_elf_object_for_member): Remove call
+       to File_read::claim_for_plugin.
+       * descriptors.cc (Descriptors::open): Remove reference to
+       is_claimed.
+       (Descriptors::claim_for_plugin): Remove.
+       * descriptors.h (Descriptors::claim_for_plugin): Remove.
+       (Descriptors::is_claimed): Remove.
+       (claim_descriptor_for_plugin): Remove.
+       * fileread.cc (File_read::claim_for_plugin): Remove.
+       * fileread.h (File_read::claim_for_plugin): Remove.
+       (File_read::descriptor): Reopen descriptor if necessary.
+       * plugin.cc  (Plugin::load): Add two new APIs to transfer vector.
+       (Plugin_manager::all_symbols_read): Add task parameter. Change
+       all callers.
+       (Plugin_manager::get_input_file): New function.
+       (Plugin_manager::release_input_file): New function.
+       (Pluginobj::Pluginobj): Add filesize parameter and initialize
+       corresponding data member.
+       (Sized_pluginobj::Sized_pluginobj): Add filesize parameter
+       and pass to base constructor. Change all callers.
+       (get_input_file, release_input_file): New functions.
+       (make_sized_plugin_object): Add filesize parameter. Change all callers.
+       * plugin.h (Plugin_manager::Plugin_manager): Initialize task_ member.
+       (Plugin_manager::all_symbols_read): Add task parameter.
+       (Plugin_manager::get_input_file): New function.
+       (Plugin_manager::release_input_file): New function.
+       (Plugin_manager::task_): New data member.
+       (Pluginobj::Pluginobj): Add filesize parameter.
+       (Pluginobj::filename): New function.
+       (Pluginobj::descriptor): New function.
+       (Pluginobj::filesize): New function.
+       (Pluginobj::filesize_): New data member.
+       (Sized_pluginobj::Sized_pluginobj): Add filesize parameter.
+       * readsyms.cc (Read_symbols::do_read_symbols): Remove call to
+       File_read::claim_for_plugin; use Object::unlock to unlock the file.
+
+       * testsuite/Makefile.am (plugin_test_4): New test case for plugins
+       with archive libraries.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/plugin_test.c (struct sym_info): New type.
+       (get_input_file, release_input_file): New static variables.
+       (onload): Capture new transfer vector entries.
+       (claim_file_hook): Stop reading at end of file according to filesize.
+       Factor out parsing of readelf output into separate function.
+       (all_symbols_read_hook): Exercise get_input_file and release_input_file
+       APIs and get the source file name from the symbol table.  Convert
+       source file name to corresponding object file name.  Print info
+       message when adding new input files.
+       (parse_readelf_line): New function.
+       * testsuite/plugin_test_1.sh: Add checks for new info messages.
+       * testsuite/plugin_test_2.sh: Likewise.
+       * testsuite/plugin_test_3.sh: Likewise.
+       * testsuite/plugin_test_4.sh: New test case.
+
+2009-01-07  Ian Lance Taylor  <iant@google.com>
+
+       * version.cc (version_string): Bump to 1.8.
+
+2008-12-23  Cary Coutant  <ccoutant@google.com>
+
+       * gold.cc (gold_exit): Call plugin cleanup handlers on exit.
+       * plugin.cc (Plugin_manager::finish): Rename as
+       layout_deferred_objects.  Move cleanup to separate function.
+       (Plugin_manager::cleanup): New function.
+       (Plugin_finish::run): Call layout_deferred_objects and cleanup
+       separately.
+       * plugin.h (Plugin_manager::finish): Rename as
+       layout_deferred_objects.
+       (Plugin_manager::cleanup): New function.
+       (Plugin_manager::cleanup_done): New field.
+
+2008-12-23  Cary Coutant  <ccoutant@google.com>
+
+       * plugin.cc (is_visible_from_outside): New function.
+       (Pluginobj::get_symbol_resolution_info): Call is_visible_from_outside
+       so we don't return "IR only" status for exported symbols or -r links.
+
+       * testsuite/Makefile.am (plugin_test_3): New test case.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/plugin_test_3.sh: New file.
+
+2008-12-22  Cary Coutant  <ccoutant@google.com>
+
+       * object.cc (Sized_relobj::layout_section): New function.
+       (Sized_relobj::do_layout): Defer layout of input sections until after
+       plugin has provided replacement files.
+       (Sized_relobj::do_layout_deferred_sections): New function.
+       * object.h (Relobj::set_section_offset): Remove virtual keyword.
+       (Relobj::layout_deferred_sections): New function.
+       (Relobj::do_layout_deferred_sections): New function.
+       (Sized_relobj::do_layout_deferred_sections): New function.
+       (Sized_relobj::layout_section): New function.
+       (Sized_relobj::Deferred_layout): New structure.
+       (Sized_relobj::deferred_layout_): New field.
+       * plugin.cc (Plugin_manager::finish): Renamed, was cleanup.
+       Change all callers.  Layout deferred sections.
+       (class Plugin_finish): Renamed, was Plugin_cleanup.  Change all
+       references.
+       (Plugin_hook::run): Move code from do_plugin_hook inline.
+       (Plugin_hook::do_plugin_hook): Remove.
+       * plugin.h (Plugin_manager::Plugin_manager): Add missing initializers.
+       (Plugin_manager::finish): Renamed, was cleanup.
+       (Plugin_manager::should_defer_layout): New function.
+       (Plugin_manager::add_deferred_layout_object): New function.
+       (Plugin_manager::Deferred_layout_list): New type.
+       (Plugin_manager::deferred_layout_objects_): New field.
+       (Plugin_hook::do_plugin_hook): Remove.
+
+2008-12-17  Ian Lance Taylor  <iant@google.com>
+
+       * options.h (class General_options): Add --no case for
+       --export-dynamic.
+
+2008-12-16  Cary Coutant  <ccoutant@google.com>
+
+       * plugin.cc (Plugin::load): Move LDPT_MESSAGE to front of transfer
+       vector.
+       (Plugin_manager::claim_file): Create plugin object even if
+       plugin did not call the add_symbols callback.
+       (Plugin_obj::get_symbol_resolution_info): Guard against plugin
+       asking for more symbols than were added.
+       * testsuite/Makefile.am (plugin_test_1): Add test case with
+       no global symbols.
+       (empty.syms): New target.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/plugin_test.c (claim_file_hook): Add new debug
+       message. Don't call add_symbols if no globals.
+       (all_symbols_read_hook): Don't provide replacement for empty
+       claimed file.
+
+2008-12-12  Ian Lance Taylor  <iant@google.com>
+
+       * target-reloc.h (Default_scan_relocatable_relocs): Only discard
+       r_type == 0 for a local symbol with r_sym == 0.
+       (scan_relocatable_relocs): Pass r_sym to
+       local_non_section_strategy.
+       * reloc.cc (Emit_relocs_strategy::local_non_section_strategy): Add
+       r_sym parameter.
+
+       * configure.ac: Update test for TLS descriptors: they are
+       supported as of glibc 2.9.
+       * configure: Rebuild.
+
+2008-12-11  Ian Lance Taylor  <iant@google.com>
+
+       PR 7091
+       * target-reloc.h (Default_scan_relocatable_relocs): For each
+       function, map r_type == 0 to RELOC_DISCARD.
+
+2008-12-10  Cary Coutant  <ccoutant@google.com>
+
+       * layout.cc (Layout::add_comdat): Allow COMDAT group from a replacement
+       object to override a kept COMDAT group from a plugin object.
+
+2008-12-09  Ian Lance Taylor  <iant@google.com>
+
+       PR 7088
+       * yyscript.y (file_cmd): Handle INPUT.
+
+       * testsuite/initpri1.c: Change all declarations to be full
+       prototypes by adding void, to avoid compiler warnings.
+
+2008-12-05  Rafael Avila de Espindola  <espindola@google.com>
+
+       * options.cc (General_options::parse_plugin_opt): New.
+       (General_options::add_plugin): The argument now is just the filename.
+       (General_options::add_plugin_option): New.
+       * options.h (plugin_opt): New.
+       (add_plugin): Change argument name.
+       (add_plugin_option): New.
+       * plugin.cc (Plugin::load): Don't parse the plugin option.
+       * plugin.h (Plugin::Plugin): Rename argument. Init filename_.
+       (Plugin::add_option): New.
+       (Plugin::args_): Change type.
+       (Plugin::filename_): New.
+       (Plugin_manager::add_plugin_option): New.
+       * testsuite/Makefile.am (plugin_test_1): Use new syntax.
+       * testsuite/Makefile.in: Regenerate.
+
+2008-12-05  Cary Coutant  <ccoutant@google.com>
+
+       * layout.cc (Layout::include_section): Check for SHF_EXCLUDE.
+       Handle --strip-lto-sections option.
+       * options.h (strip_lto_sections): New option.
+
+2008-12-01  Cary Coutant  <ccoutant@google.com>
+
+       * plugin.cc (ld_plugin_message): Change format parameter to const.
+       Fix mismatch between new[] and delete.
+
+2008-11-14  Cary Coutant  <ccoutant@google.com>
+
+       * reloc.cc (Sized_relobj::do_read_relocs): Use constant invalid_address
+       instead of -1U.
+
+2008-11-05  Craig Silverstein  <csilvers@google.com>
+
+       * options.cc (General_options::parse_dynamic_list): New function.
+       * options.h (General_options): New flags dynamic_list,
+       dynamic_list_data, dynamic_list_cpp_new, and
+       dynamic_list_cpp_typeinfo.  New variable dynamic_list_.
+       (General_options::in_dynamic_list): New function.
+       * script.cc (Lex::Mode): New enum DYNAMIC_LIST.
+       (Lex::can_start_name): Add support for DYNAMIC_LIST mode.
+       (Lex::can_continue_name): Likewise.
+       (yylex): Likewise.
+       (read_script_file): New parameter script_options.
+       (read_dynamic_list): New function.
+       (Script_options::define_dynamic_list): New function.
+       (dynamic_list_keyword_parsecodes): New variable.
+       (dynamic_list_keywords): New variable.
+       * script.h (Script_options::define_dynamic_list): New function
+       prototype.
+       (read_dynamic_list): New function prototype.
+       * symtab.cc (strprefix): New macro.
+       (Symbol::should_add_dynsym_entry): Support dynamic_list,
+       dynamic_list_data, dynamic_list_cpp_new, and
+       dynamic_list_cpp_typeinfo.
+       * yyscript.y (PARSING_DYNAMIC_LIST): New token.
+       (dynamic_list_expr): New rule.
+       (dynamic_list_nodes): Likewise.
+       (dynamic_list_node): Likewise.
+       * testsuite/Makefile.am (dynamic_list): New test.
+       * testsuite/Makefile.in: Regenerated.
+       * testsuite/dynamic_list.t: New file.
+       * testsuite/dynamic_list.sh: New file.
+
+2008-11-05  Craig Silverstein  <csilvers@google.com>
+
+       * testsuite/tls_test_c.c: Add prototype for t11 and t11_last.
+       * testsuite/tls_test_c.c (t11): Add explicit "void" to prototype.
+       (t11_last): Likewise.
+       * testsuite/ver_test_6.c (main): Likewise.
+
+2008-10-07  Cary Coutant  <ccoutant@google.com>
+
+       * options.c (General_options::finalize): Add check for -static and
+       -shared.
+       * gold.cc (queue_middle_tasks): Assert that list of dynamic objects
+       is not empty.
+
+2008-10-02  Cary Coutant  <ccoutant@google.com>
+
+       * plugin.cc (make_sized_plugin_object): Fix conditional
+       compilation to work when not all targets are enabled.
+
+2008-09-29  Cary Coutant  <ccoutant@google.com>
+
+       * archive.cc (Archive::get_file_and_offset): Use filename instead
+       of name to get library path.
+       (Archive::include_member): Unlock external member of a thin archive.
+
+       * testsuite/Makefile.am (TEST_AR): New variable.
+       (thin_archive_test_1): New test.
+       (thin_archive_test_2): New test.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/thin_archive_main.cc: New file.
+       * testsuite/thin_archive_test_1.cc: New file.
+       * testsuite/thin_archive_test_2.cc: New file.
+       * testsuite/thin_archive_test_3.cc: New file.
+       * testsuite/thin_archive_test_4.cc: New file.
+
+2008-09-29  Cary Coutant  <ccoutant@google.com>
+
+       * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.
+       * object.cc (Sized_relobj::do_layout): Use constant invalid_address
+       instead of -1U.
+       (Sized_relobj::do_finalize_local_symbols): Likewise.
+       (Sized_relobj::map_to_kept_section): Likewise.
+       * object.h (Sized_relobj::invalid_address): New constant.
+       (Sized_relobj::do_output_section_offset): Check for invalid_address
+       and return -1ULL.
+       * output.cc (Output_reloc::local_section_offset): Use constant
+       invalid_address instead of -1U.
+       (Output_reloc::get_address): Likewise.
+       (Output_section::output_address): Change -1U to -1ULL.
+       * output.h (Output_reloc::invalid_address): New constant.
+       * reloc.cc (Sized_relobj::write_sections): Use constant
+       invalid_address instead of -1U.
+       (Sized_relobj::relocate_sections): Likewise.
+       * symtab.cc (Symbol_table::sized_finalize_symbol): Handle symbol
+       values for merge sections.
+       * target-reloc.h (relocate_for_relocatable): Use constant
+       invalid_address instead of -1U.
+
+2008-09-19  Cary Coutant  <ccoutant@google.com>
+
+       Add plugin functionality for link-time optimization (LTO).
+       * configure.ac (plugins): Add --enable-plugins option.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+       * Makefile.am (LIBDL): New variable.
+       (CCFILES): Add plugin.cc.
+       (HFILES): Add plugin.h.
+       (ldadd_var): Add LIBDL.
+       * Makefile.in: Regenerate.
+
+       * archive.cc: Include "plugin.h".
+       (Archive::setup): Don't preread archive symbols when using a plugin.
+       (Archive::get_file_and_offset): Add memsize parameter.  Change callers.
+       (Archive::get_elf_object_for_member): Call plugin hooks for claiming
+       files.
+       (Archive::include_member): Add symbols from plugin objects.
+       * archive.h (Archive::get_file_and_offset): Add memsize parameter.
+       * descriptors.cc (Descriptors::open): Check for file descriptors
+       abandoned by plugins.
+       (Descriptors::claim_for_plugin): New function.
+       * descriptors.h (Descriptors::claim_for_plugin): New function.
+       (Open_descriptor::is_claimed): New field.
+       (claim_descriptor_for_plugin): New function.
+       * fileread.cc (File_read::claim_for_plugin): New function.
+       * fileread.h (File_read::claim_for_plugin): New function.
+       (File_read::descriptor): New function.
+       * gold.cc: Include "plugin.h".
+       (queue_initial_tasks): Add task to call plugin hooks for generating
+       new object files.
+       * main.cc: Include "plugin.h".
+       (main): Load plugin libraries.
+       * object.h (Pluginobj): Declare.
+       (Object::pluginobj): New function.
+       (Object::do_pluginobj): New function.
+       (Object::set_target): New function.
+       * options.cc: Include "plugin.h".
+       (General_options::parse_plugin): New function.
+       (General_options::General_options): Initialize plugins_ field.
+       (General_options::add_plugin): New function.
+       * options.h (Plugin_manager): Declare.
+       (General_options): Add --plugin option.
+       (General_options::has_plugins): New function.
+       (General_options::plugins): New function.
+       (General_options::add_plugin): New function.
+       (General_options::plugins_): New field.
+       * plugin.cc: New file.
+       * plugin.h: New file.
+       * readsyms.cc: Include "plugin.h".
+       (Read_symbols::do_read_symbols): Check for archive before checking
+       for ELF file.  Call plugin hooks to claim files.
+       * resolve.cc (Symbol_table::resolve): Record when symbol is referenced
+       from a real object file; force override when processing replacement
+       files.
+       * symtab.cc (Symbol::init_fields): Initialize in_real_elf_ field.
+       (Symbol::init_base_object): Likewise.
+       (Symbol::init_base_output_data): Likewise.
+       (Symbol::init_base_output_segment): Likewise.
+       (Symbol::init_base_constant): Likewise.
+       (Symbol::init_base_undefined): Likewise.
+       (Symbol::output_section): Assert that object is not a plugin.
+       (Symbol_table::add_from_pluginobj): New function.
+       (Symbol_table::sized_finalize_symbol): Treat symbols from plugins as
+       undefined.
+       (Symbol_table::sized_write_globals): Likewise.
+       (Symbol_table::add_from_pluginobj): Instantiate template.
+       * symtab.h (Sized_pluginobj): Declare.
+       (Symbol::in_real_elf): New function.
+       (Symbol::set_in_real_elf): New function.
+       (Symbol::in_real_elf_): New field.
+       (Symbol_table::add_from_pluginobj): New function.
+
+       * testsuite/Makefile.am (AM_CFLAGS): New variable.
+       (LIBDL): New variable.
+       (LDADD): Add LIBDL.
+       (check_PROGRAMS): Add plugin_test_1 and plugin_test_2.
+       (check_SCRIPTS): Add plugin_test_1.sh and plugin_test_2.sh.
+       (check_DATA): Add plugin_test_1.err and plugin_test_2.err.
+       (MOSTLYCLEANFILES): Likewise.
+       * testsuite/Makefile.in: Regenerate.
+       * testsuite/plugin_test.c: New file.
+       * testsuite/plugin_test_1.sh: New file.
+       * testsuite/plugin_test_2.sh: New file.
+
+2008-09-16  Ian Lance Taylor  <iant@google.com>
+
+       * target-reloc.h (relocate_section): Check whether a symbol is
+       defined by the ABI before reporting an undefined symbol error.
+       * target.h (Target::is_defined_by_abi): Make parameter const.
+       (Target::do_is_defined_by_abi): Likewise.
+       * i386.cc (Target_i386::do_is_defined_by_abi): Likewise.
+       * powerpc.cc (Target_powerpc::do_is_defined_by_abi): Likewise.
+       * sparc.cc (Target_sparc::do_is_defined_by_abi): Likewise.
+       * x86_64.cc (Target_x86_64::do_is_defined_by_abi): Likewise.
+       * testsuite/Makefile.am (tls_test_shared.so): Add -Wl,-z,defs.
+       * testsuite/Makefile.in: Rebuild.
+
+       * fileread.cc (make_view): Add casts to avoid warning.
+
+2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
+
+       * i386.cc (Target_i386::define_tls_base_symbol): Update comments.
+       * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
+
+2008-09-16  Alexandre Oliva  <aoliva@redhat.com>
+
+       * options.h (General_options::output_is_executable): New.
+       (General_options::output_is_pie): New.
+       * i386.cc (Target_i386::define_tls_base_symbol): Use SEGMENT_START
+       for shared libraries.
+       * x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
+
+2008-09-11  Chris Demetriou  <cgd@google.com>
+
+       * options.h (origin): New -z option.
+       * layout.cc (Layout:finish_dynamic_section): If "-z origin"
+       is specified, set DF_ORIGIN in DT_FLAGS and set DF_1_ORIGIN
+       in DT_FLAGS_1.
+
+2008-09-05  Cary Coutant  <ccoutant@google.com>
+
+       * fileread.cc (File_read::make_view): Add check for attempt to map
+       beyond end of file.
+
+2008-09-05  Cary Coutant  <ccoutant@google.com>
+
+       * symtab.cc (Symbol_table::add_from_dynobj): Fix typos in
+       explicit instantiations.
+
+2008-08-28  Kris Van Hees  <kris.van.hees@oracle.com>
+
+       PR gold/6858
+       * options.cc (General_options::finalize): Allow undefined symbols
+       in shlibs if linking -shared.
+
+       PR gold/6859
+       * symtab.cc (Symbol::init_base_undefined): Mark explicitly undefined
+       symbols as not needing a dynsym entry.
+
+2008-08-20  Craig Silverstein  <csilvers@google.com>
+
+       * fileread.cc (File_read::open): Do not lock the file unless it
+       was successfully opened.
+
+2008-08-14  Cary Coutant  <ccoutant@google.com>
+
+       * x86_64.cc (Target_x86_64::Relocate::relocat_tls):
+       Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs.
+       * testsuite/tls_test.cc (struct int128): 128-bit struct
+       for testing TLS relocs with non-zero addend.
+       (v12): New TLS variable.
+       (t12): New test.
+       (t_last): Add check for v12.
+       * testsuite/tls_test.h (t12): New function.
+       * testsuite/tls_test_main.cc (thread_routine): Call new test.
+
+2008-08-13  Ian Lance Taylor  <iant@google.com>
+
+       * layout.cc (Layout::attach_allocated_section_to_segment): Don't
+       set tls_segment_ or relro_segment_.
+       (Layout::make_output_segment): Set tls_segment_ and relro_segment_
+       when appropriate.
+       * output.h (Output_section::clear_is_relro): New function.
+       * output.cc (Output_segment::add_output_section): Handle SHF_TLS
+       sections specially even when output_data_ is empty.
+       (Output_segment::maximum_alignment): When first section is relro,
+       only force alignment for PT_LOAD segments.
+       * script.cc (script_data_segment_align): New function.
+       (script_data_segment_relro_end): New function.
+       * script-c.h (script_data_segment_align): Declare.
+       (script_data_segment_relro_end): Declare.
+       * script-sections.h (class Script_sections): Declare
+       data_segment_align and data_segment_relro_end.  Add fields
+       segment_align_index_ and saw_relro_end_.
+       * script-sections.cc (class Sections_element): Add set_is_relro
+       virtual function.  Add new bool* parameter to place_orphan_here.
+       Add get_output_section virtual function.
+       (class Output_section_definition): Add set_is_relro.  Add new
+       bool* parameter to place_orphan_here.  Add get_output_section.
+       Add is_relro_ field.
+       (Output_section_definition::Output_section_definition): Initialize
+       evaluated_address_, evaluated_load_address, evaluated_addralign_,
+       and is_relro_ fields.
+       (Output_section_definition::place_orphan_here): Add is_relro
+       parameter.
+       (Output_section_definition::set_section_addresses): Set relro for
+       output section.
+       (Output_section_definition::alternate_constraint): Likewise.
+       (class Orphan_output_section): Add new bool* parameter to
+       place_orphan_here.  Add get_output_section.
+       (Orphan_output_section::place_orphan_here): Add is_relro
+       parameter.
+       (Script_sections::Script_sections): Initialize
+       data_segment_align_index_ and saw_relro_end_.
+       (Script_sections::data_segment_align): New function.
+       (Script_sections::data_segment_relro_end): New function.
+       (Script_sections::place_orphan): Set or clear is_relro.
+       (Script_sections::set_section_addresses): Force alignment of first
+       TLS section.
+       * yyscript.y (exp): Call script_data_segment_align and
+       script_data_segment_relro_end.
+       * testsuite/relro_script_test.t: New file.
+       * testsuite/relro_test.cc (using_script): Declare.
+       (t1, t2): Test using_script.
+       * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test.
+       (relro_script_test_SOURCES): Define.
+       (relro_script_test_DEPENDENCIES): Define.
+       (relro_script_test_LDFLAGS): Define.
+       (relro_script_test_LDADD): Define.
+       (relro_script_test.so): New target.
+       * testsuite/Makefile.in: Rebuild.
+
+2008-08-06  Cary Coutant <ccoutant@google.com>
+
+       * archive.cc (Archive::total_archives, Archive::total_members)
+       (Archive::total_members_loaded): New variables.
+       (Archive::setup): Add parameter.  Add option to preread
+       archive symbols.
+       (Archive::read_armap): Add counter.
+       (Archive::get_file_and_offset): New function.
+       (Archive::get_elf_object_for_member): New function.
+       (Archive::read_all_symbols): New function.
+       (Archive::read_symbols): New function.
+       (Archive::add_symbols): Add counters.
+       (Archive::include_all_members): Use armap to find members if it's
+       already built.
+       (Archive::include_member): Skip reading symbols if already read.
+       Factored code into Archive::get_file_and_offset and
+       Archive::get_elf_object_for_member.  Changed call to
+       Mapfile::report_include_archive_member.
+       (Archive::print_stats): New function.
+       * archive.h: Declare Object and Read_symbols_data classes.
+       (Archive::Archive): Add initializers for new members.
+       (Archive::setup): Add parameter.
+       (Archive::print_stats): New function.
+       (Archive::total_archives, Archive::total_members)
+       (Archive::total_members_loaded): New variables.
+       (Archive::get_file_and_offset): New function.
+       (Archive::get_elf_object_for_member): New function.
+       (Archive::read_all_symbols): New function.
+       (Archive::read_symbols): New function.
+       (Archive::Archive_member): New class.
+       (Archive::members_): New member.
+       (Archive::num_members_): New member.
+       * main.cc: Include archive.h.
+       (main): Call Archive::print_stats.
+       * mapfile.cc (Mapfile::report_include_archive_member): Delete
+       archive parameter; member_name is now the fully-decorated name.
+       * mapfile.h (Mapfile::report_include_archive_member): Likewise.
+       * options.h: (General_options): Add --preread-archive-symbols option.
+       * readsyms.cc (Read_symbols::do_read_symbols): Change call to
+       Archive::setup.
+
+2008-08-04  Ian Lance Taylor  <iant@google.com>
+
+       * symtab.h (Symbol::use_plt_offset): New function.
+       * i386.cc (Relocate::relocate): Call Symbol::use_plt_offset.
+       * powerpc.cc (Relocate::relocate): Likewise.
+       * sparc.cc (Relocate::relocate): Likewise.
+       * x86_64.cc (Relocate::relocate): Likewise.
+       * testsuite/weak_plt.sh: New test.
+       * testsuite/weak_plt_main.cc: New test.
+       * testsuite/weak_plt_shared.cc: New test.
+       * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh.
+       (check_PROGRAMS): Add weak_plt.
+       (check_DATA): Add weak_plt_shared.so.
+       (weak_plt_main_pic.o, weak_plt): New targets.
+       (weak_plt_shared_pic.o, weak_plt_shared.so): New targets.
+       * testsuite/Makefile.in: Rebuild.
+
+       * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon
+       gcctestdir/ld.
+       (weak_alias_test_2.so, weak_alias_test_4.so): Likewise.
+       * testsuite/Makefile.in: Rebuild.
+
+2008-08-04  Alan Modra  <amodra@bigpond.net.au>
+
+       * Makefile.am (POTFILES.in): Set LC_ALL=C.
+       * Makefile.in: Regenerate.
+       * po/POTFILES.in: Regenerate.
+
+2008-07-29  Ian Lance Taylor  <iant@google.com>
+
+       * script.cc (Script_options::finalize_symbols): Finalize SECTIONS
+       symbols before other symbols.
+       * testsuite/script_test_2.cc (test_addr): Declare.
+       (test_addr_alias): Declare.
+       (main): Check that test_addr and test_addr_alias have the right
+       values.
+       * testsuite/script_test_2.t: Define test_addr_alias and
+       test_addr.
+
+2008-07-24  Ian Lance Taylor  <iant@google.com>
+
+       PR 5990
+       * descriptors.cc: New file.
+       * descriptors.h: New file.
+       * gold-threads.h (class Hold_optional_lock): New class.
+       * fileread.cc: Include "descriptors.h".
+       (File_read::~File_read): Release descriptor rather than closing
+       it.
+       (File_read::open) [file]: Call open_descriptor rather than open.
+       Set is_descriptor_opened_.
+       (File_read::open) [memory]: Assert that descriptor is not open.
+       (File_read::reopen_descriptor): New function.
+       (File_read::release): Release descriptor.
+       (File_read::do_read): Make non-const.  Reopen descriptor.
+       (File_read::read): Make non-const.
+       (File_read::make_view): Reopen descriptor.
+       (File_read::do_readv): Likewise.
+       * fileread.h (class File_read): Add is_descriptor_opened_ field.
+       Update declarations.
+       * layout.cc: Include "descriptors.h".
+       (Layout::create_build_id): Use open_descriptor rather than open.
+       * output.cc: Include "descriptors.h".
+       (Output_file::open): Use open_descriptor rather than open.
+       * archive.cc (Archive::const_iterator): Change Archive to be
+       non-const.
+       (Archive::begin, Archive::end): Make non-const.
+       (Archive::count_members): Likewise.
+       * archive.h (class Archive): Update declarations.
+       * object.h (Object::read): Make non-const.
+       * Makefile.am (CCFILES): Add descriptors.cc.
+       (HFILES): Add descriptors.h.
+       * Makefile.in: Rebuild.
+
+       PR 6716
+       * gold.h: Always include <clocale>.  Add Solaris workarounds
+       following code in binutils/sysdep.h.
+
+       PR 6048
+       * ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether
+       this->eh_frame_hdr_ is NULL before using it.
+
+       * dynobj.cc (Versions::Versions): Update comment.
+
+       * dynobj.cc (Versions::Versions): If there is an soname, use it as
+       the base version name.
+
+       * stringpool.cc (Stringpool_template::add_with_length): Set key to
+       array size plus one.
+       (Stringpool_template::set_string_offsets): Subtract one from key
+       before using it as an array index.
+       (Stringpool_template::get_offset_with_length): Likewise.
+       (Stringpool_template::write_to_buffer): Likewise.
+       * stringpool.h (Stringpool_template::get_offset_from_key):
+       Likewise.
+
+2008-07-23  Ian Lance Taylor  <iant@google.com>
+
+       PR 6658
+       * object.h (Merged_symbol_value::value): Do our best to handle a
+       negative addend.
+
+       PR 6647
+       * script.cc (Version_script_info::get_versions): Don't add empty
+       version tag to return value.
+       (Version_script_info::get_symbol_version_helper): Change return
+       type to bool.  Add pversion parameter.  Change all callers.
+       (script_register_vers_node): Don't require a non-NULL tag.
+       * script.h (class Version_script_info): Update declarations.
+       (Version_script_info::get_symbol_version): Change return type to
+       bool.  Add version parameter.  Change all callers.
+       * symtab.cc (Sized_symbol::add_from_relobj): Rework version
+       handling.  Handle an empty version from a version script.
+       (Symbol_table::define_special_symbol): Likewise.
+       * testsuite/ver_test_10.script: New file.
+       * testsuite/ver_test_10.sh: New file.
+       * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
+       (check_DATA): Add ver_test_10.syms.
+       (ver_test_10.syms, ver_test_10.so): New target.
+       * testsuite/Makefile.in: Rebuild.
+
+2008-07-23  Simon Baldwin  <simonb@google.com>
+
+       * symtab.cc (Symbol_table::sized_write_symbol): Only set st_size
+       to zero for undefined symbols from dynamic libraries.
+
+2008-07-23  Ian Lance Taylor  <iant@google.com>
+
+       * symtab.cc (Symbol_table::resolve): Remove version parameter.
+       Change all callers.
+       * symtab.h (class Symbol_table): Update declaration.
+       * testsuite/ver_test_9.cc: New file.
+       * testsuite/Makefile.am (check_PROGRAMS): Add ver_test_9.
+       (ver_test_9_SOURCES, ver_test_9_DEPENDENCIES): Define.
+       (ver_test_9_LDFLAGS, ver_test_9_LDADD): Define.
+       (ver_test_9.so, ver_test_9.o): New targets.
+       * testsuite/Makefile.in: Rebuild.
+
+2008-07-22  Ian Lance Taylor  <iant@google.com>
+
+       * options.h (class General_options): Define --check-sections.
+       * layout.cc (Layout::set_segment_offsets): Handle
+       --check-sections.
+
+       * options.h (class General_options): Define -n/--nmagic and
+       -N/--omagic.
+       * options.cc (General_options::finalize): For -n/--nmagic or
+       -N/--omagic, set -static.
+       * layout.cc (Layout::attach_allocated_section_to_segment): If
+       -N/--omagic, don't put read-only and read-write sections in
+       different segments.
+       (Layout::find_first_load_seg): If -N/--omagic, don't insist on
+       finding a read-only segment.
+       (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic,
+       don't set the minimum segment alignment to the common page size,
+       and don't set the file offset to the address modulo the page size.
+       * script-sections.cc (Script_sections::create_segments): If
+       -n/--omagic, don't put read-only and read-write sections in
+       different segments.
+
+       * cref.cc: New file.
+       * cref.h: New file.
+       * options.h (class General_options): Add --print-symbol-counts.
+       * main.cc (main): Issue defined symbol report if requested.
+       * archive.cc (Archive::interpret_header): Make into a const member
+       function.
+       (Archive::add_symbols): Call Input_objects::archive_start and
+       archive_stop.
+       (Archive::const_iterator): Define new class.
+       (Archive::begin, Archive::end): New functions.
+       (Archive::include_all_members): Rewrite to use iterator.
+       (Archive::count_members): New function.
+       * archive.h (class Archive): Update declarations.
+       (Archive::filename): New function.
+       * object.cc: Include "cref.h".
+       (Sized_relobj::Sized_relobj): Initialize defined_count_.
+       (Sized_relobj::do_get_global_symbol_counts): New function.
+       (Input_objects::add_object): Add object to cross-referencer.
+       (Input_objects::archive_start): New function.
+       (Input_objects::archive_stop): New function.
+       (Input_objects::print_symbol_counts): New function.
+       * object.h: Declare Cref and Archive.
+       (Object::get_global_symbol_counts): New function.
+       (Object::do_get_global_symbol_counts): New pure virtual function.
+       (class Sized_relobj): Add defined_count_ field.  Update
+       declarations.
+       (class Input_objects): Add cref_ field.  Update constructor.
+       Update declarations.
+       * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and
+       defined_count_.
+       (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing
+       symbol counts.
+       (Sized_dynobj::do_get_global_symbol_counts): New function.
+       * dynobj.h (class Sized_dynobj): Add fields symbols_ and
+       defined_count_.  Update declarations.  Define Symbols typedef.
+       * symtab.cc (Symbol_table::add_from_relobj): Add defined
+       parameter.  Change all callers.
+       (Symbol_table::add_from_dynobj): Add sympointers and defined
+       parameters.  Change all callers.
+       * symtab.h (class Symbol_table): Update declarations.
+       * Makefile.am (CCFILES): Add cref.cc.
+       (HFILES): Add cref.h.
+       * Makefile.in: Rebuild.
+
 2008-07-22  Simon Baldwin  <simonb@google.com>
 
        * symtab.cc (Symbol_table::sized_write_symbol): Set symbol size
 
        * symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol):
        Include symbol version in error message.
-       
+
 2008-07-20  Chris Demetriou  <cgd@google.com>
 
-        * configure.ac (gold_cv_c_random_seed): New configured variable.
+       * configure.ac (gold_cv_c_random_seed): New configured variable.
        (RANDOM_SEED_CFLAGS): New substituted variable.
        * Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).
        * configure: Rebuild.
 2008-06-05  Kris Van Hees  <kris.van.hees@oracle.com>
 
        PR 6584
-        * binary.cc (Binary_to_elf::sized_convert): Fix .data
+       * binary.cc (Binary_to_elf::sized_convert): Fix .data
        alignment.
 
 2008-05-30  Cary Coutant  <ccoutant@google.com>
 
        * reduced_debug_output.cc: New file.
        * reduced_debug_output.h: New file.
-       * options.h (class General_optoins): Add --strip-debug-non-line.
+       * options.h (class General_options): Add --strip-debug-non-line.
        * options.cc (General_options::finalize): Add strip_debug_non_line
        to the strip heirarchy.
        * layout.h (class Layout): Add debug_abbrev_ and debug_info_
        for thin archives.  Pass additional parameters to
        Archive::Archive.  Unlock the archive file after calling
        Archive::setup.
-       
+
 2008-03-29  Ian Lance Taylor  <iant@google.com>
 
        * symtab.cc (Symbol_table::do_define_as_constant): Don't force a
 2008-03-21  Ian Lance Taylor  <iant@google.com>
 
        * Added source code to GNU binutils.
-       
This page took 0.037235 seconds and 4 git commands to generate.