patches/binutils/2.19.1/100-ppc64-pie.patch
author Darcy Watkins <dwatkins@tranzeo.com>
Thu Aug 05 18:19:07 2010 +0200 (2010-08-05)
branch1.8
changeset 2073 a3b7a63dce01
permissions -rw-r--r--
cc/gcc: with static ppl, correctly link with libm

On some Fedora boxen (at least FC13), it is also required
to link with libm when static ppl is used.
(transplanted from bcd33fce4db9c18223b59ecdc96f10bf6dd574de)
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,