aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2008-05-01 * target-reloc.h (relocate_section): Fix dead-pointer bug.Cary Coutant2-3/+4
2008-05-01 * layout.cc (Layout::include_section): Refactored check for debugCary Coutant6-40/+397
info section. (Layout::add_comdat): Add new parameters. Change type of 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. Change calls to Layout::add_comdat. Change to build table of kept comdat groups 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 and include_linkonce_section. (Sized_relobj::do_finalize_local_symbols): Do not set local symbol value 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 the corresponding kept section when applying a relocation.
2008-05-01 * dwarf_reader.cc (next_generation_count): New static var.Craig Silverstein4-23/+134
(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): Add cache-size parameter. (Dwarf_line_info::one_addr2line_cache): New function. * symtab.cc (Symbol_table::detect_odr_violations): Pass new cache-size argument to one_addr2line(), and clear cache.
2008-04-28 * i386.cc (Relocate::relocate): Fix typos for R_386_PC16 andCary Coutant2-2/+7
R_386_PC8 relocations.
2008-04-23 * object.cc (Sized_relobj::include_section_group): Check forIan Lance Taylor2-0/+10
invalid section group.
2008-04-23 * object.cc (make_elf_object): Correct test for 64-bit ELF fileIan Lance Taylor2-1/+4
header size.
2008-04-23 * readsyms.cc (Read_symbols::do_read_symbols): Use get_view ratherIan Lance Taylor3-14/+16
than read for file header. * archive.cc (Archive::include_member): Likewise.
2008-04-23bfd/H.J. Lu3-6/+21
2008-04-23 Paolo Bonzini <bonzini@gnu.org> * aclocal.m4: Regenerate. * configure: Regenerate. binutils/ 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * aclocal.m4: Regenerate. * configure: Regenerate. gas/ 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * aclocal.m4: Regenerate. * configure: Regenerate. gold/ 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * aclocal.m4: Regenerate. * configure: Regenerate. gprof/ 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * aclocal.m4: Regenerate. * configure: Regenerate. ld/ 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * aclocal.m4: Regenerate. * configure: Regenerate. opcodes/ 2008-04-23 Paolo Bonzini <bonzini@gnu.org> * aclocal.m4: Regenerate. * configure: Regenerate.
2008-04-19 * version.cc (version_string): Bump to 1.6.Ian Lance Taylor2-1/+3
2008-04-19 * testsuite/Makefile.am (many_sections_r_test): New target.Ian Lance Taylor3-20/+29
(many_sections_r_test_SOURCES): Remove. (many_sections_r_test_DEPENDENCIES): Remove. (many_sections_r_test_LDFLAGS): Remove. (many_sections_r_test_LDADD): Remove.
2008-04-19 * object.cc (Sized_relobj::do_add_symbols): Always passIan Lance Taylor2-4/+4
local_symbol_count_ to add_from_relobj.
2008-04-19 * testsuite/Makefile.am (many_sections_check.h): Only check one inIan Lance Taylor3-2/+6
every thousand variables. * testsuite/Makefile.in: Rebuild.
2008-04-19 * object.cc (Xindex::initialize_symtab_xindex): New function.Ian Lance Taylor26-358/+1402
(Xindex::read_symtab_xindex): New function. (Xindex::sym_xindex_to_shndx): New function. (Sized_relobj::find_symtab): Pick up SHT_SYMTAB_SHNDX section if available. (Sized_relobj::do_initialize_xindex): New function. (Sized_relobj::do_read_symbols): Adjust section links. (Sized_relobj::symbol_section_and_value): Add is_ordinary parameter. Change all callers. (Sized_relobj::include_section_group): Adjust section links and symbol section indexes. (Sized_relobj::do_layout): Adjust section links. (Sized_relobj::do_count_local_symbols): Adjust section links and symbol section indexes. (Sized_relobj::do_finalize_local_symbols): Distinguish between ordinary and special symbols. (Sized_relobj::write_local_symbols): Add symtab_xindex and dynsym_xindex parameters. Change all callers. Adjust section links. 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 functoin do_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. Change all callers. (class Sized_relobj): Update declarations. (Sized_relobj::local_symbol_input_shndx): Add is_ordinary parameter. 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_shndx parameter. Change all callers. Pick up SHT_DYNSYM_SHNDX section for 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. Adjust section links. (Sized_dynobj::do_initialize_xindex): New function. * dynobj.h (class Sized_dynobj): Add dynsym_shndx_ field. Declare do_initialize_xindex. (Sized_dynobj::adjust_shndx): New function. * layout.cc (Layout::Layout): Initialize symtab_xindex_ and dynsym_xindex_ fields. (Layout::finalize): Add a call to set_section_indexes before creating the symtab sections. (Layout::set_section_indexes): Don't do anything if the section already has a section index. (Layout::create_symtab_sections): Add shnum parameter. Change caller. Create .symtab_shndx section if needed. (Layout::create_shdrs): Add shstrtab_section parameter. Change caller. (Layout::allocated_output_section_count): New function. (Layout::create_dynamic_symtab): Create .dynsym_shndx section if needed. * 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): Add shstrtab_section parameter. Change all callers. (Output_section_headers::do_sized_write): Store overflow values for section count and section string table section index in section header zero. (Output_file_header::do_sized_write): Check for overflow of section 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. Add st_shndx, is_ordinary, and orig_st_shndx parameters. Change all callers. (Symbol_table::add_from_relobj): Add symndx_offset parameter. Change all callers. Simplify handling of symbols from sections not included in the link. (Symbol_table::add_from_dynobj): Handle ordinary symbol distinction. (Weak_alias_sorter::operator()): Assert that symbols are ordinary. (Symbol_table::sized_finalize_symbol): Handle ordinary symbol distinction. (Symbol_table::write_globals): Add symtab_xindex and dynsym_xindex parameters. Change all callers. (Symbol_table::sized_write_globals): Likewise. Handle ordinary symbol distinction. Use SHN_XINDEX when needed. (Symbol_table::write_section_symbol): Add symtab_xindex parameter. Change all callers. (Symbol_table::sized_write_section_symbol): Likewise. Use SHN_XINDEX when needed. * symtab.h (class Symbol): Add is_ordinary_shndx_ field. Update declarations. (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_ordinary parameters. 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 symbol to be in an ordinary section. * dwarf_reader.cc (Sized_dwarf_line_info::symbol_section): Add object 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 symbols to reloc_map_. (Sized_dwarf_line_info::read_line_mappings): Add object parameter. Change all callers. * dwarf_reader.h (class Sized_dwarf_line_info): Update declarations. * 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 calls to 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 * errors.cc (Errors::info): New function.Cary Coutant8-28/+102
(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. Changed callers 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 * options.cc (General_options::parse_V): New function.David S. Miller3-0/+23
* options.h: Add entries for -V and -Qy.
2008-04-17 * common.cc (Symbol_table::allocate_commons): Remove optionsIan Lance Taylor16-72/+360
parameter. 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 out of do_allocate_commons. * common.h (class Allocate_commons_task): Remove options_ field. Update constructor. * symtab.cc (Symbol_table::Symbol_table): Initialize tls_commons_. (Symbol_table::add_from_object): Put TLS common symbols on tls_commons_ list. (Symbol_table::sized_finalize_symbol): Handle STT_TLS symbols which are IN_OUTPUT_DATA. * symtab.h (class Symbol_table): Add tls_commons_ field. Update allocate_commons and do_allocate_commons declarations. Declare do_allocate_commons_list. * gold.cc (queue_middle_tasks): Update creation of Allocate_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): Add tls_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-17 * sparc.cc (Target_sparc::Scan): Change from struct to class.David S. Miller2-1/+114
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.
2008-04-17 * configure.ac (FN_PTRS_IN_SO_WITHOUT_PIC): Add sparc64.David S. Miller3-0/+5
* configure: Rebuild.
2008-04-17 * i386.cc (Target_i386::define_tls_base_symbol): New function.Cary Coutant4-3/+75
(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-17 * symtab.h (Symbol::is_strong_undefined): Removed unused function.Cary Coutant8-51/+217
(Symbol::needs_plt_entry): Allow weak undefined symbols. (Symbol::needs_dynamic_reloc): Allow weak undefined symbols when building 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-16elfcpp/David S. Miller3-0/+81
* elfcpp.h (DF_1_NOW, DF_1_GLOBAL, DF_1_GROUP, DF_1_NODELETE, DF_1_LOADFLTR, DF_1_INITFIRST, DF_1_NOOPEN, DF_1_ORIGIN, DF_1_DIRECT, DF_1_TRANS, DF_1_INTERPOSE, DF_1_NODEFLIB, DF_1_NODUMP, DF_1_CONLFAT): New enum constants. gold/ * 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 new dtags enabled, emit DT_RUNPATH. Also, emit a DT_FLAGS_1 containing any specified -z flags.
2008-04-16 * copy-relocs.cc: New file.Ian Lance Taylor12-619/+515
* copy-relocs.h: New file. * reloc.cc: Remove Copy_relocs code. * reloc.h: Likewise. * reloc-types.h (struct Reloc_types) [both versions]: Add get_reloc_addend_noerror. * output.h (class Output_data_reloc<elfcpp::SHT_REL>): Add variants 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 of copy_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 of copy_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_relocs class. Change all callers. (Target_x86_64::do_finalize_sections): Change handling of copy_relocs_. * Makefile.am (CCFILES): Add copy-relocs.cc. (HFILES): Add copy-relocs.h.
2008-04-16 * Makefile.in, aclocal.m4, testsuite/Makefile.in: Rebuild.Ian Lance Taylor4-25/+16
2008-04-16 * testsuite/script_test_4.sh: Permit leading zeroes.Ian Lance Taylor2-1/+5
2008-04-15 * script-sections.cc (Script_sections::create_segments): UseIan Lance Taylor7-17/+137
header_size_adjustment even when there is enough room for the headers. * 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.
2008-04-15 * sparc.cc: Add definitions for Output_data_plt_sparc classIan Lance Taylor2-0/+24
constants.
2008-04-15toplevel/David S. Miller9-385/+3680
* configure.ac: Add sparc*-*-* to gold supported targets. * configure: Regenerate. gold/ * sparc.cc: New file. * Makefile.am (TARGETSOURCES): Add sparc.cc (ALL_TARGETOBJS): Add sparc.$(OBJEXT) * configure.tgt: Document targ_extra_size and targ_extra_big_endian. Add entries for sparc-* and sparc64-*. * configure.ac: Handle targ_extra_size and targ_extra_big_endian. * Makefile.in: Rebuild. * configure: Likewise. * po/POTFILES.in: Likewise. * po/gold.pot: Likewise.
2008-04-15 * layout.cc (Layout::Layout): Initialize sections_are_attached_.Ian Lance Taylor6-108/+114
(Layout::get_output_section): Ignore SHF_WRITE and SHF_EXECINSTR in the name/type/flags to section mapping. Don't call allocate_output_section. (Layout::choose_output_section): Change parameter from adjust_name to is_input_section. Don't permit input sections after sections are 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 to unattached_section_list_ nor call attach_to_segment. Call attach_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 from attach_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 new field sections_are_attached_. * output.h (Output_section::update_flags_for_input_section): New function. * output.cc (Output_section::add_input_section): Call update_flags_for_input_section. * gold.cc (queue_middle_tasks): Call attach_sections_to_segments.
2008-04-11 * i386.cc (Target_i386::got_mod_index_entry): Restore code previouslyCary Coutant3-0/+8
thought unnecessary. * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
2008-04-11 * output.h (class Output_section_data): Remove inline definitionIan Lance Taylor3-2/+19
of set_addralign. * output.cc (Output_section_data::set_addralign): New function.
2008-04-112008-04-11 Cary Coutant <ccoutant@google.com>Cary Coutant10-189/+976
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 and GOT_TYPE_TLS_DESC. (Target_i386::got_mod_index_entry): Remove unnecessary code. (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec relocations. (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-IE relaxation. * output.cc (Output_data_dynamic::Dynamic_entry::write): Add support 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 for section-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 new fields. (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS descriptors. (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 and R_386_TLS_DESC_CALL relocations. (Target_x86_64::Scan::global): Likewise. (Target_x86_64::do_finalize_sections): Add dynamic table entries for 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 with GD-to-IE relaxation. * configure.ac: Export new conditional variables TLS_GNU2_DIALECT and 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 * testsuite/Makefile.am (justsyms_2r.o): Add dependency onIan Lance Taylor6-10/+36
justsyms.t. * testsuite/Makefile.in: Rebuild. * testsuite/script_test_2a.cc (script_test_string_a): Make 8 bytes long. * testsuite/script_test_2.cc (main): Adjust test.
2008-04-11 * options.h (General_options): Add entries for '-Y' andIan Lance Taylor3-4/+43
'-relax'. * options.cc (General_options:finalize): If -Y was used, add those entries to the library path instead of the default "/lib" and "/usr/lib".
2008-04-11 * testsuite/justsyms.t: Start at 0x100.David S. Miller5-5/+12
* testsuite/justsyms_1.cc: Adjust justsyms_string assertion. * script_test_2b.cc (script_test_string_b): Make 8 bytes long. * script_test_2.cc: Adjust string and section length checks.
2008-04-10 PR gold/5996Ian Lance Taylor5-24/+87
* script-sections.cc (Sections_element::allocate_to_segment): Add orphan parameter. (Output_section_definition::allocate_to_segment): Likewise. (Orphan_output_section::allocate_to_segment): Likewise. (Script_sections::attach_sections_using_phdrs_clause): Don't propagate non-PT_LOAD segments to orphan sections. * testsuite/Makefile.am (script_test_3.stdout): Generate using readelf 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.
2008-04-10Fix typo in comment in last commit.Ian Lance Taylor1-1/+1
2008-04-09 * symtab.cc (Symbol_table::add_from_dynobj): Only look for weakIan Lance Taylor9-4/+340
aliases 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-09 * options.h (class General_options): Add --noinhibit-exec option.Ian Lance Taylor3-1/+10
* main.cc (main): Check --noinhibit-exec.
2008-04-09 * options.h (class General_options): Define --wrap as a specialIan Lance Taylor9-1/+127
option. 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.
2008-04-09 * errors.cc (Errors::undefined_symbol): Mention symbol version ifIan Lance Taylor2-3/+12
there is one.
2008-04-09 * layout.h (class Layout): Add added_eh_frame_data_ field.Ian Lance Taylor4-5/+25
* layout.cc (Layout::Layout): Initialize new field. (Layout::layout_eh_frame): Don't add eh_frame_data_ to .eh_frame output section until we find a section we merged successfully. * object.cc (Sized_relobj::check_eh_frame_flags): Don't require that the size be non-zero.
2008-04-08 * merge.cc (Object_merge_map::get_output_offset): Remove inlineIan Lance Taylor2-1/+6
qualifier.
2008-04-08 * configure.ac: Export new conditional variable HAVE_ZLIB.Ian Lance Taylor6-30/+73
* testsuite/Makefile.am (flagstest_o_specialfile): Condition on HAVE_ZLIB. (flagstest_o_specialfile_and_compress_debug_sections): Likewise. * configure, Makefile.in, testsuite/Makefile.in: Rebuild.
2008-04-08 * version.cc (version_string): Set to "1.5".Ian Lance Taylor2-1/+3
2008-04-08 * x86_64.cc (Target_x86_64::Scan): Change from struct to class.Ian Lance Taylor2-1/+67
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.
2008-04-07 * output.cc (Output_reloc<SHT_REL>::local_section_offset): AddIan Lance Taylor7-9/+76
addend parameter. Change caller. Handle merge sections. (Output_reloc<SHT_REL>::symbol_value): Change parameter type from Address to Addend. Don't add in the result of local_section_offset, pass down the addend and use the returned value. * 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.
2008-04-07 * configure.ac: Don't test for objdump, c++filt, or readelf.Ian Lance Taylor6-135/+143
* testsuite/Makefile.am: Remove READELF and OBJDUMP_AND_CPPFILT conditionals. (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-042008-04-04 Cary Coutant <ccoutant@google.com>Cary Coutant7-5/+227
* 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 and absolute 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 * compressed_output.h (class Output_compressed_section): UseIan Lance Taylor6-27/+43
unsigned buffer. * compressed_output.cc (zlib_compress): Use unsigned buffers, add zlib header. (zlib_compressed_suffix): Removed. (Output_compressed_section::set_final_data_size): Use unsigned buffers. * testsuite/Makefile.am (flagstest_compress_debug_sections): Fix linker invocation. (flagstest_o_specialfile_and_compress_debug_sections): Likewise. * testsuite/Makefile.in: Regenerated.
2008-04-03 * dwarf_reader.cc (Sized_dwarf_line_info::read_header_prolog,David S. Miller2-7/+12
Sized_dwarf_line_info::process_one_opcode): Use Swap_unaligned.