aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2010-04-152010-04-14 Doug Kwan <dougkwan@google.com>Doug Kwan3-1/+20
* arm.cc (Arm_output_section::fix_exidx_coverage): Mark object for local symbol recounting if we remove a section due to ICF. * gold.cc (queue_middle_gc_tasks): Create a dummy blocker if there are no regular objects in input.
2010-04-132010-04-13 Doug Kwan <dougkwan@google.com>Doug Kwan2-11/+12
* arm.cc (Arm_input_section::set_final_data_size): Compute accurate final data size instead of using current data size.
2010-04-09Add back missing change log.Doug Kwan1-0/+52
2010-04-09 Doug Kwan <dougkwan@google.com> * layout.cc (Layout::choose_output_section): Handle script section types. (Layout::make_output_section_for_script): Add section type parameter. Handle script section types. * layout.h (Layout::make_output_section_for_script): Add section type parameter. * output.cc (Output_section::Output_section): Initialize data member is_noload_. (Output_section::do_reset_address_and_file_offset): Do not set address to 0 if section is a NOLOAD section. * output.h (Output_section::is_noload): New method. (Output_section::set_is_noload): Ditto. (Output_section::is_noload_): New data member. * script-c.h (Script_section_type): New enum type. (struct Parser_output_section_header): Add new file section_type. * script-sections.cc (Sections_element::output_section_name): Add parameter for returning script section type. (Output_section_definition::output_section_name): Ditto. (Output_section_definition::section_type)P; New method. (Output_section_definiton::script_section_type_name): Ditto. (Output_section_definition::script_section_type_): New data member. (Output_section_definition::Output_section_definition): Initialize data member Output_section_definition::script_section_type_. (Output_section_definition::create_sections): Pass script section type to Layout::make_output_section_for_script. (Output_section_definition::output_section_name): Return script section type to caller. (Output_section_definition::set_section_address): Do not advance dot value and load address if section type is NOLOAD. Set address of NOLOAD sections regardless of section flags. (Output_section_definition::print): Print section type if it is not SCRIPT_SECTION_TYPE_NONE. (Output_section_definition::section_type): New method. (Output_section_definition::script_section_type_name): Ditto. (Script_sections::output_section_name): Add new parameter PSECTION_TYPE for returning script section type. Pass it to section elements. Handle discard sections. (Sort_output_sections::operator()): Handle NOLOAD sections. * script-sections.h (Script_sections::Section_type): New enum type. (Script_sections::output_section_name): Add a new parameter for returning script section type. * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT, INFO and NOLOAD. * yyscript.y (union): Add new field SECTION_TYPE. (COPY, DSECT, INFO, NOLOAD): New tokens. (opt_address_and_section_type): Change type to output_section_header. (section_type): New non-terminal (section_header): Handle section type. (opt_address_and_section_type): Return section type value.
2010-04-09Add prototype to gold tests.H.J. Lu3-1/+10
2010-04-09 H.J. Lu <hongjiu.lu@intel.com> * testsuite/plugin_common_test_1.c (foo): Add prototype. * testsuite/plugin_common_test_2.c (foo): Likewise.
2010-04-092010-04-09 Doug Kwan <dougkwan@google.com>Doug Kwan9-32/+260
* layout.cc (Layout::choose_output_section): Handle script section types. (Layout::make_output_section_for_script): Add section type parameter. Handle script section types. * layout.h (Layout::make_output_section_for_script): Add section type parameter. * output.cc (Output_section::Output_section): Initialize data member is_noload_. (Output_section::do_reset_address_and_file_offset): Do not set address to 0 if section is a NOLOAD section. * output.h (Output_section::is_noload): New method. (Output_section::set_is_noload): Ditto. (Output_section::is_noload_): New data member. * script-c.h (Script_section_type): New enum type. (struct Parser_output_section_header): Add new file section_type. * script-sections.cc (Sections_element::output_section_name): Add parameter for returning script section type. (Output_section_definition::output_section_name): Ditto. (Output_section_definition::section_type)P; New method. (Output_section_definiton::script_section_type_name): Ditto. (Output_section_definition::script_section_type_): New data member. (Output_section_definition::Output_section_definition): Initialize data member Output_section_definition::script_section_type_. (Output_section_definition::create_sections): Pass script section type to Layout::make_output_section_for_script. (Output_section_definition::output_section_name): Return script section type to caller. (Output_section_definition::set_section_address): Do not advance dot value and load address if section type is NOLOAD. Set address of NOLOAD sections regardless of section flags. (Output_section_definition::print): Print section type if it is not SCRIPT_SECTION_TYPE_NONE. (Output_section_definition::section_type): New method. (Output_section_definition::script_section_type_name): Ditto. (Script_sections::output_section_name): Add new parameter PSECTION_TYPE for returning script section type. Pass it to section elements. Handle discard sections. (Sort_output_sections::operator()): Handle NOLOAD sections. * script-sections.h (Script_sections::Section_type): New enum type. (Script_sections::output_section_name): Add a new parameter for returning script section type. * script.cc (script_keyword_parsecodes): Add keywords COPY, DSECT, INFO and NOLOAD. * yyscript.y (union): Add new field SECTION_TYPE. (COPY, DSECT, INFO, NOLOAD): New tokens. (opt_address_and_section_type): Change type to output_section_header. (section_type): New non-terminal (section_header): Handle section type. (opt_address_and_section_type): Return section type value.
2010-04-092010-04-08 Doug Kwan <dougkwan@google.com>Doug Kwan3-41/+50
* merge.cc (Output_merge_data::set_final_data_size): Handle empty Output_merge_data. * output.cc (Output_section::add_merge_input_section): Simplify code and return status of Output_merge_base::add_input_section. Update merge section map only if Output_merge_base::add_input_section returns true.
2010-04-082010-04-07 Doug Kwan <dougkwan@google.com>Doug Kwan2-4/+26
* arm.cc (Arm_relobj::scan_section_for_cortex_a8_erratum): Warn if section is marked as containing instructions but has no mapping symbols. (Arm_relobj::do_count_local_symbols): Call adjust_sym_shndx to get correct section index. (Arm_relobj::find_linked_text_section): Ditto.
2010-04-07 * archive.cc (include_member): Destroy Read_symbols_data object beforeCary Coutant5-4/+67
releasing file. * object.cc (Read_symbols_data::~Read_symbols_data) New destructor. * object.h (Read_symbols_data::Read_symbols_data) New constructor. (Read_symbols_data::~Read_symbols_data) New destructor. (Section_relocs::Section_relocs) New constructor. (Section_relocs::~Section_relocs) New destructor. (Read_relocs_data::Read_relocs_data) New constructor. (Read_relocs_data::~Read_relocs_data) New destructor. * testsuite/binary_unittest.cc (Sized_binary_test): Set sd member pointers to NULL after deleting.
2010-04-072010-04-07 Doug Kwan <dougkwan@google.com>Doug Kwan8-51/+233
* arm.cc: Replace "endianity" with "endianness" in comments. (Arm_exidx_cantunwind): Ditto. (Arm_relobj::Arm_relobj): Initialize merge_flags_and_attribures. (Arm_relobj::merge_flags_and_attributes): New method. (Arm_relobj::merge_flags_and_attributes_): New data member. (Arm_exidx_cantunwind::do_fixed_endian_write): Fix formatting. (Arm_relobj::scan_sections_for_stubs): Ditto. (Arm_relobj::do_read_symbols): Check to see if we really want to merge processor-specific flags and attributes. Exit early if an object is empty except for section names and the undefined symbol. (Target_arm::do_finalize_sections): Move check for ELF format to Arm_relobj::do_read_symbols. Merge processor specific flags and attributes from a regular object only when we have determined that it is aapropriate. Do not create an .ARM.attributes section in output if there is no regular input object. (Target_arm::merge_processor_specific_flags): Check --warn-mismatch before printing any error. (Target_arm::merge_object_attributes): Ditto. * gold.cc (queue_middle_tasks): Handle the case in which there is no regular object in input. * options.cc (General_options::parse_EB): New method. (General_options::parse_EL): Same. (General_options::General_options): Initialize endianness_. * options.h (-EB, -EL, -no-pipeline-knowledge, -p, --warn-mismatch): New options. (General_options::Endianness): New enum. (General_options::endianness): New method. (General_options::endianness_): New data member. * parameters.cc (Parameters::set_options): Check target endianness. (Parameters::set_target_once): Ditto. (Parameters::check_target_endianness): New method. (parameters_force_valid_target): If either -EL or -EB is specified, use it to define endianness of default target. * parameters.h (Parameters::check_target_endianness): New method declaration. * target.h (class Target): Change "endianity" to "endianness" in comments.
2010-04-07Use Automake option no-dist in gold.Ralf Wildenhues5-455/+51
gold/: * configure.ac (AM_INIT_AUTOMAKE): Add option no-dist. * configure: Regenerate. * Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate.
2010-04-06 gcc PR lto/42757Cary Coutant7-6/+211
* plugin.cc (Pluginobj::get_symbol_resolution_info): Check for prevailing definitions of common symbols. * testsuite/plugin_test_6.sh: New test case. * testsuite/plugin_common_test_1.c: New test case. * testsuite/plugin_common_test_2.c: New test case. * testsuite/Makefile.am (plugin_test_6): New test case. * testsuite/Makefile.in: Regenerate.
2010-04-06Updated binutils Vietnamese translation.Nick Clifton2-0/+1882
New gold Vietnamese translation. New gas Russian translation.
2010-03-312010-03-30 Doug Kwan <dougkwan@google.com>Doug Kwan2-0/+8
* arm.cc (Target_arm::using_thumb_only): Handle v6-M
2010-03-262010-03-25 Doug Kwan <dougkwan@google.com>Doug Kwan2-4/+10
* gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code to avoid a conversion warning on a 32-bit host.
2010-03-24 * testsuite/script_test_3.t: Add a TLS segment.Ian Lance Taylor4-9/+47
* testsuite/Makefile.am (check_PROGRAMS): Add tls_phdrs_script_test. (tls_phdrs_script_test_SOURCES): Define. (tls_phdrs_script_test_DEPENDENCIES): Define. (tls_phdrs_script_test_LDFLAGS): Define. (tls_phdrs_script_test_LDADD): Define. * testsuite/Makefile.in: Rebuild.
2010-03-24 * fileread.cc (find_or_make_view): Fix comment.Cary Coutant2-1/+5
2010-03-23 * script-sections.cc (class Orphan_section_placement): DefineIan Lance Taylor4-13/+69
PLACE_TLS and PLACE_TLS_BSS. (Orphan_section_placement::Orphan_section_placement): Initialize new places. (Orphan_section_placement::find_place): Handle SHF_TLS sections. * testsuite/Makefile.am (check_PROGRAMS): Add tls_script_test. (tls_script_test_SOURCES): Define. (tls_script_test_DEPENDENCIES): Define. (tls_script_test_LDFLAGS): Define. (tls_script_test_LDADD): Define. * testsuite/Makefile.in: Rebuild.
2010-03-222010-03-22 Doug Kwan <dougkwan@google.com>Doug Kwan7-28/+300
* arm.cc (Arm_relocate_functions::abs8, Arm_relocate_functions::abs16): Use correct check for overflow specified in the ARM ELF specs. (Arm_relocate_functions): thumb_branch_common. Handle bit 1 of branch target of a BLX instruction specially. (Reloc_stub::stub_type_for_reloc): Ditto. (Relocate::relocate): Use symbolic names instead of numeric relocation codes to report error. (Target_arm::do_relox): Reduce default stub-group size for Cortex-A8 workaround. * testsuite/Makefile.am (check_DATA): add thumb_blx_in_range.stdout, thumb_blx_out_of_range.stdout, thumb2_blx_in_range.stdout and thumb2_blx_out_of_range.stdout (thumb_bl_out_of_range, thumb_bl_out_of_range.o, thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): Fix dependenices. (thumb_blx_in_range.stdout, thumb_blx_in_range, thumb_blx_in_range.o, thumb_blx_out_of_range.stdout, thumb_blx_out_of_range, thumb_blx_out_of_range.o, thumb2_blx_in_range.stdout, thumb2_blx_in_range, thumb2_blx_in_range.o, thumb2_blx_out_of_range.stdout, thumb2_blx_out_of_range, thumb2_blx_out_of_range.o): New rules. (MOSTLYCLEANFILES): Add thumb_blx_in_range, thumb_blx_out_of_range, thumb2_blx_in_range and thumb2_blx_out_of_range. * testsuite/Makefile.in: Regenerate. * arm_branch_in_range.sh: Add tests for THUMB BLX. * testsuite/thumb_blx_in_range.s: New file. * testsuite/thumb_blx_out_of_range.s: New file.
2010-03-222010-03-22 Rafael Espindola <espindola@google.com>Rafael Ávila de Espíndola16-70/+748
* archive.cc (Should_include): Move to archive.h. (should_include_member): Make it a member of Archive. (Lib_group): New. (Add_lib_group_symbols): New. * archive.h: Include options.h. (Archive_member): Moved from Archive. (Should_include): Moved from archive.cc. (Lib_group): New. (Add_lib_group_symbols): New. * dynobj.cc (do_should_include_member): New. * dynobj.h (do_should_include_member): New. * gold.cc (queue_initial_tasks): Update call to queue. * main.cc (main): Print lib group stats. * object.cc (do_should_include_member): New. * object.h: Include archive.h. (Object::should_include_member): New. (Object::do_should_include_member): New. (Sized_relobj::do_should_include_member): New. * options.cc (General_options::parse_start_lib): New. (General_options::parse_end_lib): New. (Input_arguments::add_file): Handle lib groups. (Input_arguments::start_group): Check we are not in a lib. (Input_arguments::start_lib): New. (Input_arguments::end_lib): New. * options.h (General_options): Add start_lib and end_lib. (Input_argument::lib_): New. (Input_argument::lib): New. (Input_argument::is_lib): New. (Input_file_lib): New. (Input_arguments::in_lib_): New. (Input_arguments::in_lib): New. (Input_arguments::start_lib): New. (Input_arguments::end_lib_): New. * plugin.cc (Pluginobj::get_symbol_resolution_info): Mark symbols in unused members as preempted. (Sized_pluginobj::do_should_include_member): New. * plugin.h (Sized_pluginobj::do_should_include_member): New. * readsyms.cc (Read_symbols::locks): If we are just reading a member, return the blocker. (Read_symbols::do_whole_lib_group): New. (Read_symbols::do_lib_group): New. (Read_symbols::do_read_symbols): Handle lib groups. (Read_symbols::get_name): Handle lib groups. * readsyms.h (Read_symbols): Add an archive member pointer. (Read_symbols::do_whole_lib_group): New. (Read_symbols::do_lib_group): New. (Read_symbols::member_): New. * script.cc (read_input_script): Update call to queue_soon.
2010-03-192010-03-19 Doug Kwan <dougkwan@google.com>Doug Kwan4-33/+42
* arm.cc (Stub_table::Stub_table): Initialize new data members Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_. (Stub_table::add_reloc_stub): Assign stub offset and update Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_. (Stub_table::reloc_stubs_size_, Stub_table::reloc_stubs_addralign_): New data members. (Stub_table::update_data_size_and_addralign): Use Stub_table::reloc_stubs_size_ and Stub_table::reloc_stubs_addralign_ instead of going over all reloc stubs. (Stub_table::finalize_stubs): Do not assign reloc stub offsets. * stringpool.cc (Stringpool_template::Stringpool_template): Initialize Stringpool_template::offset_ to size of Stringpool_char. (Stringpool_template::new_key_offset): Remove code to initialize Stringpool_template::offset_. * stringpool.h (Stringpool_template::set_no_zero_null): Set Stringpool_template::offset_ to zero.
2010-03-162010-03-15 Doug Kwan <dougkwan@google.com>Doug Kwan3-33/+74
* stringpool.cc (Stringpool_template::Stringpool_template): Initialize offset_. (Stringpool_template::new_key_offset): New method. (Stringpool_template::add_string): Assign offsets when adding new strings. (Stringpool_template::set_string_offsets): Do not set string offsets when not optimizing. * stringpool.h (Chunked_vector::Chunked_vector): Initialize data member size_. (Chunked_vector::clear): Clear size_. (Chunked_vector::reserve): Call reserve method of all Element_vectors. (Chunked_vector::size): Return size_. (Chunked_vector::push_back): Use size_ to find insert position. (Chunked_vector::size_): New data member. (Stringpool_template::set_no_zero_null): Assert string set is empty. (Stringpool_template::new_key_offset): New method declaration. (Stringpool_template::offset_): New data member.
2010-03-152010-03-15 Rafael Espindola <espindola@google.com>Rafael Ávila de Espíndola3-5/+8
* readsyms.cc (Read_symbols::do_read_symbols): Update calls to Add_symbols' constructor. * readsyms.h (Add_symbols): Remove the input_group member.
2010-03-11Adjust last patch--same ChangeLog entry, same e-mail.Ian Lance Taylor2-5/+3
2010-03-11 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call theIan Lance Taylor5-7/+62
target to ask whether a reference to a symbol requires a stack split. * target.h (Target::is_call_to_non_split): New function. (Target::do_is_call_to_non_split): Declare virtual function. * target.cc: Include "symtab.h". (Target::do_is_call_to_non_split): New function. * i386.cc (Target_i386::do_is_call_to_non_split): New function.
2010-03-10 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.Cary Coutant6-35/+77
(File_read::open[1]): Remove initial mapping of whole_file_view_. (File_read::open[2]): Add whole_file_view_ to list of views. (File_read::make_view): Remove test of whole_file_view_. (File_read::find_or_make_view): Create whole_file_view_ if necessary. (File_read::clear_views): Replace bool parameter with enum; adjust all callers. Don't delete views with permanent data; do delete cached views and views from archives if --no-keep-files-mapped is set. Set whole_file_view_ to NULL if clearing the corresponding view. * fileread.h (File_read::Clear_views_mode): New enum. (File_read::View::is_permanent_view): New method. (File_read::clear_views): Replace bool parameter with enum; adjust all callers. * options.h (General_options): Change keep_files_mapped option; add map_whole_files. * readsyms.cc (Add_symbols::run): Delete sd_ object before releasing the file. * reloc.cc (Scan_relocs::run): Delete rd_ object before releasing the file.
2010-03-10 * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30.David S. Miller2-0/+5
2010-03-102010-03-09 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam2-0/+6
* icf.cc (get_section_contents): Add '@' marker after processing the merge reloc.
2010-03-092010-03-09 Rafael Espindola <espindola@google.com>Rafael Ávila de Espíndola1-51/+80
* archive.cc (should_include_member): New. (Archive::add_symbols): Use should_include_member.
2010-03-082010-03-08 Doug Kwan <dougkwan@google.com>Doug Kwan2-4/+12
* gold/arm.cc (Arm_exidx_fixup::update_offset_map): Fix build breakage due to a conversion warning. (Arm_relobj::update_output_local_symbol_count): Check for local symbol with unset output index.
2010-03-06 * options.h (class General_options): Add --spare-dynamic-tags.Ian Lance Taylor3-3/+17
* output.cc (Output_data_dynamic::set_final_data_size): Implement --spare-dynamic-tags.
2010-03-05 * incremental.cc: Include "libiberty.h".Ian Lance Taylor2-0/+5
2010-03-05 include:Rainer Orth3-6/+23
* elf/common.h (VER_FLG_*): Document. (VER_FLG_INFO): Define. gold: * dynobj.h (Verdef::Verdef): Add is_info arg, is_info member function, is_info_ member. * dynobj.cc (Verdef::write): Set VER_FLG_INFO if this->is_info_. (Versions::Versions): Update caller. (Versions::define_base_version): Likewise. (Versions::add_def): Likewise. elfcpp: * elfcpp.h (VER_FLG_INFO): Define. binutils: * readelf.c (get_ver_flags): Handle VER_FLG_INFO.
2010-03-04 * i386.cc (Target_i386::can_check_for_function_pointers): New function.Sriraman Tallam7-36/+148
(Scan::possible_function_pointer_reloc): New function. (Scan::local_reloc_may_be_function_pointer): Change to call possible_function_pointer_reloc. (Scan::global_reloc_may_be_function_pointer): Ditto. * icf.h (Icf::check_section_for_function_pointers): Change to reject relocations in ".data.rel.ro._ZTV" section. * testsuite/icf_safe_so_test.sh: Change to pass i386. * testsuite/icf_safe_so_test.cc: Ditto. * testsuite/icf_safe_test.cc: Ditto. * testsuite/icf_safe_test.sh: Ditto.
2010-03-03 * target-reloc.h (relocate_section): Check the symbol table indexIan Lance Taylor9-43/+245
for -1U before setting the local symbol index. (scan_relocatable_relocs): If copying the relocation, record that the local symbol is required. * object.h (Symbol_value::is_output_symtab_index_set): New function. (Symbol_value::may_be_discarded_from_output_symtab): New function. (Symbol_value::has_output_symtab_entry): New function. (Symbol_value::needs_output_symtab_entry): Remove. (Symbol_value::output_symtab_index): Make sure the symbol index is set. (Symbol_value::set_output_symtab_index): Make sure the symbol index is not set. Make sure the new index is valid. (Symbol_value::set_must_have_output_symtab_entry): New function. (Symbol_value::has_output_dynsym_entry): New function. (Symbol_value::set_output_dynsym_index): Make sure the new index is valid. (Sized_relobj::set_must_have_output_symtab_entry): New function. * object.cc (Sized_relobj::do_count_local_symbols): Only discard a local symbol if permitted. (Sized_relobj::do_finalize_local_symbols): Call is_output_symtab_index_set rather than needs_output_symtab_entry. (Sized_relobj::write_local_symbols): Call has_output_symtab_entry rather than needs_output_symtab_entry. Call has_output_dynsym_entry rather than needs_output_dynsym_entry. * arm.cc (Arm_relobj::update_output_local_symbol_count): Call is_output_symtab_index_set rather than needs_output_symtab_entry. * testsuite/discard_locals_relocatable_test.c: New file. * testsuite/discard_locals_test.sh: Test -r. * testsuite/Makefile.am (check_DATA): Add discard_locals_relocatable_test1.syms, discard_local_relocatable_test2.syms. (MOSTLYCLEANFILES): Likewise. Also add discard_locals_relocatable_test1.lout and discard_locals_relocatable_test2.out. (discard_locals_relocatable_test1.syms): New target. (discard_locals_relocatable_test.o): New target. (discard_locals_relocatable_test1.out): New target. (discard_locals_relocatable_test2.syms): New target. (discard_locals_relocatable_test2.out): New target. (various): Add missing ../ld-new dependencies. * testsuite/Makefile.in: Rebuild.
2010-03-03 * po/fi.po: New Finnish translation.Nick Clifton2-0/+1895
2010-03-012010-03-01 Doug Kwan <dougkwan@google.com>Doug Kwan4-9/+95
* layout.cc (Layout::Layout): Force section types of .init_array*, .preinit_array* and .fini_array* sections. * output.cc (Output_section::Input_section_sort_entry::has_priority): Fix check of return value of std::string::find.(). (Output_section::Input_section_sort_compare::operator()): Remove comment about .init_array. (Output_section::Input_section_sort_init_fini_compare::operator()): New method. (Output_section::sort_attached_input_sections): Handle .init_array and .fini_array specially. * output.h (Output_section::Inut_section_sort_compare): Update comment. (Output_section::Input_section_sort_init_fini_compare): New struct.
2010-02-272010-02-26 Doug Kwan <dougkwan@google.com>Doug Kwan3-2/+11
* arm.cc (Target_arm::Relocate::reloc_is_non_pic): Treat R_ARM_PREL31 and R_ARM_SBREL31 as position independent. * testsuite/debug_msg.sh: Avoid matching source line number for use of global variable undef_int.
2010-02-272010-02-26 Doug Kwan <dougkwan@google.com>Doug Kwan7-35/+178
* arm.cc (Target_arm::scan_reloc_for_stub): Move code handling R_ARM_V4BX to Target_arm::scan_reloc_section_for_stubs. (Target_arm::scan_reloc_section_for_stubs): Instead of calling scan_reloc_for_stub, do all processing of R_ARM_V4BX here. * options.cc (General_options::General_options): Initialize member fix_v4bx_. * testsuite/Makefile.am (check_SCRIPTS): Add arm_fix_v4bx.sh (check_DATA): Add arm_fix_v4bx.stdout, arm_fix_v4bx_interworking.stdout and rm_no_fix_v4bx.stdout (arm_fix_v4bx.stdout, arm_fix_v4bx, arm_fix_v4bx.o, arm_fix_v4bx_interworking.stdout, arm_fix_v4bx_interworking, arm_no_fix_v4bx.stdout, arm_no_fix_v4bx): New make rules. (MOSTLYCLEANFILES): Add arm_fix_v4bx, arm_fix_v4bx_interworking and arm_no_fix_v4bx. * Makefile.in: Regenerate. * testsuite/arm_fix_v4bx.s: New file. * testsuite/arm_fix_v4bx.sh: Ditto.
2010-02-252010-02-24 Doug Kwan <dougkwan@google.com>Doug Kwan3-6/+12
* arm.cc (Target_arm::got_section): Make the .got section the first non RELRO section in the data segment. * testsuite/script_test_5.sh: Fix match patterns to avoid matching suffixes of section names.
2010-02-242010-02-24 Doug Kwan <dougkwan@google.com>Doug Kwan4-2/+40
* arm.cc (Target_arm::do_finalize_sections): Skip processor specific flags and attributes merging if an input file is a binary file. * fileread.cc (Input_file::open): Record format of original file. * fileread.h (Input_file::Format): New enum type. (Input_file::Input_file): Initialize data member format_. (Input_file::format): New method definition. (Input_file::format_):: New data member.
2010-02-242010-02-24 Doug Kwan <dougkwan@google.com>Doug Kwan3-49/+447
* arm.cc (Arm_output_data_got): New class. (ARM_TCB_SIZE): New constant (Target_arm): Use Arm_output_data_got instead of Output_data_got. (Arm_output_section::fix_exidx_coverage): Add a parameter for layout. If user uses a script with a SECTIONS clause, issue only a warning for a misplaced EXIDX input section. Otherwise, issue an error. (Arm_relobj::do_gc_process_relocs): Exit early if we are not doing garbage collection. (Target_arm::got_mode_index_entry): Handle static linking. (Target_arm::Scan::local): Ditto. (Target_arm::Scan::global): Ditto. (Target_arm::Relocate::relocate_tls): Handle static linking. Fix all incorrectly implemented relocations. (Target_arm::fix_exidx_coverage): Pass layout to Arm_output_section::fix_exidx_coverage. * layout.cc (Layout::section_name_mapping): Remove trailing dots from ".ARM.exidx." and ".ARM.extab.".
2010-02-23 * arm.cc (Target_arm::do_finalize_sections): Create attributeIan Lance Taylor3-1/+13
section if it does not already exist. * attributes.cc (Attributes_section_data::Attributes_section_data): Don't crash if size is zero.
2010-02-23 * gold.cc (queue_middle_tasks): If no input files were opened,Ian Lance Taylor3-1/+18
exit. * workqueue.h (Task_function::Task_function): Assert that there is a blocker.
2010-02-222010-02-22 Doug Kwan <dougkwan@google.com>Doug Kwan3-2/+18
* gold-threads.h (Once::~Once): Explicitly define virtual destructor. * icf.cc (get_section_contents): Cast snprintf arguments to long long types to avoid warnings due to different uint64_t implementations on different hosts.
2010-02-222010-02-21 Doug Kwan <dougkwan@google.com>Doug Kwan12-17/+543
* arm.cc (Arm_relocate_functions::arm_branch_common): Fix bug in handling of the maximum backward branch offset. (Arm_relocate_functions::thumb_branch_common): Ditto. * testsuite/Makefile.am (check_SCRIPTS): Add arm_branch_in_range.sh. (check_DATA): Add arm_bl_in_range.stdout, arm_bl_out_of_range.stdout thumb_bl_in_range.stdout, thumb_bl_out_of_range.stdout, thumb2_bl_in_range.stdout and thumb2_bl_out_of_range.stdout. (arm_bl_in_range.stdout, arm_bl_in_range, arm_bl_in_range.o, arm_bl_out_of_range.stdout, arm_bl_out_of_range, arm_bl_out_of_range.o, thumb_bl_in_range.stdout, thumb_bl_in_range, thumb_bl_in_range.o, thumb_bl_out_of_range.stdout, thumb_bl_out_of_range thumb_bl_out_of_range.o, thumb2_bl_in_range.stdout, thumb2_bl_in_range, thumb2_bl_in_range.o thumb2_bl_out_of_range.stdout, thumb2_bl_out_of_range, thumb2_bl_out_of_range.o): New rules. (MOSTLYCLEANFILES): Add arm_bl_in_range, arm_bl_out_of_range, thumb_bl_in_range, thumb_bl_out_of_range, thumb2_bl_in_range and thumb2_bl_out_of_range * testsuite/Makefile.in: Regenerate. * testsuite/arm_bl_in_range.s: New file. * testsuite/arm_bl_out_of_range.s: Ditto. * testsuite/arm_branch_in_range.sh: Ditto. * testsuite/arm_branch_range.t: Ditto. * testsuite/thumb2_branch_range.t: Ditto. * testsuite/thumb_bl_in_range.s: Ditto. * testsuite/thumb_bl_out_of_range.s: Ditto. * testsuite/thumb_branch_range.t: Ditto.
2010-02-212010-02-20 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam4-55/+74
* gc.h (gc_process_relocs): Change vectors to point to the new list. Add reloc offset information. * icf.cc (get_section_contents): Change iterators to point to the new vectors. Add reloc offset information to the contents. * icf.h (Icf::Sections_reachable_info): New typedef. (Icf::Sections_reachable_list): New typedef. (Icf::Offset_info): New typedef. (Icf::Reloc_info): New struct typedef. (Icf::Reloc_info_list): New typedef. (Icf::symbol_reloc_list): Delete method. (Icf::addend_reloc_list): Delete method. (Icf::section_reloc_list): Delete method. (Icf::reloc_info_list): New method. (Icf::reloc_info_list_): New member.
2010-02-192010-02-18 Doug Kwan <dougkwan@google.com>Doug Kwan3-12/+448
* arm-reloc.def: Mark R_ARM_TLS_GD32, R_ARM_TLS_LDM32, R_ARM_TLS_LDO32, R_ARM_TLS_IE32 and R_ARM_TLS_LE32 are implemented. * arm.cc (Arm_relocation_functions): New forward declaration. (Target_arm::Target_arm): Initialize new data members got_mod_index_offset_ and tls_base_symbol_defined_. (Target_arm::Relocate::relocate_tls): New method. (Target_arm::optimize_tls_reloc, Target_arm::define_tls_base_symbol, Target_arm::got_mod_index_entry, Target_arm::rel_tls_desc_section): New methods. (Target_arm::Got_type): Add GOT_TYPE_TLS_NOFFSET, GOT_TYPE_OFFSET, GOT_TYPE_TLS_PAIR and GOT_TYPE_TLS_DESC. (Target_arm::got_mod_index_offset_, Target_arm::tls_base_symbol_defined_): New data members. (Target_arm::Scan::local, Target::Scan::global, Target_arm::Relocate::relocate): Handle 32-bit initial TLS relocations.
2010-02-192010-02-18 Doug Kwan <dougkwan@google.com>Doug Kwan2-43/+227
* arm.cc (Arm_relobj::find_linked_text_section): New method. (Arm_relobj::make_exidx_input_section): Pass section index of linked text section as a parameter becuase some broken tools may not set the link in section header. (Target_arm::has_got_section): New method. (Target_arm::scan_section_for_cortex_a8_stubs): Treat an input section without any mapping symbol as data only. Remove warning. (Arm_relobj::do_read_synbols): If an EXIDX input section has no link in its section header, try to discover the link by inspecting the REL31 relocation at the beginning of the section. (Target_arm::Scan::check_non_pic): Report name of offending relocation in error message. (Target_arm::Scan::global): Treat any reference to the symbol _GLOBAL_OFFSET_TABLE_ as a GOT access.
2010-02-132010-02-12 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam17-24/+556
* arm.cc (Scan::local_reloc_may_be_function_pointer): New function. (Scan::global_reloc_may_be_function_pointer): New function. * sparc.cc (Scan::local_reloc_may_be_function_pointer): New function. (Scan::global_reloc_may_be_function_pointer): New function. * powerpc.cc (Scan::local_reloc_may_be_function_pointer): New function. (Scan::global_reloc_may_be_function_pointer): New function. * i386.cc (Scan::local_reloc_may_be_function_pointer): New function. (Scan::global_reloc_may_be_function_pointer): New function. * x86_64.cc (Scan::local_reloc_may_be_function_pointer): New function. (Scan::global_reloc_may_be_function_pointer): New function. (Scan::possible_function_pointer_reloc): New function. (Target_x86_64::can_check_for_function_pointers): New function. * gc.h (gc_process_relocs): Scan relocation types to determine if function pointers were taken for targets that support it. * icf.cc (Icf::find_identical_sections): Include functions for folding in safe ICF whose pointer is not taken. * icf.h (Secn_fptr_taken_set): New typedef. (fptr_section_id_): New member. (section_has_function_pointers): New function. (set_section_has_function_pointers): New function. (check_section_for_function_pointers): New function. * options.h: Fix comment for safe ICF option. * target.h (can_check_for_function_pointers): New function. * testsuite/Makefile.am: Add icf_safe_so_test test case. Modify icf_safe_test for X86-64. * testsuite/Makefile.in: Regenerate. * testsuite/icf_safe_so_test.cc: New file. * testsuite/icf_safe_so_test.sh: New file. * testsuite/icf_safe_test.cc (kept_func_3): New function. (main): Change to take pointer to function kept_func_3. * testsuite/icf_safe_test.sh (arch_specific_safe_fold): Check if safe folding is done correctly for X86-64.
2010-02-13 * output.h (Output_reloc<SHT_REL>::Output_reloc): AddDavid S. Miller4-80/+258
is_symbolless parameter. (Output_reloc<SHT_REL>::is_symbolless): New. (Output_reloc<SHT_REL>::is_symbolless_): New. (Output_reloc<SHT_REL>::type_): Decrease to 29 bits. (Output_reloc<SHT_RELA>::Output_reloc): Add is_symbolless parameter. (Output_reloc<SHT_RELA>::is_symbolless): New. (Output_data_reloc::add_global): Handle is_symbolless. (Output_data_reloc::add_global_relative): Likewise. (Output_data_reloc::add_local): Likewise. (Output_data_reloc::add_local_relative): Likewise. (Output_data_reloc::add_symbolless_global_addend): New. (Output_data_reloc::add_symbolless_local_addend): New. * output.cc (Output_reloc<SHT_REL>::Output_reloc): Handle is_symbolless. (Output_reloc::set_needs_dynsym_index): Test ->is_symbolless_ instead of ->is_relative_ (Output_reloc::write): Likewise. (Output_reloc::get_symbol_index): Return 0 when ->is_symbolless_ (Output_reloc::write_rel): Simplify. * sparc.cc (Target_sparc::Scan::local): Use ->add_symbolless_local_addend as needed. (Target_sparc::Scan::global): Use ->add_symbolless_global_addend as needed. Also, emit appropriate unaligned vs. aligned dynamic reloc based upon relocation offset.