patches/binutils/2.20/100-ppc64-pie.patch
changeset 1614 3f76cdbceb6e
child 1621 60446d2e5660
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/patches/binutils/2.20/100-ppc64-pie.patch	Tue Oct 27 20:06:46 2009 +0100
     1.3 @@ -0,0 +1,16 @@
     1.4 +--- bfd/elf64-ppc.c.jj	2004-09-27 16:46:06.000000000 -0400
     1.5 ++++ bfd/elf64-ppc.c	2004-10-04 09:09:50.000000000 -0400
     1.6 +@@ -9681,7 +9681,12 @@ ppc64_elf_relocate_section (bfd *output_
     1.7 + 	      else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
     1.8 + 		       && !is_opd
     1.9 + 		       && r_type != R_PPC64_TOC)
    1.10 +-		outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
    1.11 ++		{
    1.12 ++		  outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
    1.13 ++		  if (h->elf.dynindx == -1
    1.14 ++		      && h->elf.root.type == bfd_link_hash_undefweak)
    1.15 ++		  memset (&outrel, 0, sizeof outrel);
    1.16 ++		}
    1.17 + 	      else
    1.18 + 		{
    1.19 + 		  /* This symbol is local, or marked to become local,