aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2008-09-29Added missing files to ChangeLog entry.Cary Coutant1-0/+6
2008-09-29 * archive.cc (Archive::get_file_and_offset): Use filename insteadCary Coutant9-4/+294
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.
2008-09-29 * mapfile.cc (Mapfile::print_input_section): Change -1U to -1ULL.Cary Coutant9-33/+75
* 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-19Add plugin functionality for link-time optimization (LTO).Cary Coutant28-81/+2676
include/: * plugin-api.h: New file. gold/: * 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 * target-reloc.h (relocate_section): Check whether a symbol isIan Lance Taylor9-8/+20
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.
2008-09-16 * fileread.cc (make_view): Add casts to avoid warning.Ian Lance Taylor2-1/+7
2008-09-16* i386.cc (Target_i386::define_tls_base_symbol): Update comments.Alexandre Oliva3-4/+9
* x86_64.cc (Target_x86_64::define_tls_base_symbol): Likewise.
2008-09-16* options.h (General_options::output_is_executable): New.Alexandre Oliva4-2/+32
(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-122008-09-11 Chris Demetriou <cgd@google.com>Chris Demetriou3-0/+14
* 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-102008-09-05 Cary Coutant <ccoutant@google.com>Cary Coutant2-0/+13
* fileread.cc (File_read::make_view): Add check for attempt to map beyond end of file.
2008-09-062008-09-05 Cary Coutant <ccoutant@google.com>Cary Coutant2-4/+9
* symtab.cc (Symbol_table::add_from_dynobj): Fix typos in explicit instantiations.
2008-08-282008-08-28 Kris Van Hees <kris.van.hees@oracle.com>Kris Van Hees3-0/+14
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-212008-08-20 Craig Silverstein <csilvers@google.com>Craig Silverstein2-2/+7
* fileread.cc (File_read::open): Do not lock the file unless it was successfully opened.
2008-08-152008-08-14 Cary Coutant <ccoutant@google.com>Cary Coutant5-3/+38
* x86_64.cc (Target_x86_64::Relocate::relocat_tls): Use addend for DTPOFF32, DTPOFF64, and TPOFF32 relocs. * testsuite/tls_test.cc (struct int128): 128-bit struct for testing TLS relocs with non-zero addend. (v12): New TLS variable. (t12): New test. (t_last): Add check for v12. * testsuite/tls_test.h (t12): New function. * testsuite/tls_test_main.cc (thread_routine): Call new test.
2008-08-13 * layout.cc (Layout::attach_allocated_section_to_segment): Don'tIan Lance Taylor14-25/+346
set tls_segment_ or relro_segment_. (Layout::make_output_segment): Set tls_segment_ and relro_segment_ when appropriate. * output.h (Output_section::clear_is_relro): New function. * output.cc (Output_segment::add_output_section): Handle SHF_TLS sections specially even when output_data_ is empty. (Output_segment::maximum_alignment): When first section is relro, only force alignment for PT_LOAD segments. * script.cc (script_data_segment_align): New function. (script_data_segment_relro_end): New function. * script-c.h (script_data_segment_align): Declare. (script_data_segment_relro_end): Declare. * script-sections.h (class Script_sections): Declare data_segment_align and data_segment_relro_end. Add fields segment_align_index_ and saw_relro_end_. * script-sections.cc (class Sections_element): Add set_is_relro virtual function. Add new bool* parameter to place_orphan_here. Add get_output_section virtual function. (class Output_section_definition): Add set_is_relro. Add new bool* parameter to place_orphan_here. Add get_output_section. Add is_relro_ field. (Output_section_definition::Output_section_definition): Initialize evaluated_address_, evaluated_load_address, evaluated_addralign_, and is_relro_ fields. (Output_section_definition::place_orphan_here): Add is_relro parameter. (Output_section_definition::set_section_addresses): Set relro for output section. (Output_section_definition::alternate_constraint): Likewise. (class Orphan_output_section): Add new bool* parameter to place_orphan_here. Add get_output_section. (Orphan_output_section::place_orphan_here): Add is_relro parameter. (Script_sections::Script_sections): Initialize data_segment_align_index_ and saw_relro_end_. (Script_sections::data_segment_align): New function. (Script_sections::data_segment_relro_end): New function. (Script_sections::place_orphan): Set or clear is_relro. (Script_sections::set_section_addresses): Force alignment of first TLS section. * yyscript.y (exp): Call script_data_segment_align and script_data_segment_relro_end. * testsuite/relro_script_test.t: New file. * testsuite/relro_test.cc (using_script): Declare. (t1, t2): Test using_script. * testsuite/Makefile.am (check_PROGRAMS): Add relro_script_test. (relro_script_test_SOURCES): Define. (relro_script_test_DEPENDENCIES): Define. (relro_script_test_LDFLAGS): Define. (relro_script_test_LDADD): Define. (relro_script_test.so): New target. * testsuite/Makefile.in: Rebuild.
2008-08-072008-08-06 Cary Coutant <ccoutant@google.com>Cary Coutant1-0/+41
* archive.cc (Archive::total_archives, Archive::total_members) (Archive::total_members_loaded): New variables. (Archive::setup): Add parameter. Add option to preread archive symbols. (Archive::read_armap): Add counter. (Archive::get_file_and_offset): New function. (Archive::get_elf_object_for_member): New function. (Archive::read_all_symbols): New function. (Archive::read_symbols): New function. (Archive::add_symbols): Add counters. (Archive::include_all_members): Use armap to find members if it's already built. (Archive::include_member): Skip reading symbols if already read. Factored code into Archive::get_file_and_offset and Archive::get_elf_object_for_member. Changed call to Mapfile::report_include_archive_member. (Archive::print_stats): New function. * archive.h: Declare Object and Read_symbols_data classes. (Archive::Archive): Add initializers for new members. (Archive::setup): Add parameter. (Archive::print_stats): New function. (Archive::total_archives, Archive::total_members) (Archive::total_members_loaded): New variables. (Archive::get_file_and_offset): New function. (Archive::get_elf_object_for_member): New function. (Archive::read_all_symbols): New function. (Archive::read_symbols): New function. (Archive::Archive_member): New class. (Archive::members_): New member. (Archive::num_members_): New member. * main.cc: Include archive.h. (main): Call Archive::print_stats. * mapfile.cc (Mapfile::report_include_archive_member): Delete archive parameter; member_name is now the fully-decorated name. * mapfile.h (Mapfile::report_include_archive_member): Likewise. * options.h: (General_options): Add --preread-archive-symbols option. * readsyms.cc (Read_symbols::do_read_symbols): Change call to Archive::setup.
2008-08-072008-08-06 Cary Coutant <ccoutant@google.com>Cary Coutant7-203/+385
* archive.cc (Archive::total_archives, Archive::total_members) (Archive::total_members_loaded): New variables. (Archive::setup): Add parameter. Add option to preread archive symbols. (Archive::read_armap): Add counter. (Archive::get_file_and_offset): New function. (Archive::get_elf_object_for_member): New function. (Archive::read_all_symbols): New function. (Archive::read_symbols): New function. (Archive::add_symbols): Add counters. (Archive::include_all_members): Use armap to find members if it's already built. (Archive::include_member): Skip reading symbols if already read. Factored code into Archive::get_file_and_offset and Archive::get_elf_object_for_member. Changed call to Mapfile::report_include_archive_member. (Archive::print_stats): New function. * archive.h: Declare Object and Read_symbols_data classes. (Archive::Archive): Add initializers for new members. (Archive::setup): Add parameter. (Archive::print_stats): New function. (Archive::total_archives, Archive::total_members) (Archive::total_members_loaded): New variables. (Archive::get_file_and_offset): New function. (Archive::get_elf_object_for_member): New function. (Archive::read_all_symbols): New function. (Archive::read_symbols): New function. (Archive::Archive_member): New class. (Archive::members_): New member. (Archive::num_members_): New member. * main.cc: Include archive.h. (main): Call Archive::print_stats. * mapfile.cc (Mapfile::report_include_archive_member): Delete archive parameter; member_name is now the fully-decorated name. * mapfile.h (Mapfile::report_include_archive_member): Likewise. * options.h: (General_options): Add --preread-archive-symbols option. * readsyms.cc (Read_symbols::do_read_symbols): Change call to Archive::setup.
2008-08-04 * symtab.h (Symbol::use_plt_offset): New function.Ian Lance Taylor11-67/+262
* i386.cc (Relocate::relocate): Call Symbol::use_plt_offset. * powerpc.cc (Relocate::relocate): Likewise. * sparc.cc (Relocate::relocate): Likewise. * x86_64.cc (Relocate::relocate): Likewise. * testsuite/weak_plt.sh: New test. * testsuite/weak_plt_main.cc: New test. * testsuite/weak_plt_shared.cc: New test. * testsuite/Makefile.am (check_SCRIPTS): Add weak_plt.sh. (check_PROGRAMS): Add weak_plt. (check_DATA): Add weak_plt_shared.so. (weak_plt_main_pic.o, weak_plt): New targets. (weak_plt_shared_pic.o, weak_plt_shared.so): New targets. * testsuite/Makefile.in: Rebuild. * testsuite/Makefile.am (weak_alias_test_1.so): Depend upon gcctestdir/ld. (weak_alias_test_2.so, weak_alias_test_4.so): Likewise. * testsuite/Makefile.in: Rebuild.
2008-08-04Set LC_ALL=C rather than unsetting LC_COLLATE for sort.Alan Modra4-2/+19
2008-07-29 * script.cc (Script_options::finalize_symbols): Finalize SECTIONSIan Lance Taylor4-2/+25
symbols before other symbols. * testsuite/script_test_2.cc (test_addr): Declare. (test_addr_alias): Declare. (main): Check that test_addr and test_addr_alias have the right values. * testsuite/script_test_2.t: Define test_addr_alias and test_addr.
2008-07-25 PR 5990Ian Lance Taylor13-45/+459
* descriptors.cc: New file. * descriptors.h: New file. * gold-threads.h (class Hold_optional_lock): New class. * fileread.cc: Include "descriptors.h". (File_read::~File_read): Release descriptor rather than closing it. (File_read::open) [file]: Call open_descriptor rather than open. Set is_descriptor_opened_. (File_read::open) [memory]: Assert that descriptor is not open. (File_read::reopen_descriptor): New function. (File_read::release): Release descriptor. (File_read::do_read): Make non-const. Reopen descriptor. (File_read::read): Make non-const. (File_read::make_view): Reopen descriptor. (File_read::do_readv): Likewise. * fileread.h (class File_read): Add is_descriptor_opened_ field. Update declarations. * layout.cc: Include "descriptors.h". (Layout::create_build_id): Use open_descriptor rather than open. * output.cc: Include "descriptors.h". (Output_file::open): Use open_descriptor rather than open. * archive.cc (Archive::const_iterator): Change Archive to be non-const. (Archive::begin, Archive::end): Make non-const. (Archive::count_members): Likewise. * archive.h (class Archive): Update declarations. * object.h (Object::read): Make non-const. * Makefile.am (CCFILES): Add descriptors.cc. (HFILES): Add descriptors.h. * Makefile.in: Rebuild.
2008-07-24 PR 6716Ian Lance Taylor2-0/+18
* gold.h: Always include <clocale>. Add Solaris workarounds following code in binutils/sysdep.h.
2008-07-24 PR 6048Ian Lance Taylor2-1/+6
* ehframe.cc (Eh_frame::add_ehframe_input_section): Check whether this->eh_frame_hdr_ is NULL before using it.
2008-07-24 * dynobj.cc (Versions::Versions): Update comment.Ian Lance Taylor2-4/+3
2008-07-24 * dynobj.cc (Versions::Versions): If there is an soname, use it asIan Lance Taylor2-2/+7
the base version name.
2008-07-24 * stringpool.cc (Stringpool_template::add_with_length): Set key toIan Lance Taylor3-7/+19
array size plus one. (Stringpool_template::set_string_offsets): Subtract one from key before using it as an array index. (Stringpool_template::get_offset_with_length): Likewise. (Stringpool_template::write_to_buffer): Likewise. * stringpool.h (Stringpool_template::get_offset_from_key): Likewise.
2008-07-24 PR 6658Ian Lance Taylor2-3/+30
* object.h (Merged_symbol_value::value): Do our best to handle a negative addend.
2008-07-23 PR 6647Ian Lance Taylor8-66/+182
* script.cc (Version_script_info::get_versions): Don't add empty version tag to return value. (Version_script_info::get_symbol_version_helper): Change return type to bool. Add pversion parameter. Change all callers. (script_register_vers_node): Don't require a non-NULL tag. * script.h (class Version_script_info): Update declarations. (Version_script_info::get_symbol_version): Change return type to bool. Add version parameter. Change all callers. * symtab.cc (Sized_symbol::add_from_relobj): Rework version handling. Handle an empty version from a version script. (Symbol_table::define_special_symbol): Likewise. * testsuite/ver_test_10.script: New file. * testsuite/ver_test_10.sh: New file. * testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh. (check_DATA): Add ver_test_10.syms. (ver_test_10.syms, ver_test_10.so): New target. * testsuite/Makefile.in: Rebuild.
2008-07-232008-07-23 Simon Baldwin <simonb@google.com>Chris Demetriou2-2/+10
* symtab.cc (Symbol_table::sized_write_symbol): Only set st_size to zero for undefined symbols from dynamic libraries.
2008-07-23 * symtab.cc (Symbol_table::resolve): Remove version parameter.Ian Lance Taylor7-12/+98
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 * options.h (class General_options): Define --check-sections.Ian Lance Taylor3-0/+30
* layout.cc (Layout::set_segment_offsets): Handle --check-sections.
2008-07-22 * options.h (class General_options): Define -n/--nmagic andIan Lance Taylor5-14/+48
-N/--omagic. * options.cc (General_options::finalize): For -n/--nmagic or -N/--omagic, set -static. * layout.cc (Layout::attach_allocated_section_to_segment): If -N/--omagic, don't put read-only and read-write sections in different segments. (Layout::find_first_load_seg): If -N/--omagic, don't insist on finding a read-only segment. (Layout::set_segment_offsets): If -N/--omagic or -n/--nmagic, don't set the minimum segment alignment to the common page size, and don't set the file offset to the address modulo the page size. * script-sections.cc (Script_sections::create_segments): If -n/--omagic, don't put read-only and read-write sections in different segments.
2008-07-22 * cref.cc: New file.Ian Lance Taylor15-69/+780
* cref.h: New file. * options.h (class General_options): Add --print-symbol-counts. * main.cc (main): Issue defined symbol report if requested. * archive.cc (Archive::interpret_header): Make into a const member function. (Archive::add_symbols): Call Input_objects::archive_start and archive_stop. (Archive::const_iterator): Define new class. (Archive::begin, Archive::end): New functions. (Archive::include_all_members): Rewrite to use iterator. (Archive::count_members): New function. * archive.h (class Archive): Update declarations. (Archive::filename): New function. * object.cc: Include "cref.h". (Sized_relobj::Sized_relobj): Initialize defined_count_. (Sized_relobj::do_get_global_symbol_counts): New function. (Input_objects::add_object): Add object to cross-referencer. (Input_objects::archive_start): New function. (Input_objects::archive_stop): New function. (Input_objects::print_symbol_counts): New function. * object.h: Declare Cref and Archive. (Object::get_global_symbol_counts): New function. (Object::do_get_global_symbol_counts): New pure virtual function. (class Sized_relobj): Add defined_count_ field. Update declarations. (class Input_objects): Add cref_ field. Update constructor. Update declarations. * dynobj.cc (Sized_dynobj::Sized_dynobj): Initialize symbols_ and defined_count_. (Sized_dynobj::do_add_symbols): Allocate symbols_ if printing symbol counts. (Sized_dynobj::do_get_global_symbol_counts): New function. * dynobj.h (class Sized_dynobj): Add fields symbols_ and defined_count_. Update declarations. Define Symbols typedef. * symtab.cc (Symbol_table::add_from_relobj): Add defined parameter. Change all callers. (Symbol_table::add_from_dynobj): Add sympointers and defined parameters. Change all callers. * symtab.h (class Symbol_table): Update declarations. * Makefile.am (CCFILES): Add cref.cc. (HFILES): Add cref.h. * Makefile.in: Rebuild.
2008-07-222008-07-22 Simon Baldwin <simonb@google.com>Chris Demetriou2-1/+7
* symtab.cc (Symbol_table::sized_write_symbol): Set symbol size to zero when writing undefined symbols.
2008-07-22 * output.cc (Output_section::add_input_section): Don't try toIan Lance Taylor2-2/+9
merge empty merge sections.
2008-07-212008-07-21 Craig Silverstein <csilvers@google.com>Craig Silverstein2-3/+16
* symtab.cc (Symbol_table::warn_about_undefined_dynobj_symbol): Include symbol version in error message.
2008-07-212008-07-20 Chris Demetriou <cgd@google.com>Chris Demetriou6-81/+149
* 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 * symtab.cc (Symbol_table::add_from_object): Rewrite the caseIan Lance Taylor8-16/+108
where 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-18 * dynobj.cc (Versions::add_def): If we give an error about aIan Lance Taylor2-5/+7
missing version, go ahead and create the version anyhow.
2008-07-10 Handle output sections with more than 0x7fffffff bytes.Ian Lance Taylor17-285/+377
* object.h (class Relobj): Change map_to_output_ to output_sections_, and just keep a section pointer. Change all uses. Move comdat group support to Sized_relobj. (Relobj::is_section_specially_mapped): Remove. (Relobj::output_section): Remove poff parameter. Change all callers. (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 comdat group 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 to Sized_relobj. (Sized_relobj::include_linkonce_section): Likewise. (Sized_relobj::do_layout): Use separate arrays for output section and output offset. (Sized_relobj::do_count_local_symbols): Change map_to_output to output_sections. (Sized_relobj::do_finalize_local_symbols): Change map_to_output to output_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 to output_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. Change u2_.relobj to Sized_relobj*. (class Output_data_reloc): Change add functions to use Sized_relobj*. * output.cc (Output_reloc::Output_reloc): Change relobj to Sized_relobj*. (Output_reloc::local_section_offset): Change return type to Elf_Addr. Use get_output_section_offset. (Output_reloc::get_address): Likewise. (Output_section::is_input_address_mapped): Don't call is_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 object parameter 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 use Sized_relobj*. Change relobj_ field to Sized_relobj*. * target-reloc.h (relocate_for_relocatable): Change offset_in_output_section type to Elf_Addr. Change code that uses it as well. * layout.cc (Layout::layout): Always set *off. * mapfile.cc (Mapfile::print_input_section): Use output_section_offset. * i386.cc (Target_i386::copy_reloc): Change object parameter to Sized_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-04 * layout.cc (Layout::include_section): Do not discard unrecognizedIan Lance Taylor2-1/+13
SHT_STRTAB sections.
2008-06-302008-06-30 Craig Silverstein <csilvers@cs.stanford.edu>Craig Silverstein3-3/+9
* script.cc (Lex::can_continue_name): Make '?' allowable in version-script names. * testsuite/version_script.map: Change glob pattern to use '?'
2008-06-30 PR 6585Ian Lance Taylor2-1/+7
* symtab.cc (Symbol_table::add_undefined_symbols_from_command_line): Correct typo.
2008-06-30 PR 6660Ian Lance Taylor2-14/+10
PR 6682 * powerpc.cc (Powerpc_relocate_functions::addr16_ha) [both versions]: Don't try to read the value in the contents, since we don't use it. Use the template endianness when writing.
2008-06-252008-06-25 Cary Coutant <ccoutant@google.com>Cary Coutant3-0/+14
* fileread.cc (File_read::make_view): Assert on zero-length view. * object.cc (Sized_relobj::do_read_symbols): Don't try to read symbol table when there are no symbols to read.
2008-06-24 * version.cc (version_string): Bump to 1.7Craig Silverstein2-1/+5
2008-06-182008-06-18 Craig Silverstein <csilvers@google.com>Craig Silverstein2-6/+12
* powerpc.cc (Powerpc_relocate_functions::addr16_ha): cast constant 0xFFFF to type Valtype. (Powerpc_relocate_functions::rel16_ha): Likewise.
2008-06-18 * output.h (Output_section::Input_section): Initialize p2align_ toIan Lance Taylor7-6/+146
zero for Output_section_data constructors. (Output_section::Input_section::addralign): If not an input section, 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.
2008-06-18 * script-sections.cc (Script_sections::place_orphan): InitializeIan Lance Taylor2-2/+7
local variable exact.
2008-06-13 * powerpc.cc (Output_data_plt_powerpc::do_write): 8 + 4 = 0xC.David Edelsohn2-1/+5