+2009-04-27 Ian Lance Taylor <iant@google.com>
+
+ * x86_64.cc (do_adjust_output_section): Set entsize to
+ plt_entry_size.
+
+2008-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.
+ * 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):
* 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.
+ values.
* testsuite/script_test_2.t: Define test_addr_alias and
test_addr.
* 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>
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.
-