patches/binutils/2.19.1a/100-ppc64-pie.patch
author "Yann E. MORIN" <yann.morin.1998@free.fr>
Mon Feb 13 21:47:25 2012 +0100 (2012-02-13)
changeset 2883 cea814c9932a
parent 1243 5d15872659ec
permissions -rw-r--r--
libc/glibc: do not consume parameters when parsing them

Currently, there are two constructs used to parse arguments in
glibc backends, one that consumes args as they are parsed, and
one that does not.

Always use the construct that does not eat args as they are parsed.

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