patches/binutils/2.20/100-ppc64-pie.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Thu Dec 23 20:43:32 2010 +0100 (2010-12-23)
changeset 2307 2efd46963086
parent 1614 3f76cdbceb6e
permissions -rw-r--r--
buildtools: move to working directory

There is absolutely *no* reason for the buildtools (wrappers to gcc, g++,
as, ld... for the local machine) to be in the toolchain directory. Moreover,
they are removed after the build completes.

Move them out of the toolchain directory, and into the build directory (but
yet the part specific to the current toolchain). This means we no longer
need to explicitly remove them either, BTW, but we need to save/restore them
for the restart feature.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
fr@1621
     1
--- binutils/bfd/elf64-ppc.c.jj	2004-09-27 16:46:06.000000000 -0400
fr@1621
     2
+++ binutils/bfd/elf64-ppc.c	2004-10-04 09:09:50.000000000 -0400
yann@1614
     3
@@ -9681,7 +9681,12 @@ ppc64_elf_relocate_section (bfd *output_
yann@1614
     4
 	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
yann@1614
     5
 		       && !is_opd
yann@1614
     6
 		       && r_type != R_PPC64_TOC)
yann@1614
     7
-		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
yann@1614
     8
+		{
yann@1614
     9
+		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
yann@1614
    10
+		  if (h->elf.dynindx == -1
yann@1614
    11
+		      && h->elf.root.type == bfd_link_hash_undefweak)
yann@1614
    12
+		  memset (&outrel, 0, sizeof outrel);
yann@1614
    13
+		}
yann@1614
    14
 	      else
yann@1614
    15
 		{
yann@1614
    16
 		  /* This symbol is local, or marked to become local,