Commit Graph

10888 Commits

Author SHA1 Message Date
Alan Modra eb8d7fda36 Comment typo
* elf64-ppc.c (STK_LINKER): Comment typo fix.
2014-01-22 16:21:33 +10:30
H.J. Lu 4584ec1207 Check incompatible existing default symbol definition
After resolving a versioned reference, foo@VER1, to a default versioned
definition, foo@@VER1, from a shared object, we also merge it with
the existing regular default symbol definition, foo.  When foo is IFUNC
and foo@@VER1 aren't, we will merge 2 incompatible definitions.  This
patch avoids merging foo@@VER1 definition with foo definition if
one is IFUNC and the other isn't.
2014-01-21 15:42:51 -08:00
Alan Modra efec457298 daily update 2014-01-22 09:31:03 +10:30
H.J. Lu 40101021d4 Update comments for the last commit 2014-01-21 05:37:45 -08:00
H.J. Lu 22ef172a21 Don't check shared/export_dynamic/ref_dynamic for type mismatch
There is nothing linker can do when a type mismatched default definition
are made dynamic by info->shared, info->export_dynamic or h->ref_dynamic.
But we do want to avoid exporting it when building PIE.  Let's remove
those checks.

bfd/

	PR ld/2404
	* elflink.c (_bfd_elf_merge_symbol): Don't check info->shared,
	info->export_dynamic, nor !h->ref_dynamic for type mismatch when
	adding the default version.

ld/testsuite/

	PR ld/2404
	* ld-elf/shared.exp: Add a PIE test for PR ld/2404.
2014-01-21 05:33:48 -08:00
Alan Modra 48ded086b6 daily update 2014-01-21 09:31:08 +10:30
Alan Modra d7c85de1c3 daily update 2014-01-20 09:31:05 +10:30
Alan Modra 6e245eba97 daily update 2014-01-18 09:31:09 +10:30
Alan Modra e07e2682b4 daily update 2014-01-17 09:31:01 +10:30
Alan Modra b75d42bce5 Fix mips segfault on GOT access of absolute symbol
When a symbol is absolute, this code in mips_elf_record_got_page_entry
      entry = bfd_zalloc (sec->owner, sizeof (*entry));
segfaults.  sec == bfd_abs_section_ptr and sec->owner == NULL.

	* elfxx-mips.c (mips_elf_record_got_page_entry): Pass in a
	mips_elf_traverse_got_arg* rather than mips_got_info*.
	Adjust caller.  Alloc on output_bfd rather than symbol section
	owner.
2014-01-16 11:56:50 +10:30
Alan Modra 5ae8deca2a daily update 2014-01-16 09:31:07 +10:30
H.J. Lu c353e543fe Revert the last change
It has been fixed by

commit 4199e3b866
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Jan 15 21:50:55 2014 +1030

    non-PIC references to __ehdr_start in pie and shared

    Rather than hacking every backend to not discard dynamic relocations
    against an undefined hidden __ehdr_start, make it appear to be defined
    early.  We want __ehdr_start hidden before size_dynamic_sections so
    that it isn't put in .dynsym, but we do need the dynamic relocations
    for a PIE or shared library with a non-PIC reference.  Defining it
    early is wrong if we don't actually define the symbol later to its
    proper value.  (In some cases we want to leave the symbol undefined,
    for example, when the ELF header isn't loaded, and we don't have this
    infomation available in before_allocation.)

	* elf32-i386.c (elf_i386_allocate_dynrelocs): Revert the last
	change.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-15 03:59:42 -08:00
H.J. Lu 818d220a6f Don't discard relocs against __ehdr_start
__ehdr_start will be defined by assign_file_positions_for_non_load_sections
later.

	PR ld/16428
	* elf32-i386.c (elf_i386_allocate_dynrelocs): Don't discard relocs
	against __ehdr_start.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-14 16:42:35 -08:00
H.J. Lu c3ce498cbd Revert the last change
* elf32-i386.c (elf_i386_allocate_dynrelocs): Revert the last
	change.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-14 16:40:51 -08:00
Alan Modra 499de2f6ba daily update 2014-01-15 09:30:50 +10:30
H.J. Lu d1ec1e40b5 Don't update reloc count if there are any non pc-relative relocs
PR ld/16428
	* elf32-i386.c (elf_i386_allocate_dynrelocs): Don't update reloc
	count if there are any non pc-relative relocs.
	* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Likewise.
2014-01-14 10:48:39 -08:00
Christophe Lyon f44a1f8e51 2014-01-14 Michael Hudson-Doyle <michael.hudson@linaro.org>
Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>

	bfd/
	* elfnn-aarch64.c (elfNN_aarch64_final_link_relocate): Use correct
	offset while calculating relocation address.
	(elfNN_aarch64_create_small_pltn_entry): Likewise.
	(elfNN_aarch64_init_small_plt0_entry): Likewise.
2014-01-14 15:53:50 +01:00
Alan Modra 067c5c1de2 daily update 2014-01-14 09:30:39 +10:30
Ma Jiang fd0fd00cde 2014-01-13 Ma Jiang <ma.jiang@zte.com.cn>
PR ld/16202
	* elf32-arm.c (elf32_arm_final_link_relocate): Refetch addends for
	R_ARM_ABS8 and R_ARM_ABS16.
2014-01-13 16:06:28 +00:00
Alan Modra aa726b9e09 missing changelog for last patch 2014-01-13 15:48:24 +10:30
Alan Modra c7e17e05b6 Error on shared lib call to @local ifunc
On powerpc32, making ifuncs have non-default visibility in shared
libraries or pies can result in runtime failures.  The problem is that
if gcc is told that a given function has non-default visibility, then
calls to that function are assumed to be local (which is true) and
thus need not go via a plt call stub (which is false for ifunc).  If
the caller has no other reason to set up the got pointer (r30), code
won't be emitted to do so.  However, a pic plt call stub makes use of
r30 to load the plt entry.  So a call to an ifunc, which always needs
a plt entry, will fail.

This patch makes ld emit an error for the problem case, and allows
calls to non-default visibility ifuncs to work in normal executables.
I also fix some cases where ifuncs fail when using the old bss-plt.

	* elf32-ppc.c (ppc_elf_check_relocs): For @local call to ifunc,
	error when shared and force a plt call otherwise.
	(ppc_elf_size_dynamic_sections): Don't emit DT_PPC_GOT unless
	plt_type == PLT_NEW.
	(ppc_elf_relocate_section): Add missing test to resolve ifuncs to
	the appropriate call stub.
2014-01-13 15:04:15 +10:30
Alan Modra 1a4416c4c7 daily update 2014-01-13 09:30:37 +10:30
Alan Modra 024f468406 daily update 2014-01-12 09:30:39 +10:30
Alan Modra b9d056dc85 daily update 2014-01-11 09:30:57 +10:30
Alan Modra eec2f3ed9f Don't adjust LOAD segment to match GNU_RELRO segment
Instead, fix Jakub's original code setting up the PR_GNU_RELRO header
from the PT_LOAD header.

	PR ld/14207
	PR ld/16322
	PR binutils/16323
bfd/
	* elf.c (assign_file_positions_for_load_sections): Revert last change.
	(assign_file_positions_for_non_load_sections): When setting up
	PT_GNU_RELRO header, don't require a corresponding PT_LOAD
	header that completely covers the relro region.
ld/
	* ldlang.c (lang_size_sections): Remove unneeded RELRO base
	adjust.  Tidy comments.
	* ld.texinfo (DATA_SEGMENT_RELRO_END): Correct description.
ld/testsuite/
	* ld-x86-64/pr14207.d: Adjust
2014-01-10 21:49:56 +10:30
Alan Modra 3855dad799 daily update 2014-01-10 09:30:39 +10:30
Tristan Gingold 09bf66a8e8 Use table jump macros in coff-rs6000 targets.
bfd/
2014-01-09  Tristan Gingold  <gingold@adacore.com>

	* coff-rs6000.c (rs6000coff_vec, pmac_xcoff_vec): use jump
	table macros and add macros to initializa the structure.
2014-01-09 15:23:36 +01:00
Alan Modra 1d20f082f2 daily update 2014-01-09 09:30:37 +10:30
H.J. Lu 43a8475ca0 Adjust LOAD segment to generate GNU_RELRO segment
This patch fixes 2 GNU_RELRO segment bugs:

1. lang_size_sections didn't properly align base to the maximum
alignment power of sections between DATA_SEGMENT_ALIGN and
DATA_SEGMENT_RELRO_END.
2. ld failed to adjust LOAD segment to generate GNU_RELRO segment
when LOAD segment doesn't fit GNU_RELRO segment.  This is

https://sourceware.org/bugzilla/show_bug.cgi?id=14207

We "fixed" ld by not generating GNU_RELRO segment.  This patch
adjusts LOAD segment to generate GNU_RELRO segment.  It fixes
PR ld/16322 and at the same time it also fixes PR binutils/16323
since now we can adjust LOAD segment if it is too small.

bfd/

	PR ld/14207
	PR ld/16322
	PR binutils/16323
	* elf.c (_bfd_elf_map_sections_to_segments): Don't check section
	size for PT_GNU_RELRO segment.
	(assign_file_positions_for_load_sections): If PT_LOAD segment
	doesn't fit PT_GNU_RELRO segment, adjust its p_filesz and p_memsz.

ld/

	PR ld/14207
	PR ld/16322
	PR binutils/16323
	* ldlang.c (lang_size_sections): Properly align RELRO base.

ld/testsuite/

	PR ld/14207
	PR ld/16322
	PR binutils/16323
	* ld-elf/pr16322.d: New file.
	* ld-elf/pr16322.s: Likewise.

	* ld-x86-64/pr14207.d: Expect PT_GNU_RELRO segment.
2014-01-08 05:57:21 -08:00
H.J. Lu 5fb776a637 New Year - binutils ChangeLog rotation 2014-01-08 05:32:12 -08:00
Alan Modra 4cfc109c65 daily update 2014-01-08 09:30:55 +10:30
Tom Tromey 1651e569b4 remove VA_* from binutils
This removes the last uses of the obsolete VA_* macros from binutils.

All the binutils and bfd changes were tested by rebuilding.
I didn't rebuild the gas change but I think it is obviously correct.

2014-01-07  Tom Tromey  <tromey@redhat.com>

	* elf32-xtensa.c (vsprint_msg): Don't use old VA_* compatibility
	wrappers.

2014-01-07  Tom Tromey  <tromey@redhat.com>

	* bucomm.c (fatal, non_fatal): Replace obsolete VA_* macros with
	stdarg macros.
	* dlltool.c (inform): Replace obsolete VA_* macros with stdarg
	macros.
	* dllwrap.c (inform, warn): Replace obsolete VA_* macros with
	stdarg macros.

2014-01-07  Tom Tromey  <tromey@redhat.com>

	* config/tc-tic30.c (debug): Avoid old VA_* compatibility
	wrappers.
2014-01-07 09:17:05 -07:00
Alan Modra 8318830739 daily update 2014-01-07 09:30:48 +10:30
Alan Modra 31e44d0a8b daily update 2014-01-06 09:30:37 +10:30
Alan Modra e4200acceb daily update 2014-01-05 09:30:39 +10:30
Alan Modra c33b7c1e2e daily update 2014-01-04 09:30:51 +10:30
Nick Clifton dc9155b24f PR binutils/16199
* elf.c (vma_page_aligned_bias): Handle a maxpagesize value of
	zero.
2014-01-03 14:16:17 +00:00
Alan Modra 8cc4c22675 daily update 2014-01-03 09:30:40 +10:30
Nick Clifton dd8dfa392b Update name in changelog entry. 2014-01-02 14:55:02 +00:00
Asmwarrior 044387affb PR binutils/14289
* pef.c (bfd_pef_xlib_read_header): Increase buffer size to 80.
2014-01-02 14:30:18 +00:00
Nick Clifton 1be5090bca PR binutils/11983
* archive.c (_bfd_get_elt_at_filepos): Store a copy of the
	filename in the bfd's filename field.
	* elfcode.h (bfd_from_remote_memory): Likewise.
	* ieee.c (ieee_object_p): Likewise.
	* mach-o.c (bfd_mach_o_fat_member_init): Likewise.
	* oasys.c (oasys_openr_next_archived_file): Likewise.
	* vms-lib.c (_bfd_vms_lib_get_module): Likewise.
	* opncls.c (bfd_fopen): Likewise.
	(bfd_openstreamr): Likewise.
	(bfd_openr_iovec): Likewise.
	(bfd_openw): Likewise.
	(bfd_create): Likewise.
	(_bfd_delete_bfd): Free filename.
2014-01-02 12:14:37 +00:00
Alan Modra e2359dfd4d daily update 2014-01-02 09:30:37 +10:30
Alan Modra 1cff1293e6 daily update 2014-01-01 09:30:40 +10:30
Alan Modra 4023334654 daily update 2013-12-31 09:30:37 +10:30
Ilya Tocar 1f93a6d6f3 * peXXigen.c (rsrc_process_section): Use ptrdiff_t as the type for
pointer arithmetic.
2013-12-30 15:28:41 +00:00
Alan Modra 46f2883cdf daily update 2013-12-29 09:30:39 +10:30
Alan Modra 3f983adec9 daily update 2013-12-28 09:30:46 +10:30
Alan Modra 6994b6125f daily update 2013-12-27 09:30:38 +10:30
Alan Modra 9c9c3ba707 daily update 2013-12-26 09:30:38 +10:30
Alan Modra b36c3d77cb daily update 2013-12-25 09:30:38 +10:30