Commit graph

955 commits

Author SHA1 Message Date
Doug Kwan
0439c7962a 2010-05-23 Doug Kwan <dougkwan@google.com>
* arm.cc (Arm_input_section::do_output_offset): Use convert_types
	instead of a cast.
	(Target_arm::apply_cortex_a8_workaround): Rewrite a conditional branch
	with a direct branch, not a conditional branch, to a stub.
	* merge.cc (Output_merge_base::record_input_section): New method
	defintion.
	(Output_merge_data::do_add_input_section): Record input section if
	keeps-input-sections flag is set.
	(Output_merge_string::do_add_input_section): Ditto.
	* merge.h (Output_merge_base::Output_merge_base): Initialize new data
	members KEEPS_INPUT_SECTIONS_, FIRST_RELOBJ_, FIRST_SHNDX_ and
	INPUT_SECTIONS_.
	(Output_merge_base::keeps_input_sections,
	Output_merge_base::set_keeps_input_sections,
	Output_merge_base::first_relobj, Output_merge_base::first_shndx): New
	method definitions.
	(Output_merge_base::Input_sections): New type declaration.
	(Output_merge_base::input_sections_begin,
	Output_merge_base::input_sections_end,
	Output_merge_base::do_set_keeps_input_sections): New method definitions.
	(Output_merge_base::bool keeps_input_sections_,
	Output_merge_base::first_relobj_, Output_merge_base::first_shndx_,
	Output_merge_base::input_sections_): New data members.
	(Output_merge_data::do_set_keeps_input_sections): New method
	defintion.
	(Output_merge_string::do_set_keeps_input_sections): Ditto.
	* output.cc (Output_section::Input_section::relobj): Move method
	defintion from class declaration to here and handle merge sections.
	(Output_section::Input_section::shndx): Ditto.
	(Output_section::Output_section): Remove initializations of removed
	data members and initialize new data member LOOKUP_MAPS_.
	(Output_section::add_input_section): Set keeps-input-sections flag
	for a newly created merge output section as appropriate.  Adjust code
	to use Output_section_lookup_maps class.
	(Output_section::add_relaxed_input_section): Adjst code for lookup
	maps code refactoring.
 	(Output_section::add_merge_input_section): Add a new parameter
	KEEPS_INPUT_SECTION.  Adjust code to use Output_section_lookup_maps
	class.  If adding input section to a newly created merge output
	section fails, remove the new merge section.
	(Output_section::convert_input_sections_in_list_to_relaxed_input_sections):
	Adjust code for use of the Output_section_lookup_maps class.
 	(Output_section::find_merge_section): Ditto.
	(Output_section::build_lookup_maps): New method defintion.
 	(Output_section::find_relaxed_input_section): Adjust code to use
	Output_section_lookup_maps class.
	(Output_section::get_input_sections): Export merge sections.  Adjust
	code to use Output_section_lookup_maps class.
	(Output_section:::add_script_input_section): Adjust code to use
	Output_section_lookup_maps class.  Update lookup maps for merge
	sections also.
	(Output_section::discard_states): Use Output_section_lookup_maps.
	(Output_section::restore_states): Same.
	* output.h (Merge_section_properties): Move class defintion out of
	Output_section.
	(Output_section_lookup_maps): New class.
	(Output_section::Input_section::is_merge_section): New method
	defintion.
	(Output_section::Input_section::relobj): Move defintion out of class
	defintion.  Declare method only.
	(Output_section::Input_section::shndx): Ditto.
	(Output_section::Input_section::output_merge_base): New method defintion.
     	(Output_section::Input_section::u2_.pomb): New union field.
	(Output_section::Merge_section_by_properties_map,
	Output_section::Output_section_data_by_input_section_map,
	Output_section::Ouptut_relaxed_input_section_by_input_section_map):
	Remove types.
   	(Output_section::add_merge_input_section): Add new parameter
	KEEPS_INPUT_SECTIONS.
	(Output_section::build_lookup_maps): New method declaration.
	(Output_section::merge_section_map_,
	Output_section::merge_section_by_properties_map_,
	Output_section::relaxed_input_section_map_,
	Output_section::is_relaxed_input_section_map_valid_): Remove data
	members.
	(Output_section::lookup_maps_): New data member.
2010-05-23 07:43:39 +00:00
H.J. Lu
7629558884 Add a cast to avoid a compilation error.
2010-05-21  Doug Kwan  <dougkwan@google.com>

	PR gold/11619
	* arm.cc (Arm_input_section::do_output_offset): Add a cast to
	avoid a compilation error.
2010-05-22 01:06:49 +00:00
Rafael Ávila de Espíndola
d103a984a7 2010-05-19 Rafael Espindola <espindola@google.com>
* script-sections.cc (Output_section_definition::allocate_to_segment):
	Update the phdrs_list even when the output section is NULL.
	* testsuite/Makefile.am: Add test.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/script_test_9.cc: New.
	* testsuite/script_test_9.sh: New.
	* testsuite/script_test_9.t: New.
2010-05-19 17:49:19 +00:00
Doug Kwan
6625d24e23 2010-05-14 Doug Kwan <dougkwan@google.com>
* arm.cc (Arm_input_section::original_size): New method.
	(Arm_input_section::do_addralign): Add a cast.
	(Arm_input_section::do_output_offset): Remove static cast.
	(Arm_input_section::original_addralign,
	 Arm_input_section::original_size_): Change type to uint32_t.
	(Arm_input_section::init): Add safe casts for section alignment
	and size.
	(Arm_input_section::set_final_data_size): Do not set address and
	offset of stub table.
	(Arm_output_section::fix_exidx_coverage): Change use of of
	Output_section::Simple_input_section to that of
	Output_section::Input_section.
	(Target_arm::do_relax): Set addresses and file offsets of Stub_tables
	except for the first pass.
	* output.cc (Output_section::get_input_sections): Change type of
	input_sections to std::list<Input_section>.
	(Output_section::add_script_input_section): Rename from
	Output_section::add_simple_input_section.  Change type of SIS
	parameter from Simple_input_section to Input_section.
	* output.h (Output_section::Simple_input_section): Remove class.
	(Output_section::Input_section): Change class visibility to public.
	(Output_section::Input_section::addralign): Use stored alignments
	for special input sections if set.
	(Output_section::Input_section::set_addralign): New method.
	(Output_section::get_input_sections): Change parameter type from
	list of Simple_input_section to list of Input_section.
	(Output_section::add_script_input_section): Rename from
	Output_section::add_simple_input_section. Change first parameter's
	type from Simple_input_section to Input_section and remove the
	second and third parameters.
	* script-sections.cc (Input_section::Input_section_list): Change
	type to list of Output_section::Input_section/
	(Input_section_info::Input_section_info): Change parameter type of
	INPUT_SECTION to Output_section::Input_section.
	(Input_section_info::input_section): Change return type.
	(Input_section_info::input_section_): Change type to
	Output_section::Input_section.
	(Output_section_element_input::set_section_addresses): Adjust code
	to use Output_section::Input_section instead of
	Output_section::Simple_input_section.  Adjust code for renaming
	of Output_section::add_simple_input_section.
	(Orphan_output_section::set_section_addresses): Ditto.
2010-05-19 07:09:36 +00:00
Ralf Wildenhues
e1e82ea4dc Fix define in gold.h
gold/:
	* gold.h (Unordered_multimap, Unordered_map): Fix defines for
	when neither HAVE_TR1_UNORDERED_MAP nor HAVE_EXT_HASH_MAP are set.
2010-05-18 19:18:31 +00:00
Rafael Ávila de Espíndola
91e75c8a9c 2010-05-18 Rafael Espindola <espindola@google.com>
* options.cc (General_options::finalize): Handle -nostdlib.
	* options.h (nostdlib): New option.
	* script.cc (script_add_search_dir): Handle -nostdlib.
2010-05-18 18:08:03 +00:00
Doug Kwan
da59ad79a2 2010-05-12 Doug Kwan <dougkwan@google.com>
elfcpp/ChangeLog

	* arm.h (Tag_FP_arch, Tag_ABI_align_needed, Tag_ABI_align_preserved,
	Tag_FP_HP_extension, Tag_MPextension_use_legacy): Rename from
	existing tags.
	(Tag_undefined40, Tag_undefined41, Tag_MPextension_use,
	Tag_undefined43): New tags.
	(Targ_VFP_arch, Tag_ABI_align8_needed, TAG_ABI_align8_preserved,
	Tag_VFP_HP_extension): Define aliases for backward compatiblity.

gold/ChangeLog

	* arm.cc (Target_arm::do_finalize_sections): Create an empty
	attributes section only if there no attributes section after merging.
	(Target_arm::merge_object_attributes): Move value of
	Tag_MPextension_use_legacy to that of Tag_MPextension_use.
	Handle Tag_DIV_use and Tag_MPextension_use_legacy.
	* testsuite/Makefile.am (check_SCRIPTS): Add arm_attr_merge.sh
	(check_DATA): Add arm_attr_merge_6.stdout, arm_attr_merge_6r_stdout
	and arm_attr_merge_7.stdout.
	(arm_attr_merge_6.stdout, arm_attr_merge_6 arm_attr_merge_6a.o
	arm_attr_merge_6b.o, arm_attr_merge_6r.stdout, arm_attr_merge_6r,
	arm_attr_merge_7.stdout, arm_attr_merge_7, arm_attr_merge_7a.o,
	arm_attr_merge_7b.o): New rules.
	(MOSTLYCLEANFILES): Add arm_attr_merge_6, arm_attr_merge_6r and
	arm_attr_merge_7
	* testsuite/Makefile.in: Regenerate.
	* testsuite/arm_attr_merge.sh: New file.
	* testsuite/arm_attr_merge_[67][ab].s: Same.
2010-05-13 02:41:15 +00:00
Nick Clifton
3e01a7fd46 Updated Spanish translations. 2010-05-05 15:28:26 +00:00
H.J. Lu
7ad2014ac5 Properly install gold/ld as default cross linker.
gold/

2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.am (install-exec-local): Properly install gold as
	default cross linker.
	* Makefile.in: Regenerated.

ld/

2010-04-27  H.J. Lu  <hongjiu.lu@intel.com>

	* Makefile.am (install-exec-local): Properly install ld as
	default cross linker.
	* Makefile.in: Regenerated.
2010-04-27 16:05:54 +00:00
Nick Clifton
4fda8867e9 gold:
* configure.ac (install_as_default): Define and set to false
        unless --enable-gold or --enable-gold=both/gold has been
        specified.
        * configure: Regenerate.

        * Makefile.am (install-exec-local): Install the executable as
        'ld.gold'.  If install_as_default is true then also install it as
        'ld'.
        * Makefile.in: Regenerated.
ld:
        * configure.in (install_as_default): Define and set to true
        unless --enable-gold=both/gold has been specified.
        * configure: Regenerate.

        * Makefile.am (transform): Use ld.bfd as the default name of
        the linker.
        (install-exec-local): Also install the executable as a binary
        named 'ld' if install_as_default is true.
        * Makefile.in: Regenerate.
2010-04-27 14:12:32 +00:00
Ian Lance Taylor
bd288ea21b * layout.cc (Layout::layout_reloc): In relocatable link don't
combine reloc sections for grouped sections.
2010-04-24 14:32:23 +00:00
Sriraman Tallam
ef38fd8a0b 2010-04-23 Sriraman Tallam <tmsriram@google.com>
* gc.h (gc_process_relocs): Pass information on relocs pointing to
	sections that are not ordinary to icf.
	* icf.cc (get_section_contents): Handle relocation pointing to section
	with no object or shndx information.
	* testsuite/Makefile.am: Remove icf_virtual_function_folding_test.sh
	* testsuite/Makefile.in: Regenerate.
	* testsuite/icf_virtual_function_folding_test.cc: Remove printf.
	* testsuite/icf_virtual_function_folding_test.sh: Delete file.
2010-04-23 18:49:23 +00:00
Ian Lance Taylor
f6973bdcb7 * expression.cc (Expression::Expression_eval_info): Add
result_alignment_pointer field.
	(Expression::eval_with_dot): Add result_alignment_pointer
	parameter.  Change all callers.
	(Expression::eval_maybe_dot): Likewise.
	(class Binary_expression): Add alignment_pointer parameter to
	left_value and right_value.  Change all callers.
	(BINARY_EXPRESSION): Set result alignment.
	(class Trinary_expression): Add alignment_pointer parameter to
	arg2_value and arg3_value.  Change all callers.
	(Trinary_cond::value): Set result alignment.
	(Max_expression::value, Min_expression::value): Likewise.
	(Align_expression::value): Likewise.
	* script-sections.cc (class Sections_element): Add dot_alignment
	parameter to set_section_addresses virtual function.  Update
	instantiations.
	(class Output_section_element): Likewise.
	(Script_sections::create_segments): Add dot_alignment parameter.
	Change all callers.
	(Script_sections::create_segments_from_phdrs_clause): Likewise.
	(Script_sections::set_phdrs_clause_addresses): Likewise.
	* script-sections.h: Update declarations.
	* script.h: Update declarations.
	* output.h (Output_segment::set_minimum_p_align): Don't decrease
	min_p_align.
	* testsuite/script_test_3.t: Set large alignment.
	* testsuite/script_test_3.sh: Make sure that at least one LOAD
	segment has expected alignment.
2010-04-23 04:47:33 +00:00
Nick Clifton
9c9c98a59d Updated translation templates.
Updated Bulgarian translation.
Updated Finnish translations.
Updated French translations.
Updated Vietnamese translations.
2010-04-22 14:37:16 +00:00
H.J. Lu
2253bfba80 Add icf_virtual_function_folding_test to check_PROGRAMS.
2010-04-22  H.J. Lu  <hongjiu.lu@intel.com>

	* testsuite/Makefile.am (check_PROGRAMS): Add
	icf_virtual_function_folding_test.
	* testsuite/Makefile.in: Regenerated.
2010-04-22 14:12:42 +00:00
Andrew Haley
85fdf9067f 2010-04-15 Andrew Haley <aph@redhat.com>
* emultempl/armelf.em (merge_exidx_entries): New variable.
	(OPTION_NO_MERGE_EXIDX_ENTRIES): New definition.
	("no-merge-exidx-entries"): New option.
	* ld.texinfo (merge-exidx-entries): Document this option.

2010-04-15  Andrew Haley  <aph@redhat.com>

	* bfd-in.h (elf32_arm_fix_exidx_coverage): Add new flag:
	merge_exidx_entries.
	* bfd-in2.h: Likewise.
	* elf32-arm.c (elf32_arm_fix_exidx_coverage): Likewise.  Use it to
	control merging of exidx entries.

2010-04-15  Andrew Haley  <aph@redhat.com>

	* options.h (merge_exidx_entries): New option.
	* arm.cc (class Arm_exidx_fixup): Add new arg, merge_exidx_entries.
	(class Arm_exidx_fixup::merge_exidx_entries_): New member.
	(Output_section::fix_exidx_coverage): Add new arg, merge_exidx_entries.
	(Target_arm::merge_exidx_entries): New function.
	(process_exidx_entry): Don't merge if merge_exidx_entries_ is false.
	(Arm_output_section::fix_exidx_coverage): Pass merge_exidx_entries
	to Arm_exidx_fixup constructor.
	Add new arg, merge_exidx_entries.
	(Target_arm::fix_exidx_coverage): pass merge_exidx_entries to
	Arm_output_section::fix_exidx_coverage.
2010-04-21 16:32:31 +00:00
Sriraman Tallam
ce97fa81e0 2010-04-18 Sriraman Tallam <tmsriram@google.com>
* icf.cc (get_section_contents): Check for preemptible functions.
	Ignore addend when appropriate.
	* symtab.cc (should_add_dynsym_entry): Add new parameter.  Check for
	section folded.
	(add_from_relobj): Check for section folded.
	(set_dynsym_indexes): Fix call to should_add_dynsym_entry.
	* symtab.h (should_add_dynsym_entry): Add new parameter.
	* target-reloc.h (scan_relocs): Check for section folded.
	* x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
	Check reloc types for function pointers in shared objects.
	* testsuite/Makefile.am (icf_virtual_function_folding_test): New test
	case.
	(icf_preemptible_functions_test): New test case.
	(icf_string_merge_test): New test case.
	* testsuite.Makefile.in: Regenerate.
	* testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
	bar_glob.  Refactor code.
	* testsuite/icf_preemptible_functions_test.cc: New file.
	* testsuite/icf_preemptible_functions_test.sh: New file.
	* testsuite/icf_string_merge_test.cc: New file.
	* testsuite/icf_string_merge_test.sh: New file.
	* testsuite/icf_virtual_function_folding_test.cc: New file.
	* testsuite/icf_virtual_function_folding_test.sh: New file.
2010-04-20 21:13:30 +00:00
Doug Kwan
04ceb17cc3 2010-04-14 Doug Kwan <dougkwan@google.com>
* 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-15 00:42:15 +00:00
Doug Kwan
153e7da4fc 2010-04-13 Doug Kwan <dougkwan@google.com>
* arm.cc (Arm_input_section::set_final_data_size): Compute
	accurate final data size instead of using current data size.
2010-04-13 20:37:55 +00:00
Doug Kwan
4dbd9faf85 Add back missing change log.
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-09 23:51:37 +00:00
H.J. Lu
721ea635af Add prototype to gold tests.
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-09 18:05:43 +00:00
Doug Kwan
1e5d2fb127 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-09 17:32:58 +00:00
Doug Kwan
6bf924b0ab 2010-04-08 Doug Kwan <dougkwan@google.com>
* 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-09 00:04:30 +00:00
Doug Kwan
24af6f9228 2010-04-07 Doug Kwan <dougkwan@google.com>
* 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-08 06:56:15 +00:00
Cary Coutant
00698fc57c * archive.cc (include_member): Destroy Read_symbols_data object before
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-07 22:58:23 +00:00
Doug Kwan
7296d93387 2010-04-07 Doug Kwan <dougkwan@google.com>
* 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-07 21:42:22 +00:00
Ralf Wildenhues
efc8d4f25f Use Automake option no-dist in gold.
gold/:
	* configure.ac (AM_INIT_AUTOMAKE): Add option no-dist.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
2010-04-07 21:08:01 +00:00
Cary Coutant
be234d887e gcc PR lto/42757
* 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-06 21:56:24 +00:00
Nick Clifton
bd32c6bd4c Updated binutils Vietnamese translation.
New gold Vietnamese translation.
New gas Russian translation.
2010-04-06 16:12:17 +00:00
Doug Kwan
323c532fae 2010-03-30 Doug Kwan <dougkwan@google.com>
* arm.cc (Target_arm::using_thumb_only): Handle v6-M
2010-03-31 06:05:37 +00:00
Doug Kwan
4fcd97eb15 2010-03-25 Doug Kwan <dougkwan@google.com>
* gold/arm.cc (Arm_exidx_fixup::update_offset_map): Rearrange code
	to avoid a conversion warning on a 32-bit host.
2010-03-26 04:53:34 +00:00
Ian Lance Taylor
4ebf39dbf4 * testsuite/script_test_3.t: Add a TLS segment.
* 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 18:12:48 +00:00
Cary Coutant
4a599bdd83 * fileread.cc (find_or_make_view): Fix comment. 2010-03-24 01:27:57 +00:00
Ian Lance Taylor
6c93b22ce4 * script-sections.cc (class Orphan_section_placement): Define
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-23 21:06:10 +00:00
Doug Kwan
a2c7281b72 2010-03-22 Doug Kwan <dougkwan@google.com>
* 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-22 22:48:05 +00:00
Rafael Ávila de Espíndola
b0193076da 2010-03-22 Rafael Espindola <espindola@google.com>
* 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-22 14:18:24 +00:00
Doug Kwan
d099120c64 2010-03-19 Doug Kwan <dougkwan@google.com>
* 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-19 19:11:21 +00:00
Doug Kwan
1aa3738469 2010-03-15 Doug Kwan <dougkwan@google.com>
* 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-16 01:26:15 +00:00
Rafael Ávila de Espíndola
b672b05737 2010-03-15 Rafael Espindola <espindola@google.com>
* readsyms.cc (Read_symbols::do_read_symbols): Update calls to
	Add_symbols' constructor.
	* readsyms.h (Add_symbols): Remove the input_group member.
2010-03-15 14:46:16 +00:00
Ian Lance Taylor
4c5193b7db Adjust last patch--same ChangeLog entry, same e-mail. 2010-03-11 01:18:26 +00:00
Ian Lance Taylor
b6848d3c09 * reloc.cc (Sized_relobj::split_stack_adjust_reltype): Call the
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-11 01:10:53 +00:00
Cary Coutant
a2a5469e79 * fileread.cc (File_read::~File_read): Don't delete whole_file_view_.
(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 17:37:11 +00:00
David S. Miller
8861f32bfe * sparc.cc (Target_sparc::Scan::local): Accept R_SPARC_WPLT30. 2010-03-10 17:07:26 +00:00
Sriraman Tallam
d62d0f5fc2 2010-03-09 Sriraman Tallam <tmsriram@google.com>
* icf.cc (get_section_contents): Add '@' marker after processing the
	merge reloc.
2010-03-10 01:26:57 +00:00
Rafael Ávila de Espíndola
473b7a133c 2010-03-09 Rafael Espindola <espindola@google.com>
* archive.cc (should_include_member): New.
	(Archive::add_symbols): Use should_include_member.
2010-03-09 19:17:14 +00:00
Doug Kwan
9177756dc9 2010-03-08 Doug Kwan <dougkwan@google.com>
* 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-08 22:15:16 +00:00
Ian Lance Taylor
9e9e071b2e * options.h (class General_options): Add --spare-dynamic-tags.
* output.cc (Output_data_dynamic::set_final_data_size): Implement
	--spare-dynamic-tags.
2010-03-06 02:34:13 +00:00
Ian Lance Taylor
a81ee015bc * incremental.cc: Include "libiberty.h". 2010-03-05 22:04:48 +00:00
Rainer Orth
44ec90b93b include:
* 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-05 21:04:59 +00:00
Sriraman Tallam
0897ed3bdb * i386.cc (Target_i386::can_check_for_function_pointers): New function.
(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-04 01:33:22 +00:00