2008-09-09 Alan Modra <amodra@bigpond.net.au>* po/gold.pot: Regenerate.2008-09-05 Cary Coutant <ccoutant@google.com>* symtab.cc (Symbol_table::add_from_dynobj): Fix typos inexplicit instantiations.2008-08-28 Kris Van Hees <kris.van.hees@oracle.com>PR gold/6858* options.cc (General_options::finalize): Allow undefined symbolsin shlibs if linking -shared.PR gold/6859* symtab.cc (Symbol::init_base_undefined): Mark explicitly undefinedsymbols 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 itwas 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 structfor 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'tset 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_TLSsections 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): Declaredata_segment_align and data_segment_relro_end. Add fieldssegment_align_index_ and saw_relro_end_.* script-sections.cc (class Sections_element): Add set_is_relrovirtual function. Add new bool* parameter to place_orphan_here.Add get_output_section virtual function.(class Output_section_definition): Add set_is_relro. Add newbool* parameter to place_orphan_here. Add get_output_section.Add is_relro_ field.(Output_section_definition::Output_section_definition): Initializeevaluated_address_, evaluated_load_address, evaluated_addralign_,and is_relro_ fields.(Output_section_definition::place_orphan_here): Add is_relroparameter.(Output_section_definition::set_section_addresses): Set relro foroutput section.(Output_section_definition::alternate_constraint): Likewise.(class Orphan_output_section): Add new bool* parameter toplace_orphan_here. Add get_output_section.(Orphan_output_section::place_orphan_here): Add is_relroparameter.(Script_sections::Script_sections): Initializedata_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 firstTLS section.* yyscript.y (exp): Call script_data_segment_align andscript_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 prereadarchive 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'salready built.(Archive::include_member): Skip reading symbols if already read.Factored code into Archive::get_file_and_offset andArchive::get_elf_object_for_member. Changed call toMapfile::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): Deletearchive 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 toArchive::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 upongcctestdir/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 SECTIONSsymbols 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 rightvalues.* testsuite/script_test_2.t: Define test_addr_alias andtest_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 closingit.(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 benon-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 workaroundsfollowing code in binutils/sysdep.h.PR 6048* ehframe.cc (Eh_frame::add_ehframe_input_section): Check whetherthis->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 asthe base version name.* stringpool.cc (Stringpool_template::add_with_length): Set key toarray size plus one.(Stringpool_template::set_string_offsets): Subtract one from keybefore 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 anegative addend.PR 6647* script.cc (Version_script_info::get_versions): Don't add emptyversion tag to return value.(Version_script_info::get_symbol_version_helper): Change returntype 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 tobool. Add version parameter. Change all callers.* symtab.cc (Sized_symbol::add_from_relobj): Rework versionhandling. 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_sizeto 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 indifferent segments.(Layout::find_first_load_seg): If -N/--omagic, don't insist onfinding 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 indifferent 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 memberfunction.(Archive::add_symbols): Call Input_objects::archive_start andarchive_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. Updatedeclarations.(class Input_objects): Add cref_ field. Update constructor.Update declarations.* dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ anddefined_count_.(Sized_dynobj::do_add_symbols): Allocate symbols_ if printingsymbol counts.(Sized_dynobj::do_get_global_symbol_counts): New function.* dynobj.h (class Sized_dynobj): Add fields symbols_ anddefined_count_. Update declarations. Define Symbols typedef.* symtab.cc (Symbol_table::add_from_relobj): Add definedparameter. Change all callers.(Symbol_table::add_from_dynobj): Add sympointers and definedparameters. 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 sizeto zero when writing undefined symbols.2008-07-22 Ian Lance Taylor <iant@google.com>* output.cc (Output_section::add_input_section): Don't try tomerge empty merge sections.2008-07-21 Craig Silverstein <csilvers@google.com>* 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.(RANDOM_SEED_CFLAGS): New substituted variable.* Makefile.am (AM_CFLAGS, AM_CXXFLAGS): Add $(RANDOM_SEED_CFLAGS).* configure: Rebuild.* Makefile.in: Likewise.* testsuite/Makefile.in: Likewise.2008-07-18 Ian Lance Taylor <iant@google.com>* symtab.cc (Symbol_table::add_from_object): Rewrite the casewhere we see NAME/NULL and NAME/VERSION as separate symbols.* testsuite/ver_test_main.cc (main): Call t4.(t4, t4_2a): Define.* testsuite/ver_test_2.cc (t4_2): Define.* testsuite/ver_test_2.script: Put t4_2a in VER2.* testsuite/ver_test_4.cc (t4_2a): Define.* testsuite/ver_test_4.script: Put t4_2a in VER2.* testsuite/ver_test.h (t4, t4_2, t4_2a): Declare.2008-07-17 Ian Lance Taylor <iant@google.com>* dynobj.cc (Versions::add_def): If we give an error about amissing version, go ahead and create the version anyhow.2008-07-10 Ian Lance Taylor <iant@google.com>Handle output sections with more than 0x7fffffff bytes.* object.h (class Relobj): Change map_to_output_ tooutput_sections_, and just keep a section pointer. Change alluses. Move comdat group support to Sized_relobj.(Relobj::is_section_specially_mapped): Remove.(Relobj::output_section): Remove poff parameter. Change allcallers.(Relobj::output_section_offset): New function.(Relobj::set_section_offset): Rewrite.(Relobj::map_to_output): Remove.(Relobj::output_sections): New function.(Relobj::do_output_section_offset): New pure virtual function.(Relobj::do_set_section_offset): Likewise.(class Sized_relobj): Add section_offsets_ field. Add comdatgroup support from Relobj. Update declarations.(Sized_relobj::get_output_section_offset): New function.(Sized_relobj::do_output_section_offset): New function.(Sized_relobj::do_set_section_offset): New function.* object.cc (Relobj::output_section_address): Remove.(Sized_relobj::Sized_relobj): Initialize new fields.(Sized_relobj::include_section_group): Cast find_kept_object toSized_relobj.(Sized_relobj::include_linkonce_section): Likewise.(Sized_relobj::do_layout): Use separate arrays for output sectionand output offset.(Sized_relobj::do_count_local_symbols): Change map_to_output tooutput_sections.(Sized_relobj::do_finalize_local_symbols): Change map_to_output tooutput_sections and section_offsets.(Sized_relobj::write_local_symbols): Likewise.(map_to_kept_section): Compute output address directly.* reloc.cc (Sized_relobj::do_read_relocs): Change map_to_output tooutput_sections and section_offsets.(Sized_relobj::write_sections): Likewise.(Sized_relobj::relocate_sections): Likewise.* symtab.cc (sized_finalize_symbol): Use output_section_offset.* output.h (class Output_reloc): Update declarations. Changeu2_.relobj to Sized_relobj*.(class Output_data_reloc): Change add functions to useSized_relobj*.* output.cc (Output_reloc::Output_reloc): Change relobj toSized_relobj*.(Output_reloc::local_section_offset): Change return type toElf_Addr. Use get_output_section_offset.(Output_reloc::get_address): Likewise.(Output_section::is_input_address_mapped): Don't callis_section_specially_mapped.(Output_section::output_offset): Likewise.(Output_section::output_address): Likewise.(Output_section::starting_output_address): Likewise.* copy-relocs.cc (Copy_relocs::copy_reloc): Change objectparameter to Sized_relobj*.(Copy_relocs::need_copy_reloc): Likewise.(Copy_relocs::save): Likewise.* copy-relocs.h (class Copy_relocs): Update declarations.(class Copy_relocs::Copy_reloc_entry): Change constructor to useSized_relobj*. Change relobj_ field to Sized_relobj*.* target-reloc.h (relocate_for_relocatable): Changeoffset_in_output_section type to Elf_Addr. Change code that usesit as well.* layout.cc (Layout::layout): Always set *off.* mapfile.cc (Mapfile::print_input_section): Useoutput_section_offset.* i386.cc (Target_i386::copy_reloc): Change object parameter toSized_relobj*.* powerpc.cc (Target_powerpc::copy_reloc): Likewise.* sparc.cc (Target_sparc::copy_reloc): Likewise.* x86_64.cc (Target_x86_64::copy_reloc): Likewise.2008-07-03 Ian Lance Taylor <iant@google.com>* layout.cc (Layout::include_section): Do not discard unrecognizedSHT_STRTAB sections.2008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>* script.cc (Lex::can_continue_name): Make '?' allowable inversion-script names.* testsuite/version_script.map: Change glob pattern to use '?'2008-06-30 Manish Singh <yosh@gimp.org>PR 6585* symtab.cc (Symbol_table::add_undefined_symbols_from_command_line):Correct typo.2008-06-30 Ian Lance Taylor <iant@google.com>PR 6660PR 6682* powerpc.cc (Powerpc_relocate_functions::addr16_ha) [bothversions]: Don't try to read the value in the contents, since wedon't use it. Use the template endianness when writing.2008-06-25 Cary Coutant <ccoutant@google.com>* fileread.cc (File_read::make_view): Assert on zero-length view.* object.cc (Sized_relobj::do_read_symbols): Don't try to readsymbol table when there are no symbols to read.2008-06-23 Craig Silverstein <csilvers@google.com>* version.cc (version_string): Bump to 1.72008-06-18 Craig Silverstein <csilvers@google.com>* powerpc.cc (Powerpc_relocate_functions::addr16_ha): castconstant 0xFFFF to type Valtype.(Powerpc_relocate_functions::rel16_ha): Likewise.2008-06-17 Ian Lance Taylor <iant@google.com>* output.h (Output_section::Input_section): Initialize p2align_ tozero for Output_section_data constructors.(Output_section::Input_section::addralign): If not an inputsection, return the alignment of the Output_section_data.* testsuite/copy_test.cc: New file.* testsuite/copy_test_1.cc: New file.* testsuite/copy_test_2.cc: New file.* testsuite/Makefile.am (check_PROGRAMS): Add copy_test.(copy_test_SOURCES, copy_test_DEPENDENCIES): New variables.(copy_test_LDFLAGS, copy_test_LDADD): New variables.(copy_test_1_pic.o, copy_test_1.so): New targets.(copy_test_2_pic.o, copy_test_2.so): New targets.* testsuite/Makefile.in: Rebuild.* script-sections.cc (Script_sections::place_orphan): Initializelocal variable exact.2008-06-13 David Edelsohn <edelsohn@gnu.org>* powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.2008-06-12 David Edelsohn <edelsohn@gnu.org>David S. Miller <davem@davemloft.net>* powerpc.cc: New file.* Makefile.am (TARGETSOURCES): Add powerpc.cc(ALL_TARGETOBJS): Add powerpc.$(OBJEXT)* configure.tgt: Add entries for powerpc-* and powerpc64-*.* Makefile.in: Rebuild.2008-06-09 Ian Lance Taylor <iant@google.com>* testsuite/relro_test.cc: Include <cstdio>, <cstdlib>, and<exception>.(throwing, orig_terminate): New static variables.(terminate_handler): New static function.(t2): Set terminate handler.2008-06-05 Kris Van Hees <kris.van.hees@oracle.com>PR 6584* binary.cc (Binary_to_elf::sized_convert): Fix .dataalignment.2008-05-30 Cary Coutant <ccoutant@google.com>* archive.cc (Archive::include_all_members) Correct to stepover symbol table and extended name table in thin archives.2008-05-29 Kris Van Hees <kris.van.hees@oracle.com>PR 6407* target-reloc.h (relocate_for_relocatable): Fix new_offsetcalculation.2008-05-28 Caleb Howe <cshowe@google.com>* reduced_debug_output.cc: New file.* reduced_debug_output.h: New file.* options.h (class General_options): Add --strip-debug-non-line.* options.cc (General_options::finalize): Add strip_debug_non_lineto the strip heirarchy.* layout.h (class Layout): Add debug_abbrev_ and debug_info_fields.* layout.cc: Include "reduced_debug_output.h".(Layout::Layout): Initialize new fields.(line_only_debug_sections): New static array.(is_lines_only_debug_sections): New static inline function.(Layout::include_section): Handle --strip-debug-non-line.(Layout::make_output_section): If --strip-debug-non-line, buildnew output sections for .debug_abbrev and .debug_info.* dwarf_reader.cc (read_unsigned_LEB_128): Move to namespacegold. Warn about possible overflow.(read_signed_LEB_128): Likewise.* dwarf_reader.h: (read_unsigned_LEB_128): Declare.(read_signed_LEB_128): Declare.* Makefile.am (CCFILES): Add reduced_debug_output.cc.(HFILES): Add reduced_debug_output.h.* Makefile.in: Rebuild.2008-05-21 Ian Lance Taylor <iant@google.com>* mapfile.cc: New file.* mapfile.h: New file.* options.h (class General_options): Add -M/--print-map and -Map.* options.cc (General_options::finalize): Make -M equivalent to-Map -.* main.cc: Include <cstdio> and "mapfile.h".(main): Open mapfile if requested.* gold.cc (class Middle_runner): Add mapfile_ field. Updateconstructor. Change caller.(queue_initial_tasks): Add mapfile parameter. Change caller.(queue_middle_tasks): Likewise.* gold.h (queue_initial_tasks, queue_middle_tasks): Updatedeclarations.* archive.cc: Include "mapfile.h".(Archive::add_symbols): Add mapfile parameter. Change allcallers. Pass mapfile, symbol, and reason to include_member.(Archive::include_all_members): Add mapfile parameter. Change allcallers.(Archive::include_member): Add mapfile, sym, and why parameters.Change all callers. Report inclusion to map file.* archive.h: Include "fileread.h".(class Archive): Update declarations.(Archive::file): New const method.(class Add_archive_symbols): Add mapfile_ field. Updateconstructor. Change all callers.* readsyms.h (class Read_symbols): Likewise.(class Finish_group): Likewise.(class Read_script): Likewise.* common.cc: Include "mapfile.h".(Symbol_table::allocate_commons): Add mapfile parameter. Changeall callers.(Symbol_table::do_allocate_commons): Likewise.(Symbol_table::do_allocate_commons_list): Likewise. Report commonsymbol allocation to mapfile.* common.h (class Allocate_commons_task): Add mapfile_ field.Update constructor. Change all callers.* symtab.h (class Symbol_table): Update declarations.* layout.cc: Include "mapfile.h".(Layout_task_runner::run): Print information to mapfile.(Layout::create_gold_note): Change Output_data_fixed_space toOutput_data_zero_fill.(Layout::create_build_id): Likewise.(Layout::print_to_mapfile): New function.* layout.h (class Layout_task_runner): Add mapfile_ field. Updateconstructor. Change caller.(class Layout): Declare print_to_mapfile.* output.cc (Output_section::Input_section::print_to_mapfile): Newfunction.(Output_section::add_input_section): If producing a map, alwaysadd to input_sections_ list.(Output_section::do_print_to_mapfile): New function.(Output_segment::print_sections_to_mapfile): New function.(Output_segment::print_section_list_to_mapfile): New function.* output.h: Include "mapfile.h".(Output_data::print_to_mapfile): New function.(Output_data::do_print_to_mapfile): New virtual function.(Output_segment_headers::do_print_to_mapfile): New function.(Output_file_header::do_print_to_mapfile): New function.(Output_data_const::do_print_to_mapfile): New function.(class Output_data_const_buffer): Add map_name_ field. Updateconstructor. Change all callers. Add do_print_to_mapfilefunction.(class Output_data_fixed_space): Likewise.(class Output_data_space): Likewise.(class Output_data_zero_fill): New class.(Output_data_strtab::do_print_to_mapfile): New function.(Output_data_reloc_base::do_print_to_mapfile): New function.(Output_relocatable_relocs::do_print_to_mapfile): New function.(Output_data_group::do_print_to_mapfile): New function.(Output_data_got::do_print_to_mapfile): New function.(Output_data_dynamic::do_print_to_mapfile): New function.(Output_symtab_xindex::do_print_to_mapfile): New function.(class Output_section): Declare do_print_to_mapflie. Declareprint_to_mapfile in Input_section.(class Output_segment): Declare new functions.* object.h (Sized_relobj::symbol_count): New function.* script-sections.cc(Output_section_element_dot_assignment::set_section_addresses):Change Output_data_fixed_space to Output_data_zero_fill.(Output_data_expression::do_print_to_mapfile): New function.* script.cc (read_input_script): Add mapfile parameter. Changeall callers.* script.h (read_input_script): Update declaration.* ehframe.h (Eh_frame_hdr::do_print_to_mapfile): New function.(Eh_frame::do_print_to_mapfile): New function.* merge.h (Output_merge_data::do_print_to_mapfile): New function.(Output_merge_string::do_print_to_mapfile): New function.* i386.cc (Output_data_plt_i386::do_print_to_mapfile): Newfunction.* sparc.cc (Output_data_plt_sparc::do_print_to_mapfile): Newfunction.* x86_64.cc (Output_data_plt_x86_64::do_print_to_mapfile): Newfunction.* Makefile.am (CCFILES): Add mapfile.cc.(HFILES): Add mapfile.h.* Makefile.in: Rebuild.2008-05-19 Ian Lance Taylor <iant@google.com>* options.h (class General_options): Add -z relro.* layout.cc (Layout::Layout): Initialize relro_segment_.(Layout::add_output_section_data): Return the output section.(Layout::make_output_section): Rcognize relro sections and markthem appropriately.(Layout::attach_allocated_section_to_segment): Put relro sectionsin a PT_GNU_RELRO segment.(Layout::create_initial_dynamic_sections): Mark the .dynamicsection as relro.(Layout::segment_precedes): Sort PT_GNU_RELRO segments afterPT_TLS segments.(Layout::linkonce_mapping): Map d.rel.ro.local to.data.rel.ro.local.(Layout::output_section_name): Us .data.rel.ro.local for anysection which begins with that.* layout.h (class Layout): Update add_output_section_datadeclaration. Add relro_segment_ field.* output.cc (Output_section::Output_section): Initialize is_relro_and is_relro_local_ fields.(Output_segment::add_output_section): Group relro sections.(Output_segment::is_first_section_relro): New function.(Output_segment::maximum_alignment): If there is a relro section,align the segment to the common page size.(Output_segment::set_section_addresses): Track whether we arelooking at relro sections. If the last section is a relrosection, align to the common page size.(Output_segment::set_section_list_addresses): Add in_relroparameter. Change all callers. Align to the page size whenmoving from relro to non-relro section.(Output_segment::set_offset): Align memsz of a PT_GNU_RELROsegment.* output.h (class Output_section): Add is_relro_ andis_relro_local_ fields.(Output_section::is_relro): New function.(Output_section::set_is_relro): New function.(Output_section::is_relro_local): New function.(Output_section::set_is_relro_local): New function.(class Output_segment): Update declarations.* i386.cc (Target_i386::got_section): Mark .got section as relro.* sparc.cc (Target_sparc::got_section): Likewise.* x86_64.cc (Target_x86_64::got_section): Likewise.* testsuite/relro_test_main.cc: New file.* testsuite/relro_test.cc: New file.* testsuite/Makefile.am (check_PROGRAMS): Add relro_test.(relro_test_SOURCES, relro_test_DEPENDENCIES): New variables.(relro_test_LDFLAGS, relro_test_LDADD): New variables.(relro_test.so, relro_test_pic.o): New targets.* testsuite/Makefile.in: Rebuild.2008-05-16 Ian Lance Taylor <iant@google.com>* output.cc (Output_segment::add_output_section): Remove frontparameter.* output.h (class Output_segment): Removeadd_initial_output_section and overloaded add_output_section.Update declaration of remaining add_output_section.* layout.cc (Layout::create_interp): Call add_output_sectionrather than add_initial_output_section.(Layout::finish_dynamic_section): Likewise.* i386.cc (Target_i386::Relocate::relocate_tls): Set dynamic typefor TLS_GOTDESC and TLS_DESC_CALL. Only optimize TLS_LDO_32 if weknow the dynamic type.* x86_64.cc (Target_x86_64::Relocate): Add saw_tls_block_reloc_field. Initialize it in constructor.(Target_x86_64::Relocate::relocate_tls): Record that we saw a TLSblock reloc for TLSGD, GOTPC32_TLSDESC, TLSDESC_CALL, and TLSLD.Only optimize DTPOFF32 and DTPOFF64 if we have seen a TLS blockreloc.* output.cc (Output_reloc::get_address): Change return type toElf_Addr.* output.h (class Output_reloc): Update get_address declaration.* x86_64.cc (Output_data_plt_x86_64::do_write): Use 64-bit typesfor section addresses.2008-05-09 Ian Lance Taylor <iant@google.com>PR 6493* gold.cc (gold_nomem): Use return value of write.2008-05-08 Ian Lance Taylor <iant@google.com>* symtab.c (Symbol::init_base_output_data): Add versionparameter. Change all callers.(Symbol::init_base_output_segment): Likewise.(Symbol::init_base_constant): Likewise.(Symbol::init_base_undefined): Likewise.(Sized_symbol::init_output_data): Likewise.(Sized_symbol::init_output_segment): Likewise.(Sized_symbol::init_constant): Likewise.(Sized_symbol::init_undefined): Likewise.(Symbol_table::do_define_in_output_data): If the new symbol has aversion, mark it as the default.(Symbol_table::do_define_in_output_segment): Likewise.(Symbol_table::do_define_as_constant): Likewise.* symtab.h (class Symbol): Update declarations.(class Sized_symbol): Likewise.* resolve.cc (Symbol::override_version): New function.(Symbol::override_base): Call override_version.(Symbol::override_base_with_special): Likewise.* testsuite/ver_script_8.script: New file.* testsuite/Makefile.am (check_PROGRAMS): Add ver_test_8.(ver_test_8_SOURCES, ver_test_8_DEPENDENCIES): Define.(ver_test_8_LDFLAGS, ver_test_8_LDADD): Define.(ver_test_8_1.so, ver_test_8_2.so): New targets.2008-05-06 Ian Lance Taylor <iant@google.com>PR 6049* options.h (DEFINE_set): Add VARNAME_begin and VARNAME_endfunctions.(class General_options): Remove existing --undefined, and add--no-undefined instead. Add new --undefined as synonym for -u.* archive.cc (Archive::add_symbols): Check whether symbol wasnamed with -u.* gold.cc (queue_middle_tasks): Add -u symbols to symbol table.* symtab.h (class Symbol): Rename CONSTANT to IS_CONSTANT; changeall uses. Add IS_UNDEFINED. Update declarations to splitdifferent versions of init_base. Declare init_base_undefined.(Symbol::is_defined): Handle IS_UNDEFINED.(Symbol::is_undefined): Likewise.(Symbol::is_weak_undefined): Call is_undefined.(Symbol::is_absolute): Handle IS_CONSTANT.(class Sized_symbol): Update declarations to split differentversions of init. Declare init_undefined.(class Symbol_table): Declare new functions.* symtab.cc (Symbol::init_base_object): Rename from init_base.Change all callers.(Symbol::init_base_output_data): Likewise.(Symbol::init_base_output_segment): Likewise.(Symbol::init_base_constant): Likewise.(Symbol::init_base_undefined): New function.(Sized_symbol::init_object): Rename from init. Change allcallers.(Sized_symbol::init_output_data): Likewise.(Sized_symbol::init_output_segment): Likewise.(Sized_symbol::init_constant): Likewise.(Sized_symbol::init_undefined): New function.(Symbol_table::add_undefined_symbols_from_command_line): Newfunction.(Symbol_table::do_add_undefined_symbols_from_command_line): Newfunction.(Symbol::final_value_is_known): Handle IS_UNDEFINED.(Symbol::output_section): Likewise.(Symbol::set_output_section): Likewise.(Symbol_table::sized_finalize_symbol): Likewise.(Symbol_table::sized_write_globals): Likewise.* resolve.cc (Symbol_table::should_override): Likewise.(Symbol::override_base_with_special): Likewise.* symtab.cc (Symbol_table::add_from_dynobj): If we see a protectedsymbol, change it to have default visibility.* testsuite/protected_1.cc: New file.* testsuite/protected_2.cc: New file.* testsuite/protected_3.cc: New file.* testsuite/protected_main_1.cc: New file.* testsuite/protected_main_2.cc: New file.* testsuite/protected_main_3.cc: New file.* testsuite/Makefile.am (check_PROGRAMS): Add protected_1.(protected_1_SOURCES, protected_1_DEPENDENCIES): Define.(protected_1_LDFLAGS, protected_1_LDADD): Define.(protected_1.so): New target.(protected_1_pic.o, protected_2_pic.o): New targets.(protected_3_pic.o): New target.(check_PROGRAMS): Add protected_2.(protected_2_SOURCES, protected_2_DEPENDENCIES): Define.(protected_2_LDFLAGS, protected_2_LDADD): Define.* testsuite/Makefile.in: Rebuild.* options.h (DEFINE_var): Add set_user_set_##varname__.(DEFINE_bool_alias): New macro.(class General_options): Define -Bstatic using DEFINE_bool_aliasrather than DEFINE_special. Add --undefined as an alias for -zdefs.* options.cc (General_options::parse_Bstatic): Remove.* options.h (class General_options): Add --fatal-warnings.* main.cc (main): Implement --fatal-warnings.* errors.h (Errors::warning_count): New function.* options.h (class General_options): Add -Bsymbolic-functions.* symtab.h (Symbol::is_preemptible): Check for-Bsymbolic-functions.2008-05-05 Ian Lance Taylor <iant@google.com>* options.h (DEFINE_bool): For DASH_Z, create the negative optionas noVARNAME rather than no-VARNAME.(class General_options): Add option -z combreloc.* output.h (class Output_reloc) [SHT_REL]: Declare compare andget_address.(Output_reloc::sort_before) [SHT_REL]: New function.(Output_reloc::sort_before) [SHT_RELA]: New function.(class Output_data_reloc_base): Add sort_relocs_ field. DefineSort_relocs_comparison.(Output_data_reloc_base::Output_data_reloc_base): Add sort_relocsparameter. Change all callers.(Output_data_reloc::Output_data_reloc) [both versions]: Addsort_relocs parameter. Change all callers.* output.cc (Output_reloc::get_address): New function, broken outof write_rel.(Output_reloc::write_rel): Call it.(Output_reloc::compare): New function.(Output_data_reloc_base::do_write): Optionally sort relocs.* configure.ac: If targ_extra_obj is set, link it in.* configure.tgt: Initialize all variables.(x86_64*): Set targ_extra_obj and targ_extra_size.* configure: Rebuild.* object.cc (Sized_relobj::include_section_group): Adjust sectionindexes read from group data. Build vector to pass tolayout_group.* layout.cc (Layout::layout_group): Add flags and shndxesparameters. Remove contents parameter. Change caller. Updateexplicit instantiations.* layout.h (class Layout): Update layout_group declaration.* output.cc (Output_data_group::Output_data_group): Add flags andinput_shndxes parameters. Remove contents parameter. Changecaller.(Output_data_group::do_write): Change input_sections_ toinput_shndxes_.* output.h (class Output_data_group): Update constructordeclaration. Rename input_sections_ to input_shndxes_.* testsuite/many_sections_test.cc: Add template.2008-04-30 Cary Coutant <ccoutant@google.com>* target-reloc.h (relocate_section): Fix dead-pointer bug.* layout.cc (Layout::include_section): Refactored check for debuginfo section.(Layout::add_comdat): Add new parameters. Change typeof signature parameter. Add object and shndx to signatures table.(Layout::find_kept_object): New function.* layout.h: Include <cstring>.(Layout::is_debug_info_section): New function.(Layout::add_comdat): Add new parameters.(Layout::find_kept_object): New function.(Layout::Kept_section): New struct.(Layout::Signatures): Change type of map range.* object.cc (Relobj::output_section_address): New function.(Sized_relobj::include_section_group): Add new parameters. Changecalls to Layout::add_comdat. Change to build table of kept comdatgroups and table mapping discarded sections to kept sections.(Sized_relobj::include_linkonce_section): Likewise. Add new parameter.(Sized_relobj::do_layout): Change calls to include_section_group andinclude_linkonce_section.(Sized_relobj::do_finalize_local_symbols): Do not set local symbolvalue to zero when section is discarded.(Sized_relobj::map_to_kept_section): New function.* object.h (Relobj::output_section_address): New function.(Relobj::Comdat_group): New type.(Relobj::find_comdat_group): New function.(Relobj::Comdat_group_table): New type.(Relobj::Kept_comdat_section): New type.(Relobj::Kept_comdat_section_table): New type.(Relobj::add_comdat_group): New function.(Relobj::set_kept_comdat_section): New function.(Relobj::get_kept_comdat_section): New function.(Relobj::comdat_groups_): New field.(Relobj::kept_comdat_sections_): New field.(Symbol_value::input_value): Update comment.(Sized_relobj::map_to_kept_section) New function.(Sized_relobj::include_linkonce_section): Add new parameter.* target-reloc.h (Comdat_behavior): New type.(get_comdat_behavior): New function.(relocate_section): Add code to map a discarded section to thecorresponding kept section when applying a relocation.2008-04-30 Craig Silverstein <csilvers@google.com>* dwarf_reader.cc (next_generation_count): New static var.(Addr2line_cache_entry): New struct.(addr2line_cache): New static var.(Dwarf_line_info::one_addr2line): Added caching.(Dwarf_line_info::clear_addr2line_cache): New function.* dwarf_reader.h (Dwarf_line_info::one_addr2line): Addcache-size parameter.(Dwarf_line_info::one_addr2line_cache): New function.* symtab.cc (Symbol_table::detect_odr_violations): Passnew cache-size argument to one_addr2line(), and clear cache.2008-04-28 Cary Coutant <ccoutant@google.com>* i386.cc (Relocate::relocate): Fix typos for R_386_PC16 andR_386_PC8 relocations.2008-04-23 Ian Lance Taylor <iant@google.com>* object.cc (Sized_relobj::include_section_group): Check forinvalid section group.* object.cc (make_elf_object): Correct test for 64-bit ELF fileheader size.* readsyms.cc (Read_symbols::do_read_symbols): Use get_view ratherthan read for file header.* archive.cc (Archive::include_member): Likewise.2008-04-23 Paolo Bonzini <bonzini@gnu.org>* aclocal.m4: Regenerate.* configure: Regenerate.2008-04-19 Ian Lance Taylor <iant@google.com>* version.cc (version_string): Bump to 1.6.* testsuite/Makefile.am (many_sections_r_test): New target.(many_sections_r_test_SOURCES): Remove.(many_sections_r_test_DEPENDENCIES): Remove.(many_sections_r_test_LDFLAGS): Remove.(many_sections_r_test_LDADD): Remove.* object.cc (Sized_relobj::do_add_symbols): Always passlocal_symbol_count_ to add_from_relobj.* testsuite/Makefile.am (many_sections_check.h): Only check one inevery thousand variables.* testsuite/Makefile.in: Rebuild.* object.cc (Xindex::initialize_symtab_xindex): New function.(Xindex::read_symtab_xindex): New function.(Xindex::sym_xindex_to_shndx): New function.(Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section ifavailable.(Sized_relobj::do_initialize_xindex): New function.(Sized_relobj::do_read_symbols): Adjust section links.(Sized_relobj::symbol_section_and_value): Add is_ordinaryparameter. Change all callers.(Sized_relobj::include_section_group): Adjust section links andsymbol section indexes.(Sized_relobj::do_layout): Adjust section links.(Sized_relobj::do_count_local_symbols): Adjust section links andsymbol section indexes.(Sized_relobj::do_finalize_local_symbols): Distinguish betweenordinary and special symbols.(Sized_relobj::write_local_symbols): Add symtab_xindex anddynsym_xindex parameters. Change all callers. Adjust sectionlinks. Use SHN_XINDEX when needed.(Sized_relobj::get_symbol_location_info): Adjust section links.Don't get fooled by special symbols.* object.h (class Xindex): Define.(class Object): Add xindex_ parameter. Declare virtual functoindo_initialize_xindex.(Object::adjust_sym_shndx): New function.(Object::set_xindex): New protected function.(class Symbol_value): Add is_ordinary_shndx_ field.(Symbol_value::Symbol_value): Initialize is_ordinary_shndx_.(Symbol_value::value): Assert ordinary section.(Symbol_value::initialize_input_to_output_map): Likewise.(Symbol_value::set_input_shndx): Add is_ordinary parameter.Change all callers.(Symbol_value::input_shndx): Add is_ordinary parameter. Changeall callers.(class Sized_relobj): Update declarations.(Sized_relobj::local_symbol_input_shndx): Add is_ordinaryparameter. Change all callers.(Sized_relobj::adjust_shndx): New function.* dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize dynsym_shndx_field.(Sized_dynobj::find_dynsym_sections): Remove pdynsym_shndxparameter. Change all callers. Pick up SHT_DYNSYM_SHNDX sectionfor SHT_DYNSYM section if available. Set dynsym_shndx_ field.(Sized_dynobj::read_dynsym_section): Adjust section links.(Sized_dynobj::read_dynamic): Likewise.(Sized_dynobj::do_read_symbols): Use dynsym_shndx_ field. Adjustsection links.(Sized_dynobj::do_initialize_xindex): New function.* dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declaredo_initialize_xindex.(Sized_dynobj::adjust_shndx): New function.* layout.cc (Layout::Layout): Initialize symtab_xindex_ anddynsym_xindex_ fields.(Layout::finalize): Add a call to set_section_indexes beforecreating the symtab sections.(Layout::set_section_indexes): Don't do anything if the sectionalready has a section index.(Layout::create_symtab_sections): Add shnum parameter. Changecaller. Create .symtab_shndx section if needed.(Layout::create_shdrs): Add shstrtab_section parameter. Changecaller.(Layout::allocated_output_section_count): New function.(Layout::create_dynamic_symtab): Create .dynsym_shndx section ifneeded.* layout.h (class Layout): Add symtab_xindex_ and dynsym_xindex_fields. Update declarations.(Layout::symtab_xindex): New function.(Layout::dynsym_xindex): New function.(class Write_symbols_task): Add layout_ field.(Write_symbols_task::Write_symbols_task): Add layout parameter.Change caller.* output.cc (Output_section_headers::Output_section_headers): Addshstrtab_section parameter. Change all callers.(Output_section_headers::do_sized_write): Store overflow valuesfor section count and section string table section index insection header zero.(Output_file_header::do_sized_write): Check for overflow ofsection count and section string table section index.(Output_symtab_xindex::do_write): New function.(Output_symtab_xindex::endian_do_write): New function.* output.h (class Output_section_headers): Add shstrtab_section_.Update declarations.(class Output_symtab_xindex): Define.(Output_section::has_out_shndx): New function.* symtab.cc (Symbol::init_fields): Initialize is_ordinary_shndx_field.(Symbol::init_base): Add st_shndx and is_ordinary parameters.Change all callers.(Sized_symbol::init): Likewise.(Symbol::output_section): Check for ordinary symbol.(Symbol_table::add_from_object): Remove orig_sym parameter. Addst_shndx, is_ordinary, and orig_st_shndx parameters. Change allcallers.(Symbol_table::add_from_relobj): Add symndx_offset parameter.Change all callers. Simplify handling of symbols from sectionsnot included in the link.(Symbol_table::add_from_dynobj): Handle ordinary symboldistinction.(Weak_alias_sorter::operator()): Assert that symbols areordinary.(Symbol_table::sized_finalize_symbol): Handle ordinary symboldistinction.(Symbol_table::write_globals): Add symtab_xindex and dynsym_xindexparameters. Change all callers.(Symbol_table::sized_write_globals): Likewise. Handle ordinarysymbol distinction. Use SHN_XINDEX when needed.(Symbol_table::write_section_symbol): Add symtab_xindexparameter. Change all callers.(Symbol_table::sized_write_section_symbol): Likewise. UseSHN_XINDEX when needed.* symtab.h (class Symbol): Add is_ordinary_shndx_ field. Updatedeclarations.(Symbol::shndx): Add is_ordinary parameter. Change all callers.(Symbol::is_defined): Check is_ordinary.(Symbol::is_undefined, Symbol::is_weak_undefined): Likewise.(Symbol::is_absolute, Symbol::is_common): Likewise.(class Sized_symbol): Update declarations.(class Symbol_table): Update declarations.* resolve.cc (Symbol::override_base): Add st_shndx and is_ordinaryparameters. Change all callers.(Sized_symbol::override): Likewise.(Symbol_table::override): Likewise.(symbol_to_bits): Add is_ordinary parameter. Change all callers.(Symbol_table::resolve): Remove orig_sym parameter. Add st_shndx,is_ordinary, and orig_st_shndx parameters. Change all callers.* copy-relocs.cc (Copy_relocs::emit_copy_reloc): Require symbolto be in an ordinary section.* dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Addobject and is_ordinary parameters. Change all callers.(Sized_dwarf_line_info::read_relocs): Add object parameter.Change all callers. Don't add undefined or non-ordinary symbolsto reloc_map_.(Sized_dwarf_line_info::read_line_mappings): Add object parameter.Change all callers.* dwarf_reader.h (class Sized_dwarf_line_info): Updatedeclarations.* ehframe.cc (Eh_frame::read_fde): Check for ordinary symbol.* reloc.cc (Sized_relobj::do_read_relocs): Adjust section links.(Sized_relobj::relocate_sections): Likewise.* target-reloc.h (scan_relocs): Adjust section symbol index.(scan_relocatable_relocs): Likewise.* i386.cc (Scan::local): Check for ordinary symbols.* sparc.cc (Scan::local): Likewise.* x86_64.cc (Scan::local): Likewise.* testsuite/binary_unittest.cc (Sized_binary_test): Update callsto symbol_section_and_value.* testsuite/many_sections_test.cc: New file.* testsuite/Makefile.am (BUILT_SOURCES): Define.(check_PROGRAMS): Add many_sections_test.(many_sections_test_SOURCES): Define.(many_sections_test_DEPENDENCIES): Define.(many_sections_test_LDFLAGS): Define.(BUILT_SOURCES): Add many_sections_define.h.(many_sections_define.h): New target.(BUILT_SOURCES): Add many_sections_check.h.(many_sections_check.h): New target.(check_PROGRAMS): Add many_sections_r_test.(many_sections_r_test_SOURCES): Define.(many_sections_r_test_DEPENDENCIES): Define.(many_sections_r_test_LDFLAGS): Define.(many_sections_r_test_LDADD): Define.(many_sections_r_test.o): New target.* testsuite/Makefile.in: Rebuild.2008-04-17 Cary Coutant <ccoutant@google.com>* errors.cc (Errors::info): New function.(gold_info): New function.* errors.h (Errors::info): New function.* gold.h (gold_info): New function.* object.cc (Input_objects::add_object): Print trace output.* options.cc (options::parse_set): New function.(General_options::parse_wrap): Deleted.(General_options::General_options): Deleted initializer.* options.h (options::String_set): New typedef.(options::parse_set): New function.(DEFINE_set): New macro.(General_options::wrap): Changed to use DEFINE_set. Changedcallers of any_wrap_symbols and is_wrap_symbol.(General_options::trace, General_options::trace_symbol):New options.(General_options::any_wrap_symbols, General_options::is_wrap_symbol)(General_options::wrap_symbols_): Deleted.* symtab.cc (Symbol_table::add_from_object): Print trace output.2008-04-17 David S. Miller <davem@davemloft.net>* options.cc (General_options::parse_V): New function.* options.h: Add entries for -V and -Qy.2008-04-17 Ian Lance Taylor <iant@google.com>* common.cc (Symbol_table::allocate_commons): Remove optionsparameter. Change caller.(Symbol_table::do_allocate_commons): Remove options parameter.Change caller. Just call do_allocate_commons_list twice.(Symbol_table::do_allocate_commons_list): New function, broken outof do_allocate_commons.* common.h (class Allocate_commons_task): Remove options_ field.Update constructor.* symtab.cc (Symbol_table::Symbol_table): Initializetls_commons_.(Symbol_table::add_from_object): Put TLS common symbols ontls_commons_ list.(Symbol_table::sized_finalize_symbol): Handle STT_TLS symbolswhich are IN_OUTPUT_DATA.* symtab.h (class Symbol_table): Add tls_commons_ field. Updateallocate_commons and do_allocate_commons declarations. Declaredo_allocate_commons_list.* gold.cc (queue_middle_tasks): Update creation ofAllocate_commons_task to not pass options.* testsuite/Makefile.am (INCLUDES): Add -I.. .(TLS_TEST_C_FLAGS): New variable.(tls_test_c_pic.o): New target.(tls_test_shared.so): Link in tls_test_c_pic.o.(tls_test_c_pic_ie.o): New target.(tls_test_ie_shared.so): Link in tls_test_c_pic_ie.o.(tls_test_DEPENDENCIES, tls_test_LDADD): Add tls_test_c.o.(tls_test_c.o): New target.(tls_pic_test_DEPENDENCIES): Add tls_test_c_pic.o.(tls_pic_test_LDADD): Likewise.(tls_shared_gd_to_ie_test_DEPENDENCIES): Add tls_test_c_pic.o.(tls_shared_gd_to_ie_test_LDADD): Likewise.(tls_test_c_gnu2.o): New target.(tls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): Addtls_test_c_gnu2.o.(tls_shared_gnu2_gd_to_ie_test_LDADD): Likewise.(tls_test_gnu2_shared.so): Link in tls_test_c_gnu2.o.(tls_test_shared_nonpic.so): Link in tls_test_c.o.* testsuite/tls_test.cc: Include "config.h".(t_last): Call t11_last.* testsuite/tls_test.h (t11, t11_last): Declare.* testsuite/tls_test_c.c: New file.* testsuite/tls_test_main.cc (thread_routine): Call t11.* configure.ac: Check for OpenMP support.* configure, config.in, Makefile.in: Rebuild.* testsuite/Makefile.in: Rebuild.2008-04-16 Cary Coutant <ccoutant@google.com>* i386.cc (Target_i386::define_tls_base_symbol): New function.(Target_i386::tls_base_symbol_defined_): New field.(Target_i386::Scan::local): Define _TLS_MODULE_BASE_ symbol.(Target_i386::Scan::global): Likewise.* symtab.cc (sized_finalize_symbol): Add check for TLS symbol.* x86_64.cc (Target_x86_64::define_tls_base_symbol): New function.(Target_x86_64::tls_base_symbol_defined_): New field.(Target_x86_64::Scan::local): Define _TLS_MODULE_BASE_ symbol.(Target_x86_64::Scan::global): Likewise.2008-04-16 Cary Coutant <ccoutant@google.com>* symtab.h (Symbol::is_strong_undefined): Removed unused function.(Symbol::needs_plt_entry): Allow weak undefined symbols.(Symbol::needs_dynamic_reloc): Allow weak undefined symbols whenbuilding shared libraries.* testsuite/Makefile.am (weak_undef_nonpic_test): New target.(weak_undef_file1_nonpic.o, weak_undef_file2_nonpic.o)(weak_undef_lib_nonpic.so, alt/weak_undef_lib_nonpic.so): New targets.* testsuite/Makefile.in: Rebuild.* testsuite/weak_undef.h: New file.* testsuite/weak_undef_file1.cc: Add extra test cases.* testsuite/weak_undef_file2.cc: Likewise.* testsuite/weak_undef_test.cc: Likewise.2008-04-16 David S. Miller <davem@davemloft.net>* sparc.cc (Target_sparc::Scan): Change from struct to class.Add issued_non_pic_error_ field. Declare check_non_pic.(Target_sparc::Scan::check_non_pic): New function.(Target_sparc::Scan::local): Call check_non_pic as appropriate.(Target_sparc::Scan::global): Likewise.* configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.* configure: Rebuild.* options.h (DEFINE_enable): New macro.(new_dtags): New enable option.(initfirst, interpose, loadfltr, nodefaultlib,nodelete, nodlopen, nodump): New -z options.* layout.cc (Layout:finish_dynamic_section): If newdtags enabled, emit DT_RUNPATH. Also, emit aDT_FLAGS_1 containing any specified -z flags.2008-04-16 Ian Lance Taylor <iant@google.com>* copy-relocs.cc: New file.* copy-relocs.h: New file.* reloc.cc: Remove Copy_relocs code.* reloc.h: Likewise.* reloc-types.h (struct Reloc_types) [both versions]: Addget_reloc_addend_noerror.* output.h (class Output_data_reloc<elfcpp::SHT_REL>): Addvariants of add_global which take an addend which must be zero.* i386.cc: Include "copy-relocs.h".(class Target_i386): Change type of copy_relocs_ to variable,update initializer.(Target_i386::copy_reloc): Rewrite to pass to Copy_relocs class.Change all callers.(Target_i386::do_finalize_sections): Change handling ofcopy_relocs_.* sparc.cc: Include "copy-relocs.h".(class Target_sparc): Change type of copy_relocs_ to variable,update initializer.(Target_sparc::copy_reloc): Rewrite to pass to Copy_relocs class.Change all callers.(Target_sparc::do_finalize_sections): Change handling ofcopy_relocs_.* x86_64.cc: Include "copy-relocs.h".(class Target_x86_64): Change type of copy_relocs_ to variable,update initializer.(Target_x86_64::copy_reloc): Rewrite to pass to Copy_relocsclass. Change all callers.(Target_x86_64::do_finalize_sections): Change handling ofcopy_relocs_.* Makefile.am (CCFILES): Add copy-relocs.cc.(HFILES): Add copy-relocs.h.* Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.* testsuite/script_test_4.sh: Permit leading zeroes.2008-04-15 Ian Lance Taylor <iant@google.com>* script-sections.cc (Script_sections::create_segments): Useheader_size_adjustment even when there is enough room for theheaders.* testsuite/script_test_4.sh: New file.* testsuite/script_test_4.t: New file.* testsuite/Makefile.am (check_SCRIPTS): Add script_test_4.sh.(check_DATA): Add script_test_4.stdout.(MOSTLYCLEANFILES): Likewise.(script_test_4): New target.(script_test_4.stdout): New target.* testsuite/Makefile.in: Rebuild.* sparc.cc: Add definitions for Output_data_plt_sparc classconstants.2008-04-14 David S. Miller <davem@davemloft.net>* sparc.cc: New file.* Makefile.am (TARGETSOURCES): Add sparc.cc(ALL_TARGETOBJS): Add sparc.$(OBJEXT)* configure.tgt: Document targ_extra_size andtarg_extra_big_endian. Add entries for sparc-* andsparc64-*.* configure.ac: Handle targ_extra_size andtarg_extra_big_endian.* Makefile.in: Rebuild.* configure: Likewise.* po/POTFILES.in: Likewise.* po/gold.pot: Likewise.2008-04-14 Ian Lance Taylor <iant@google.com>* layout.cc (Layout::Layout): Initialize sections_are_attached_.(Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTRin the name/type/flags to section mapping. Don't callallocate_output_section.(Layout::choose_output_section): Change parameter from adjust_nameto is_input_section. Don't permit input sections after sectionsare attached to segments. Don't call allocate_output_section.(Layout::layout_eh_frame): Call update_flags_for_input_section,not write_enable_output_section.(Layout::make_output_section): Don't push tounattached_section_list_ nor call attach_to_segment. Callattach_section_to_segment if sections are attached.(Layout::attach_sections_to_segments): New function.(Layout::attach_section_to_segment): New function.(Layout::attach_allocated_section_to_segment): Rename fromattach_to_segment. Remove flags parameter.(Layout::allocate_output_section): Remove function.(Layout::write_enable_output_section): Remove function.* layout.h (class Layout): Update for above changes. Add newfield sections_are_attached_.* output.h (Output_section::update_flags_for_input_section): Newfunction.* output.cc (Output_section::add_input_section): Callupdate_flags_for_input_section.* gold.cc (queue_middle_tasks): Call attach_sections_to_segments.2008-04-11 Cary Coutant <ccoutant@google.com>* i386.cc (Target_i386::got_mod_index_entry): Restore code previouslythought unnecessary.* x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.2008-04-11 Ian Lance Taylor <iant@google.com>* output.h (class Output_section_data): Remove inline definitionof set_addralign.* output.cc (Output_section_data::set_addralign): New function.2008-04-11 Cary Coutant <ccoutant@google.com>Add support for TLS descriptors for i386 and x86_64.* i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function.(Target_i386::Relocate::tls_desc_gd_to_le): New function.(Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET andGOT_TYPE_TLS_DESC.(Target_i386::got_mod_index_entry): Remove unnecessary code.(Target_i386::Scan::local): Implement R_386_TLS_GOTDESC andR_386_TLS_DESC_CALL relocations. Fix problem with initial-execrelocations.(Target_i386::Scan::global): Fix problem with GD-to-IE relaxation.Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations;Fix problem with initial-exec relocations.(Target_i386::Relocate::relocate_tls): Likewise.(Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IErelaxation.* output.cc (Output_data_dynamic::Dynamic_entry::write): Addsupport for section-plus-offset dynamic table entries.* output.h (Output_data_dynamic::add_section_plus_offset): New function.(Output_data_dynamic::Dynamic_entry): Add support forsection-plus-offset dynamic table entries.(Output_data_dynamic::Classification): Likewise.(Output_data_dynamic::classification_): Renamed offset_.* x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function.(Target_x86_64::Relocate::tls_desc_gd_to_le): New function.(Target_x86_64::make_plt_section): New function.(Target_x86_64::reserve_tlsdesc_entries): New function.(Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter.(Output_data_plt_x86_64::reserve_tlsdesc_entry): New function.(Output_data_plt_x86_64::has_tlsdesc_entry): New function.(Output_data_plt_x86_64::get_tlsdesc_got_offset): New function.(Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function.(Output_data_plt_x86_64::tlsdesc_plt_entry): New field.(Output_data_plt_x86_64::set_final_data_size): Move out of line;add extra PLT entry for TLS descriptors.(Output_data_plt_x86_64::got_): New field.(Output_data_plt_x86_64::tlsdesc_got_offset_): New field.(Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize newfields.(Output_data_plt_x86_64::do_write): Write extra PLT entry for TLSdescriptors.(Target_x86_64::make_plt_entry): Factor out make_plt_section.(Target_x86_64::got_mod_index_entry): Remove unnecessary code.(Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC andR_386_TLS_DESC_CALL relocations.(Target_x86_64::Scan::global): Likewise.(Target_x86_64::do_finalize_sections): Add dynamic table entriesfor TLS descriptors.(Relocate::relocate_tls): Fix problem with GD-to-IE relaxation.Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations.(Target_x86_64::Relocate::tls_gd_to_ie): Fix problem withGD-to-IE relaxation.* configure.ac: Export new conditional variables TLS_GNU2_DIALECTand TLS_DESCRIPTORS.* Makefile.in: Rebuild.* configure: Rebuild.* testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target.(tls_test_shared2.so): New target.(tls_shared_gd_to_ie_test_SOURCES): New variable.(tls_shared_gd_to_ie_test_DEPENDENCIES): New variable.(tls_shared_gd_to_ie_test_LDFLAGS): New variable.(tls_shared_gd_to_ie_test_LDADD): New variable.(tls_shared_gnu2_gd_to_ie_test): New target.(tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so):New targets.(tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable.(ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable.(tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable.(tls_shared_gnu2_gd_to_ie_test_LDADD): New variable.(tls_shared_gnu2_test): New target.(tls_test_gnu2_shared.so): New target.(tls_shared_gnu2_test_SOURCES): New variable.(tls_shared_gnu2_test_DEPENDENCIES): New variable.(tls_shared_gnu2_test_LDFLAGS): New variable.(tls_shared_gnu2_test_LDADD): New variable.* testsuite/Makefile.in: Rebuild.* testsuite/Makefile.2008-04-11 Ian Lance Taylor <iant@google.com>* testsuite/Makefile.am (justsyms_2r.o): Add dependency onjustsyms.t.* testsuite/Makefile.in: Rebuild.* testsuite/script_test_2a.cc (script_test_string_a): Make 8 byteslong.* testsuite/script_test_2.cc (main): Adjust test.2008-04-11 David S. Miller <davem@davemloft.net>Ian Lance Taylor <iant@google.com>* options.h (General_options): Add entries for '-Y' and'-relax'.* options.cc (General_options:finalize): If -Y was used, add thoseentries to the library path instead of the default "/lib" and"/usr/lib".2008-04-11 David S. Miller <davem@davemloft.net>* testsuite/justsyms.t: Start at 0x100.* testsuite/justsyms_1.cc: Adjust justsyms_string assertion.* testsuite/script_test_2b.cc (script_test_string_b): Make 8 byteslong.* testsuite/script_test_2.cc: Adjust string and section lengthchecks.2008-04-09 Ian Lance Taylor <iant@google.com>PR gold/5996* script-sections.cc (Sections_element::allocate_to_segment): Addorphan parameter.(Output_section_definition::allocate_to_segment): Likewise.(Orphan_output_section::allocate_to_segment): Likewise.(Script_sections::attach_sections_using_phdrs_clause): Don'tpropagate non-PT_LOAD segments to orphan sections.* testsuite/Makefile.am (script_test_3.stdout): Generate usingreadelf rather than objdump.* testsuite/script_test_3.sh: Adjust accordingly. Test that.interp section and PT_INTERP segment are the same size.* testsuite/Makefile.in: Rebuild.* symtab.cc (Symbol_table::add_from_dynobj): Only look for weakaliases for symbols defined in the same object.* testsuite/Makefile.am (check_PROGRAMS): Add weak_alias_test.(weak_alias_test_SOURCES): New variable.(weak_alias_test_DEPENDENCIES): New variable.(weak_alias_test_LDFLAGS): New variable.(weak_alias_test_LDADD): New variable.(weak_alias_test_1_pic.o, weak_alias_test_1.so): New targets.(weak_alias_test_2_pic.o, weak_alias_test_2.so): New targets.(weak_alias_test_3.o): New target.(weak_alias_test_4_pic.o, weak_alias_test_4.so): New targets.* testsuite/weak_alias_test_main.cc: New file.* testsuite/weak_alias_test_1.cc: New file.* testsuite/weak_alias_test_2.cc: New file.* testsuite/weak_alias_test_3.cc: New file.2008-04-08 Ian Lance Taylor <iant@google.com>* options.h (class General_options): Add --noinhibit-exec option.* main.cc (main): Check --noinhibit-exec.* options.h (class General_options): Define --wrap as a specialoption. Add wrap_symbols_ field.(General_options::any_wrap_symbols): New function.(General_options::is_wrap_symbol): New function.* options.cc (General_options::parse_wrap): New function.(General_options::General_options): Initialize wrap_symbols_.* symtab.cc (Symbol_table::wrap_symbol): New function.(Symbol_table::add_from_object): Handle --wrap.* symtab.h (class Symbol_table): Declare wrap_symbol.* target.h (Target::wrap_char): New function.(Target::Target_info): Add wrap_char field.* i386.cc (Target_i386::i386_info): Initialize wrap_char.* x86_64.cc (Target_x86_64::x86_64_info): Likewise.* testsuite/testfile.cc (Target_test::test_target_info):Likewise.* errors.cc (Errors::undefined_symbol): Mention symbol version ifthere is one.* layout.h (class Layout): Add added_eh_frame_data_ field.* layout.cc (Layout::Layout): Initialize new field.(Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frameoutput section until we find a section we merged successfully.* object.cc (Sized_relobj::check_eh_frame_flags): Don't requirethat the size be non-zero.* merge.cc (Object_merge_map::get_output_offset): Remove inlinequalifier.2008-04-08 Craig Silverstein <csilvers@google.com>* configure.ac: Export new conditional variable HAVE_ZLIB.* testsuite/Makefile.am (flagstest_o_specialfile): Conditionon HAVE_ZLIB.(flagstest_o_specialfile_and_compress_debug_sections): Likewise.* configure, Makefile.in, testsuite/Makefile.in: Rebuild.2008-04-07 Ian Lance Taylor <iant@google.com>* version.cc (version_string): Set to "1.5".* x86_64.cc (Target_x86_64::Scan): Change from struct to class.Add issued_non_pic_error_ field. Declare check_non_pic.(Target_x86_64::Scan::check_non_pic): New function.(Target_x86_64::Scan::local): Call check_non_pic as appropriate.(Target_x86_64::Scan::global): Likewise.* output.cc (Output_reloc<SHT_REL>::local_section_offset): Addaddend parameter. Change caller. Handle merge sections.(Output_reloc<SHT_REL>::symbol_value): Change parameter type fromAddress to Addend. Don't add in the result oflocal_section_offset, pass down the addend and use the returnedvalue.* output.h (class Output_reloc<SHT_REL>): Add Addend typedef.Update declarations of local_section_offset and symbol_value.* testsuite/two_file_test_1.cc (t18): New function.* testsuite/two_file_test_2.cc (f18): New function.* testsuite/two_file_test_main.cc (main): Call t18.* testsuite/two_file_test.h (t18, f18): Declare.* configure.ac: Don't test for objdump, c++filt, or readelf.* testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILTconditionals.(TEST_READELF): New variable.(TEST_OBJDUMP, TEST_CXXFILT, TEST_STRIP): New variables.(check_PROGRAMS): Add two_file_strip_test.(two_file_strip_test): New target.(check_PROGRAMS): Add two_file_same_shared_strip_test.(two_file_same_shared_strip_test_SOURCES): New variable.(two_file_same_shared_strip_test_DEPENDENCIES): New variable.(two_file_same_shared_strip_test_LDFLAGS): New variable.(two_file_same_shared_strip_test_LDADD): New variable.(two_file_shared_strip.so): New target.(ver_test_2.syms, ver_test_4.syms): Use TEST_READELF.(ver_test_5.syms, ver_test_7.syms): Likewise.(ver_matching_test.stdout): Use TEST_OBJDUMP and TEST_CXXFILT.(strip_test_3.stdout): Use TEST_OBJDUMP.* configure, Makefile.in, testsuite/Makefile.in: Rebuild.2008-04-04 Cary Coutant <ccoutant@google.com>* symtab.h (Symbol::is_weak_undefined): New function.(Symbol::is_strong_undefined): New function.(Symbol::is_absolute): New function.(Symbol::needs_plt_entry): Exclude weak undefined symbols.(Symbol::needs_dynamic_reloc): Exclude weak undefined andabsolute symbols.* testsuite/Makefile.am (check_PROGRAMS): Add weak_undef_test.(weak_undef_test): New target.* testsuite/Makefile.in: Rebuild.* testsuite/weak_undef_file1.cc: New file.* testsuite/weak_undef_file2.cc: New file.* testsuite/weak_undef_test.cc: New file.2008-04-03 Craig Silverstein <csilvers@google.com>* compressed_output.h (class Output_compressed_section): Useunsigned buffer.* compressed_output.cc (zlib_compress): Use unsigned buffers,add zlib header.(zlib_compressed_suffix): Removed.(Output_compressed_section::set_final_data_size): Use unsignedbuffers.* testsuite/Makefile.am (flagstest_compress_debug_sections):Fix linker invocation.(flagstest_o_specialfile_and_compress_debug_sections):Likewise.* testsuite/Makefile.in: Regenerated.2008-04-02 David S. Miller <davem@davemloft.net>* dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.2008-04-02 Craig Silverstein <csilvers@google.com>* TODO: New file.2008-04-02 Ian Lance Taylor <iant@google.com>* fileread.cc (File_read::find_view): Add byteshift and vshiftedparameters. Update for new key type to views_. Change allcallers.(File_read::read): Adjust for byteshift in returned view.(File_read::add_view): New function, broken out offind_and_make_view.(File_read::make_view): New function, broken out offind_and_make_view.(File_read::find_or_make_view): Add offset and alignedparameters. Rewrite accordingly. Change all callers.(File_read::get_view): Add offset and aligned parameters. Adjustfor byteshift in return value.(File_read::get_lasting_view): Likewise.* fileread.h (class File_read): Update declarations.(class File_read::View): Add byteshift_ field. Add byteshift toconstructor. Add byteshift method.* archive.h (Archive::clear_uncached_views): New function.(Archive::get_view): Add aligned parameter. Change all callers.* object.h (Object::get_view): Add aligned parameter. Change allcallers.(Object::get_lasting_view): Likewise.* fileread.cc (File_read::release): Don't call clear_views ifthere are multiple objects.* fileread.h (File_read::clear_uncached_views): New function.* archive.cc (Add_archive_symbols::run): Call clear_uncached_viewson the archive.2008-03-31 Cary Coutant <ccoutant@google.com>Add thin archive support.* archive.cc (Archive::armagt): New const.(Archive::setup): Remove task parameter and calls to unlock.(Archive::unlock_nested_archives): New function.(Archive::read_header): Add nested_off parameter. Changeall callers.(Archive::interpret_header): Likewise.(Archive::include_all_members): Change to handle thinarchives.(Archive::include_member): Likewise.* archive.h (Archive::Archive): Add new parameters andinitializers.(Archive::armagt): New const.(Archive::setup): Remove task parameter.(Archive::unlock_nested_archives): New function.(Archive::read_header): Add nested_off parameter.(Archive::interpret_header): Likewise.(Archive::Nested_archive_table): New typedef.(Archive::is_thin_archive_): New field.(Archive::nested_archives_): New field.(Archive::options_): New field.(Archive::dirpath_): New field.(Archive::task_): New field.* readsyms.cc (Read_symbols::do_read_symbols): Add checkfor thin archives. Pass additional parameters toArchive::Archive. Unlock the archive file after callingArchive::setup.2008-03-29 Ian Lance Taylor <iant@google.com>* symtab.cc (Symbol_table::do_define_as_constant): Don't force aversion symbol to be local.* testsuite/ver_test_4.sh: New file.* testsuite/Makefile.am (check_SCRIPTS): Add ver_test_4.sh.(check_DATA): Add ver_test_4.syms.(ver_test_4.syms): New target.* testsuite/Makefile.in: Rebuild.* output.cc(Output_section::Input_section_sort_entry::has_priority): Newfunction.(Output_section::Input_section_sort_entry::match_file_name): Newfunction.(Output_section::Input_section_sort_entry::match_section_name):Remove.(Output_section::Input_section_sort_entry::match_section_name_prefix):Remove.(Output_section::Input_section_sort_entry::match_section_file):Remove.(Output_section::Input_section_sort_compare::operator()): Rewriteusing new Input_section_sort_entry functions. Sort crtbegin andcrtend first. Sort sections with no priority before sections witha priority.* testsuite/initpri1.c (d3): Check j != 4.(cd5): New constructor/destructor function.(main): Check j != 2.* symtab.cc (Symbol_table::add_from_object): If we don't use thenew symbol when resolving, don't call set_is_default.* testsuite/ver_test_7.cc: New file.* testsuite/ver_test_7.sh: New file.* testsuite/Makefile.am (ver_test_7.so): New target.(ver_test_7.o): New target.(check_SCRIPTS): Add ver_test_7.sh.(check_DATA): Add ver_test_7.syms.(ver_test_7.syms): New target.2008-03-28 Ian Lance Taylor <iant@google.com>* layout.cc (Layout::layout): If we see an input section with aname that needs sorting, set the must_sort flag for the outputsection.(Layout::make_output_section): If the name of the output sectionindicates that it might require sorting, set the may_sort flag.* output.h (Output_section::may_sort_attached_input_sections): Newfunction.(Output_section::set_may_sort_attached_input_sections): Newfunction.(Output_section::must_sort_attached_input_sections): Newfunction.(Output_section::set_must_sort_attached_input_sections): Newfunction.(class Output_section): Declare Input_section_sort_entry. DefineInput_section_sort_compare. Declaresort_attached_input_sections. Add new fields:may_sort_attached_input_sections_,must_sort_attached_input_sections_,attached_input_sections_are_sorted_.* output.cc (Output_section::Output_section): Initialize newfields.(Output_section::add_input_section): Add an entry toinput_sections_ if may_sort or must_sort are true.(Output_section::set_final_data_size): Callsort_attached_input_sections if necessary.(Output_section::Input_section_sort_entry): Define new class.(Output_section::Input_section_sort_compare::operator()): Newfunction.(Output_section::sort_attached_input_sections): New function.* configure.ac: Check whether the compiler supports constructorpriorities. Define a CONSTRUCTOR_PRIORITY automake conditional.* testsuite/initpri1.c: New file.* testsuite/Makefile.am (check_PROGRAMS): Add initpri1 ifCONSTRUCTOR_PRIORITY.(initpri1_SOURCES, initpri1_DEPENDENCIES): New variables.(initpri1_LDFLAGS): New variable.* configure, Makefile.in, testsuite/Makefile.in: Rebuild.2008-03-27 Ian Lance Taylor <iant@google.com>* common.cc (Sort_commons::operator): Correct sorting algorithm.* testsuite/common_test_1.c: New file.* testsuite/Makefile.am (check_PROGRAMS): Add common_test_1.(common_test_1_SOURCES): New variable.(common_test_1_DEPENDENCIES): New variable.(common_test_1_LDFLAGS): New variable.* symtab.cc (Symbol_table::add_from_object): Handle saw_undefined_and commons_ correctly when NAME/VERSION does not overrideNAME/NULL.* testsuite/ver_test_6.c: New file.* testsuite/Makefile.am (check_PROGRAMS): Add ver_test_6(ver_test_6_SOURCES, ver_test_6_DEPENDENCIES): New variables.(ver_test_6_LDFLAGS, ver_test_6_LDADD): New variables.2008-03-26 Ian Lance Taylor <iant@google.com>* symtab.cc (Symbol_table::add_from_relobj): Don't set the versionof an undefined symbol from a version script.* testsuite/Makefile.am (ver_test_5.so): New target.(ver_test_5.o): New target.(check_SCRIPTS): Add ver_test_5.sh.(check_DATA): Add ver_test_5.syms.(ver_test_5.syms): New target.* testsuite/ver_test_5.cc: New file.* testsuite/ver_test_5.script: New file.* testsuite/ver_test_5.sh: New file.* Makefile.in, testsuite/Makefile.in: Rebuild.PR gold/5986Fix problems building gold with gcc 4.3.0.* gold.h (TEMPLATE_ATTRIBUTE_PRINTF_4): Define.(gold_error_at_location, gold_warning_at_location): Use it.* configure.ac: Check whether we can compile and use a templatefunction with a printf attribute.* x86_64.cc (Target_x86_64::do_code_fill): Swap out a 32-bit valuewhen jumping over bytes.* object.cc: Instantiate Object::read_section_data.* debug.h: Include <cstring>* dwarf_reader.cc: Include <algorithm>* main.cc: Include <cstring>.* options.cc: Include <cstring>.* output.cc: Include <cstring>.* script.cc: Include <cstring>.* script.h: Include <string>.* symtab.cc: Include <cstring> and <algorithm>.* target-select.cc: Include <cstring>.* version.cc: Include <string>.* testsuite/testmain.cc: Include <cstdlib>.* configure, config.in: Rebuild.2008-03-25 Ian Lance Taylor <iant@google.com>* options.cc: Include "../bfd/bfdver.h".(options::help): Print bug reporting address.* version.cc (print_version): Adjust output for current value ofBFD_VERSION_STRING.* NEWS: New file.* options.cc (options::help): Print list of supported targets.* target-select.h: Include <vector>.(class Target_selector): Make machine_, size_, and is_big_endian_fields const. Add bfd_name_ and instantiated_target_ fields.(Target_selector::Target_selector): Add bfd_name parameter.(Target_selector::recognize): Make non-virtual, calldo_recognize.(Target_selector::recognize_by_name): Make non-virtual, calldo_recognize_by_name.(Target_selector::supported_names): New function.(Target_selector::bfd_name): New function.(Target_selector::do_instantiate_target): New pure virtualfunction.(Target_selector::do_recognize): New virtual function.(Target_selector::do_recognize_by_name): New virtual function.(Target_selector::instantiate_target): New private function.(supported_target_names): Declare.* target-select.cc (Target_selector::Target_selector): Update fornew parameter and fields.(select_target_by_name): Check that the name matches beforecalling recognize_by_name.(supported_target_names): New function.* i386.cc (class Target_selector_i386): Update Target_selectorconstructor call. Remove recognize and recognize_by_name. Adddo_instantiate_target.* x86_64.cc (class Target_selector_x86_64): Likewise.* testsuite/testfile.cc (class Target_selector_test): Update forchanges to Target_selector.* README: Rewrite, with some notes on unsupported features.2008-03-24 Cary Coutant <ccoutant@google.com>* i386.cc (Target_i386::Got_type): New enum declaration.(Target_i386::Scan::local): Updated callers of Output_data_gotmember functions.(Target_i386::Scan::global): Likewise.(Target_i386::Relocate::relocate): Likewise.(Target_i386::Relocate::relocate_tls): Likewise.* object.h (Got_offset_list): New class.(Sized_relobj::local_has_got_offset): Added got_type parameter.(Sized_relobj::local_got_offset): Likewise.(Sized_relobj::set_local_got_offset): Likewise.(Sized_relobj::local_has_tls_got_offset): Removed.(Sized_relobj::local_tls_got_offset): Removed.(Sized_relobj::set_local_tls_got_offset): Removed.(Sized_relobj::Local_got_offsets): Changed to store a list of offsets.* output.cc (Output_data_got::add_global): Added got_type parameter.(Output_data_got::add_global_with_rel): Likewise.(Output_data_got::add_global_with_rela): Likewise.(Output_data_got::add_global_pair_with_rel): New function.(Output_data_got::add_global_pair_with_rela): New function.(Output_data_got::add_local): Added got_type parameter.(Output_data_got::add_local_with_rel): Likewise.(Output_data_got::add_local_with_rela): Likewise.(Output_data_got::add_local_pair_with_rel): New function.(Output_data_got::add_local_pair_with_rela): New function.(Output_data_got::add_global_tls): Removed.(Output_data_got::add_global_tls_with_rel): Removed.(Output_data_got::add_global_tls_with_rela): Removed.(Output_data_got::add_local_tls): Removed.(Output_data_got::add_local_tls_with_rel): Removed.(Output_data_got::add_local_tls_with_rela): Removed.* output.h (Output_data_got::add_global): Added got_type parameter.(Output_data_got::add_global_with_rel): Likewise.(Output_data_got::add_global_with_rela): Likewise.(Output_data_got::add_global_pair_with_rel): New function.(Output_data_got::add_global_pair_with_rela): New function.(Output_data_got::add_local): Added got_type parameter.(Output_data_got::add_local_with_rel): Likewise.(Output_data_got::add_local_with_rela): Likewise.(Output_data_got::add_local_pair_with_rel): New function.(Output_data_got::add_local_pair_with_rela): New function.(Output_data_got::add_global_tls): Removed.(Output_data_got::add_global_tls_with_rel): Removed.(Output_data_got::add_global_tls_with_rela): Removed.(Output_data_got::add_local_tls): Removed.(Output_data_got::add_local_tls_with_rel): Removed.(Output_data_got::add_local_tls_with_rela): Removed.* resolve.cc (Symbol::override_base_with_special): Removedreference to has_got_offset_ field.* symtab.cc (Symbol::init_fields): Replaced initializationof got_offset_ with got_offsets_. Removed initializationof has_got_offset_* symtab.h (Symbol::has_got_offset): Aded got_type parameter.(Symbol::got_offset): Likewise.(Symbol::set_got_offset): Likewise.(Symbol::has_tls_got_offset): Removed.(Symbol::tls_got_offset): Removed.(Symbol::set_tls_got_offset): Removed.(Symbol::got_offset_): Removed.(Symbol::tls_mod_got_offset_): Removed.(Symbol::tls_pair_got_offset_): Removed.(Symbol::got_offsets_): New field.(Symbol::has_got_offset): Removed.(Symbol::has_tls_mod_got_offset): Removed.(Symbol::has_tls_pair_got_offset): Removed.* x86_64.cc (Target_x86_64::Got_type): New enum declaration.(Target_x86_64::Scan::local): Updated callers of Output_data_gotmember functions.(Target_x86_64::Scan::global): Likewise.(Target_x86_64::Relocate::relocate): Likewise.(Target_x86_64::Relocate::relocate_tls): Likewise.2008-03-25 Ben Elliston <bje@au.ibm.com>* yyscript.y: Fix spelling error in comment.2008-03-24 Ian Lance Taylor <iant@google.com>* options.h (class General_options): Define build_id option.* layout.h (class Layout): Declare write_build_id, create_note,create_build_id. Add build_id_note_ member.* layout.cc: Include <cerrno>, <fcntl.h>, <unistd.h>,"libiberty.h", "md5.h", "sha1.h".(Layout::Layout): Initialize eh_frame_data_,eh_frame_hdr_section_, and build_id_note_.(Layout::finalize): Call create_build_id.(Layout::create_note): New function, broken out ofLayout::create_gold_note.(Layout::create_gold_note): Call create_note.(Layout::create_build_id): New function.(Layout::write_build_id): New function.(Close_task_runner::run): Call write_build_id.* x86_64.cc: Correct license to GPLv3.2008-03-23 Ian Lance Taylor <iant@google.com>* options.cc: Include "demangle.h".(parse_optional_string): New function.(parse_long_option): Handle takes_optional_argument.(parse_short_option): Update dash_z initializer. Handletakes_optional_argument.(General_options::General_options): Initialize do_demangle_.(General_options::finalize): Set do_demangle_. Handle demanglingstyle.* options.h (parse_optional_string): Declare.(struct One_option): Add optional_arg field. Update constructor.Update call constructor calls. Add takes_optional_argumentfunction.(DEFINE_var): Add optional_arg__ parameter. Change all callers.(DEFINE_optional_string): Define.(General_options::demangle): Change from DEFINE_bool toDEFINE_optional_string.(General_options::no_demangle): New function.(General_options::do_demangle): New function.(General_options::set_do_demangle): New function.(General_options::execstack_status_): Move definition to end ofclass definition.(General_options::static_): Likewise.(General_options::do_demangle_): New field.* object.cc (big_endian>::get_symbol_location_info): CallOptions::do_demangle, not Options::demangle.* symtab.cc (demangle): Likewise.2008-03-22 Ian Lance Taylor <iant@google.com>* gold.h: Include <cstddef> and <sys/types.h>* options.h: Include <cstring>.2008-03-21 Ian Lance Taylor <iant@google.com>* Added source code to GNU binutils.