patches/binutils/2.19.1a/100-ppc64-pie.patch
author Michael Hope <michael.hope@linaro.org>
Wed Oct 19 15:27:32 2011 +1300 (2011-10-19)
changeset 2739 f320e22f2cba
parent 1243 5d15872659ec
permissions -rw-r--r--
arch: add softfp support

Some architectures support a mixed hard/soft floating point, where
the compiler emits hardware floating point instructions, but passes
the operands in core (aka integer) registers.

For example, ARM supports this mode (to come in the next changeset).

Add support for softfp cross compilers to the GCC and GLIBC
configuration. Needed for Ubuntu and other distros that are softfp.

Signed-off-by: Michael Hope <michael.hope@linaro.org>
[yann.morin.1998@anciens.enib.fr: split the original patch]
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
yann@1243
     1
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.19/100-ppc64-pie.patch
yann@1243
     2
yann@1243
     3
-= BEGIN original header =-
yann@1243
     4
Original patch from Gentoo:
yann@1243
     5
gentoo/src/patchsets/binutils/2.19/03_all_binutils-2.15.92.0.2-ppc64-pie.patch
yann@1243
     6
yann@1243
     7
-= END original header =-
yann@1243
     8
yann@1243
     9
diff -durN binutils-2.19.1.orig/bfd/elf64-ppc.c binutils-2.19.1/bfd/elf64-ppc.c
yann@1243
    10
--- binutils-2.19.1.orig/bfd/elf64-ppc.c	2008-10-09 14:18:24.000000000 +0200
yann@1243
    11
+++ binutils-2.19.1/bfd/elf64-ppc.c	2009-03-08 11:56:59.000000000 +0100
yann@1243
    12
@@ -11294,7 +11294,12 @@
yann@1243
    13
 	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
yann@1243
    14
 		       && !is_opd
yann@1243
    15
 		       && r_type != R_PPC64_TOC)
yann@1243
    16
-		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
yann@1243
    17
+		{
yann@1243
    18
+		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
yann@1243
    19
+		  if (h->elf.dynindx == -1
yann@1243
    20
+		      && h->elf.root.type == bfd_link_hash_undefweak)
yann@1243
    21
+		  memset (&outrel, 0, sizeof outrel);
yann@1243
    22
+		}
yann@1243
    23
 	      else
yann@1243
    24
 		{
yann@1243
    25
 		  /* This symbol is local, or marked to become local,