Commit Graph

1437 Commits

Author SHA1 Message Date
Sriraman Tallam
7c381248b3 2013-01-16 Sriraman Tallam <tmsriram@google.com>
* layout.cc (Layout::layout): Do not do default sorting for
	text sections when section ordering is specified.
	(make_output_section): Ditto.
	* testsuite/plugin_final_layout.cc: Name the function sections
	to catch reordering issues.
2013-01-16 22:47:14 +00:00
Alan Modra
e245874365 bfd/
* elf64-ppc.c (ppc64_elf_size_stubs): Default shared libs to
	plt-thread-safe.
gold/
	* powerpc.cc (Target_powerpc::do_relax): Default shared libs to
	plt-thread-safe.
ld/testsuite/
	* ld-powerpc/tlsso.d: Adjust for plt-thread-safe stubs.
	* ld-powerpc/tlsso.g: Likewise.
	* ld-powerpc/tlsso.r: Likewise.
	* ld-powerpc/tlstocso.d: Likewise.
	* ld-powerpc/tlstocso.g: Likewise.
2013-01-15 06:13:26 +00:00
Alan Modra
431ed302a8 * testsuite/Makefile.am (final_layout_script.lds): Handle .got section.
* testsuite/Makefile.in: Regenerate.
2013-01-14 23:11:56 +00:00
Alan Modra
0ec6429be3 * testsuite/Makefile.am (MOSTLYCLEANFILES): Add various output files.
* testsuite/Makefile.in: Regenerate.
2013-01-14 12:56:39 +00:00
Ian Lance Taylor
0bf402d505 Fix mingw gold build with plugins enabled
* Makefile.am: Replace -ldl with @DLOPEN_LIBS@.
	* configure.ac: Export DLOPEN_LIBS and add headers check.
	* plugin.cc: Handle non-dlfcn case.
	* Makefile.in: Regenerate.
	* config.in: Regenerate.
	* configure: Regenerate.
	* testsuite/Makefile.in: Regenerate.
2013-01-11 14:36:36 +00:00
Sriraman Tallam
9e9143bc87 Make linker scripts and section ordering via --section-ordering-file or
linker plugins work. This patch lets linker scripts take precedence.

2013-01-09  Sriraman Tallam  <tmsriram@google.com>

	* output.h (sort_attached_input_sections): Change to be public.
	* script-sections.cc
	(Output_section_definition::set_section_addresses): Sort
	attached input sections according to section order before linker
	script assigns section addresses.
	(Orphan_output_section::set_section_addresses): Sort
	attached input sections according to section order before linker
	script assigns section addresses.
	* Makefile.am (final_layout.sh): Use a simple linker script to
	check if section ordering still works.
	* Makefile.in: Regenerate.
2013-01-10 00:18:15 +00:00
Ian Lance Taylor
679af3685c * arm.cc (Target_arm::attributes_accept_div): New function.
(Target_arm::attributes_forbid_div): New function.
	(Target_arm::merge_object_attributes): Merge the Tag_DIV_use
	attribute using the same new functions as what bfd/elf32_arm.c
	does.
2013-01-09 15:27:24 +00:00
Cary Coutant
3136a00eec gold/
PR gold/14993
	* output.cc (Output_section::add_input_section): For incremental
	updates, don't track input sections that are allocated from patch
	space.
2013-01-07 21:36:56 +00:00
H.J. Lu
f2a6224b9c Properly install gold as default linker
PR gold/14897
	* configure.ac (--enable-ld): Removed.
	(install_as_default): Set to yes only for --enable-gold=default
	or --disable-ld.
	* configure: Regenerated.
2013-01-07 19:55:41 +00:00
H.J. Lu
4f46f626dc Add -fuse-ld= for GCC linker option compatibility
* options.h (General_options): Add -fuse-ld= for GCC linker
	option compatibility.
2013-01-07 16:57:57 +00:00
Cary Coutant
26e4ef59d6 gold/
* configure.ac: Fix typo restoring CXXFLAGS.
	* configure: Regenerate.
2013-01-05 00:00:51 +00:00
Cary Coutant
3d587466ef gold/
* testsuite/Makefile.am (CXXLINK_S): New macro.
	(debug_msg_so.err, debug_msg_ndebug.err): Use CXXLINK_S.
	* testsuite/Makefile.in: Regenerate.
2013-01-04 23:50:27 +00:00
H.J. Lu
44db66958c Update gold copyright year to 2013
* version.cc (print_version): Update copyright year to 2013.
2013-01-02 18:39:21 +00:00
Ian Lance Taylor
edcac0c105 * layout.cc (Layout::special_ordering_of_input_section): New
function.
	(Layout::layout): If input section requires special ordering, must
	sort input sections.
	(Layout::make_output_section): May sort .text input sections.
	(Layout::is_section_name_prefix_grouped): Remove.
	* layout.h (class Layout): Declare
	special_ordering_of_input_section.  Don't declare
	is_section_name_prefix_grouped.
	* output.cc (Output_section::add_input_section): Revert last
	change.
	(Output_section::Input_section_sort::match_file_name): Don't crash
	if called on output section data.
	(Output_section::Input_section_sort_compare): Sort based on
	special ordering.
	(Output_section::Input_section_sort_section_order_index_compare):
	Revert last patch.
	(Output_section::sort_attached_input_sections): Likewise.
2012-12-21 06:24:31 +00:00
Sriraman Tallam
28f2a4ac6f Group text sections with prefixes .text.unlikely,.text.hot and .text.startup
by default.


2012-12-18  Sriraman Tallam  <tmsriram@google.com>

	* layout.cc (Layout::is_section_name_prefix_grouped): New function.
	* layout.h (Layout::is_section_name_prefix_grouped): New function.
	* output.cc (Output_section::add_input_section): Check if section
	name contains special prefix.  Keep input sections to sort such
	sections.
	(Output_section::Input_section_sort_section_order_index_compare
	 ::operator()): Group sections according to prefixes.
	* (Output_section::sort_attached_input_sections): Add condition
	to Input_section_entry constructor call.
	* testsuite/Makefile.am (text_section_grouping): New test.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/text_section_grouping.cc: New file.
	* testsuite/text_section_grouping.sh: New file.
2012-12-19 02:55:15 +00:00
Nick Clifton
5bf135a788 Add copyright notices 2012-12-17 16:56:12 +00:00
Cary Coutant
59965708ea gold/
* testsuite/Makefile.am (exception_separate_shared_12_test): Add
    	--no-as-needed flag.
    	(exception_separate_shared_12_test): Likewise.
    	(incremental_copy_test): Likewise.
    	* testsuite/Makefile.in: Regenerate.
2012-12-15 01:55:08 +00:00
Cary Coutant
2a77e2ab18 gold/
* dwp.cc (Dwp_output_file::add_cu_set): Check for duplicate CUs.
	(Dwp_output_file::Dwp_index::enter_set): Add assert.
2012-12-15 00:57:30 +00:00
Alan Modra
e3deeb9c3a * powerpc.cc (class Track_tls): New.
(class Relocate, class Scan): Inherit Track_tls.
	(Target_powerpc::Scan::local, global): Track tls optimization
	and avoid creating plt entry for __tls_get_addr if all uses
	are optimized away.
	(Target_powerpc::Relocate::relocate): Update to use Track_tls.
2012-12-12 08:09:41 +00:00
Alan Modra
d8f5a2749d * options.h (General_options): Add --toc-sort/--no-toc-sort.
Replace no_toc_optimize with toc_optimize.
	* output.h (Output_section::input_sections): Provide non-const variant.
	* powerpc.cc (Powerpc_relobj::has_small_toc_reloc_,
	set_has_small_toc_reloc, has_small_toc_reloc): New variable and
	accessors.
	(Target_powerpc::Scan::local, global): Call set_has_small_toc_reloc.
	(class Sort_toc_sections): New.
	(Target_powerpc::do_finalize_sections): Sort toc sections.
	(Target_powerpc::Relocate::relocate): Update toc_optimize test.
2012-12-12 03:41:40 +00:00
Roland McGrath
4c8a1de1fe gold/
* testsuite/binary_unittest.cc (read_all): New function.
	(Sized_binary_test): Use it instead of ::read.
	* fileread.cc (do_read): Don't assume pread always reads the whole
	amount in a single call.
2012-12-10 17:38:42 +00:00
Nick Clifton
752937aa0c Add copyright notices 2012-12-10 12:48:03 +00:00
Alan Modra
edc27beb58 * powerpc.cc (Target_selector_powerpc::Target_selector_powerpc):
Set EM_PPC64 or EM_PPC here.
	(Target_selector_powerpc::do_recognize): Delete.
2012-12-10 11:45:18 +00:00
Alan Modra
906b9150c7 * powerpc.cc (Powerpc_relobj::Powerpc_relobj): Init has14_ and
stub_table_.
	(Target_powerpc::Branch_info::make_stub): Don't omit addend.
2012-12-10 11:30:57 +00:00
Roland McGrath
418c15ae72 gold/
* testsuite/binary_unittest.cc (Sized_binary_test):
	Use open_descriptor rather than ::open.
2012-12-07 21:48:32 +00:00
Ian Lance Taylor
db399005e8 * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
2012-12-07 05:03:30 +00:00
Ian Lance Taylor
ae2eea65c6 * configure.ac (HAVE_ZLIB): Use AM_ZLIB instead of AC_SEARCH_LIBS.
Use $ac_cv_header_zlib_h = yes as the condition in AM_CONDITIONAL.
	* aclocal.m4: Regenerate.
	* configure: Regenerate.
	* Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
2012-12-07 04:28:52 +00:00
Alan Modra
decdd3bc36 * powerpc.cc (Stub_table::do_write): Delete redundant Address
typedef and invalid_address constant.
	(Output_data_glink, Stub_table, Target_powerpc): Explicitly
	instantiate constants.
2012-12-07 04:23:36 +00:00
Alan Modra
aba6bc71dd * options.h (General_options): Add no_toc_optimize.
* powerpc.cc (ok_lo_toc_insn): New function.
	(Target_powerpc::Relocate::relocate): Optimize toc access sequences.
2012-12-07 00:03:18 +00:00
Alan Modra
9e69ed506a * options.h (General_options): Add plt_align, plt_static_chain,
plt_thread_safe.  Update stub_group_size help text.
	* powerpc.cc (Target_powerpc::plt_thread_safe): New access function
	for new plt_thread_safe_ var.
	(use_plt_offset): Correct comments.
	(Target_powerpc::do_relax): Look for thread creation symbols to
	determine default plt_thread_safe value.  Clear plt call stubs
	as well as branch stubs each iteration.
	(add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New
	insn constants.
	(l, hi, ha, write_insn): Move earlier.
	(Stub_table): Delete prev_size, add last_plt_size and last_branch_size.
	(Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear
	plt stubs too.
	(Stub_table::update_size): Adjust.
	(Stub_table::prev_size, set_prev_size): Delete.
	(Stub_table::stub_align): Let --plt-align affect result.
	(Stub_table::plt_call_size): Calculate sizes for various stubs.
	(Stub_table::branch_stub_size): Use last_plt_size in address calc.
	(Stub_table::add_plt_call_stub): Pass iterator to plt_call_size.
	(Stub_table::do_write): Support more stub variants.
2012-12-06 03:13:17 +00:00
Alan Modra
f43ba157ad * powerpc.cc (Powerpc_relobj::do_scan_relocs): Delete.
(Target_powerpc::do_define_standard_symbols): New function.
2012-12-04 03:13:31 +00:00
Alan Modra
dc9589e975 typo fix 2012-12-03 06:38:01 +00:00
Alan Modra
34171bc50f * output.h: Formatting, whitespace. 2012-12-03 05:48:47 +00:00
Alan Modra
ec661b9dca * layout.h (Layout::get_executable_sections): Declare.
* layout.cc (Layout::get_executable_sections): New function.
	* arm.cc (Target_arm::group_sections): Use it.
	(Arm_output_section::group_sections): Delete now redundant test.
	* output.cc (Output_reloc::Output_reloc): Add is_relative.
	param to handle relative relocs.
	* output.h (Output_reloc::Output_reloc <absolute reloc>): Likewise.
	(Output_data_reloc::add_absolute): Adjust.
	(Output_data_reloc::add_relative): New function.
	(Output_data::reset_data_size): New function.
	(Output_relaxed_input_section::set_relobj, set_shndx): New functions.
	(Output_section::set_addralign): New function.
	(Output_section::checkpoint_set_addralign): New function.
	(Output_section::clear_section_offsets_need_adjustment): New function.
	(Output_section::input_sections): Make public.
	* powerpc.cc (class Output_data_brlt_powerpc): New.
	(class Stub_table, class Stub_control): New.
	(Powerpc_relobj::has14_, set_has_14bit_branch, has_14bit_branch,
	stub_table_, set_stub_table, stub_table): New vectors and accessor
	functions.
	(Target_powerpc::do_may_relax, do_relax, push_branch,
	new_stub_table, stub_tables, brlt_section, group_sections,
	add_branch_lookup_table, find_branch_lookup_table,
	write_branch_lookup_table, make_brlt_section): New functions.
	(Target_powerpc::struct Sort_sections, class Branch_info): New.
	(Target_powerpc::brlt_section_, stub_tables_, branch_lookup_table_,
	branch_info_): New vars.
	(Target_powerpc::make_plt_entry, make_local_ifunc_plt_entry): Don't
	make call stubs here.
	(Output_data_glink): Remove all call stub handling from this class.
	(Target_powerpc::Scan::local, global): Save interesting branch
	relocs and relocs for ifunc.  Adjust calls to plt entry functions.
	(Target_powerpc::do_finalize_sections): Only make reg save/restore
	functions on final link.
	(Target_powerpc::Relocate::relocate): Adjust lookup of call stubs.
	Handle long branch destinations too.
	(Target_powerpc::do_dynsym_value, do_plt_address_for_global,
	do_plt_address_for_local): Adjust lookup of plt call stubs.
2012-12-03 05:30:59 +00:00
Alan Modra
627b30b77e * powerpc.c (Target_powerpc::Scan::global): Don't emit relative
relocs against protected symbols when building 32-bit shared libs.
2012-11-30 05:01:20 +00:00
Alan Modra
40b469d719 * powerpc.cc (Target_powerpc::make_plt_section): Add symtab
param.  Call got_section() to make .got.  Update all callers
	and their callers and so on.
2012-11-30 04:50:00 +00:00
Alan Modra
bb66a627d0 * powerpc.cc (Powerpc_relobj::do_scan_relocs): Make STB_LOCAL
_GLOBAL_OFFSET_TABLE_ rather than STB_WEAK.
	(Output_data_got_powerpc::make_header): Update _GLOBAL_OFFSET_TABLE_
	value if it already exists.
2012-11-30 04:47:08 +00:00
H.J. Lu
d2cf1c6cfc Fix TLS to LE optimization for x32
PR gold/14858
	* x86_64.cc (Relocate::tls_ld_to_le): Support x32.
2012-11-20 05:56:06 +00:00
Roland McGrath
edccdf7c8b bfd/
* elf32-arm.c (elf32_arm_nacl_plt0_entry): Use bic rather than bfc
	instruction for data sandboxing.

gold/
	* arm.cc (Output_data_plt_arm_nacl::first_plt_entry): Use bic rather
	than bfc instruction for data sandboxing.
2012-11-15 00:30:11 +00:00
Alan Modra
6febeb7413 Regenerate. 2012-11-08 03:03:26 +00:00
Alan Modra
0a6f1bf2f9 * configure.ac: Apply 2012-09-10 change to config.in here.
* configure: Regenerate.
2012-11-05 12:26:55 +00:00
Alan Modra
26a4e9cbc4 * powerpc.cc (Powerpc_relobj): Delete "Offset" typedef.
(struct Opd_ent): Use "Address" rather than "Offset".
	(Output_data_got_powerpc::got_base_offset): Return Valtype.
	(Target_powerpc::got_section): Make public.
	(Target_powerpc::scan_relocs): Move code setting symbols..
	(Powerpc_relobj::do_scan_relocs): ..to here, new function.
	Create _SDA_BASE_ only when referenced.
2012-11-05 03:29:58 +00:00
Roland McGrath
cc9280133f gold/
* i386.cc (Target_i386::relocate_relocs): Remove extraneous typename
	from last change.
2012-11-02 19:50:36 +00:00
Roland McGrath
62fe925ad4 gold/
* target.h (Sized_target::relocate_relocs): Use Elf_Off
	for offset_in_output_section parameter.
	(Sized_target::relocate_special_relocatable): Likewise.
	* arm.cc (Target_arm::relocate_relocs): Likewise.
	(Target_arm::relocate_special_relocatable): Likewise.
	* i386.cc (Target_i386::relocate_relocs): Likewise.
	* powerpc.cc (Target_powerpc::relocate_relocs): Likewise.
	* sparc.cc (Target_sparc::relocate_relocs): Likewise.
	* target-reloc.h (relocate_relocs): Likewise.
	* testsuite/testfile.cc (Target_test): Likewise.
	* tilegx.cc (Target_tilegx::relocate_relocs): Likewise.
	* x86_64.cc (Target_x86_64::relocate_relocs): Likewise.
2012-11-01 23:27:00 +00:00
Roland McGrath
c2c9fdb45e gold/
* system.h: Move inclusion of <clocale> to after <libintl.h> in
	[ENABLE_NLS] section, and separately at top of [!ENABLE_NLS] section.
2012-11-01 22:44:58 +00:00
Roland McGrath
3e536b9a7a gold/
* descriptors.cc (set_close_on_exec): Add ATTRIBUTE_UNUSED to the
	parameter, which is unused in the [!F_SETFD] case.
2012-11-01 22:43:26 +00:00
Roland McGrath
50ed5eb142 gold/
* dwarf_reader.cc (Sized_elf_reloc_mapper::symbol_section): Cast
	SYMNDX to off_t before comparing it to this->data_size().
	* output.cc (Output_symtab_xindex::endian_do_write): Likewise.
	* incremental.cc (Output_section_incremental_inputs::do_write):
	Cast GLOBAL_SYM_COUNT to off_t before comparing it to SYMTAB_SIZE.
2012-11-01 22:35:06 +00:00
Roland McGrath
2cadc0bfec gold/
* nacl.cc: Include "libiberty.h" for vasprintf declaration.
2012-11-01 18:16:23 +00:00
Nick Clifton
3bfcb6528e bfd:
* elf32-arm.c (elf32_arm_print_private_bfd_data): Recognise and
        display the new ARM hard-float/soft-float ABI flags for EABI_VER5
        (elf32_arm_post_process_headers): Add the hard-float/soft-float
        ABI flag as appropriate for ET_DYN/ET_EXEC in EABI_VER5.

binutils:
        * readelf.c (decode_ARM_machine_flags): Recognise and display the
        new ARM hard-float/soft-float ABI flags for EABI_VER5. Split out
        the code for EABI_VER4 and EABI_VER5 to allow this.

elfcpp:
        * arm.h: New enum for EABI soft- and hard-float flags.

gold:
        * gold.cc (Target_arm::do_adjust_elf_header): Add the
        hard-float/soft-float ABI flag as appropriate for ET_DYN/ET_EXEC
        in EABI_VER5.

include:
        * elf/arm.h (EF_ARM_ABI_FLOAT_SOFT): New define.
        (EF_ARM_ABI_FLOAT_HARD): Likewise.

ld/testsuite:
        * ld-arm/eabi-hard-float.s: New test source.
        * ld-arm/eabi-soft-float.s: New test source.
        * ld-arm/eabi-hard-float.d: New test.
        * ld-arm/eabi-soft-float.d: New test.
        * ld-arm/eabi-soft-float-ABI4.d: New test.
        * ld-arm/eabi-soft-float-r.d: New test.
        * ld-arm/arm-elf.xp: Use the new tests.

binutils:
	PR binutils/14779
	* configure.in: Add checks for wchar.h and mbstate_t.
	* config.in: Regenerate.
	* configure: Regenerate.
	* readelf.c: Conditionally include wchar.h.
	(print_symbol): Conditionally use mbstate_t.
2012-10-30 12:44:58 +00:00
Cary Coutant
c1a8d56e4e gold/
* dwp.cc (usage): Add file and exit status parameters;
	add --help and --version options.
	(print_version): New function.
	(main): Add --help and --version options.
2012-10-29 23:01:51 +00:00