* elf64-ppc.c (ppc64_elf_relocate_section): Nop out optimized
authorAlan Modra <amodra@gmail.com>
Wed, 31 Mar 2010 07:53:40 +0000 (07:53 +0000)
committerAlan Modra <amodra@gmail.com>
Wed, 31 Mar 2010 07:53:40 +0000 (07:53 +0000)
TPREL16_HI and TPREL16_HA insns.

bfd/ChangeLog
bfd/elf64-ppc.c

index bdefe2a7a73a3da59d6ffd9eb4b120ad68c16730..172726c66acdbdaf804ffa5ac307a24f8f3849d4 100644 (file)
@@ -1,3 +1,8 @@
+2010-03-31  Alan Modra  <amodra@gmail.com>
+
+       * elf64-ppc.c (ppc64_elf_relocate_section): Nop out optimized
+       TPREL16_HI and TPREL16_HA insns.
+
 2010-03-31  Hans-Peter Nilsson  <hp@axis.com>
 
        PR ld/11458
index 306c15e97a2cddc5ec7c7168c19e19b075e6b6bf..3259e2e719856f6fed14b849162af313cb227bcf 100644 (file)
@@ -11569,6 +11569,18 @@ ppc64_elf_relocate_section (bfd *output_bfd,
          }
          break;
 
+       case R_PPC64_GOT_TPREL16_HI:
+       case R_PPC64_GOT_TPREL16_HA:
+         if (tls_mask != 0
+             && (tls_mask & TLS_TPREL) == 0)
+           {
+             rel->r_offset -= d_offset;
+             bfd_put_32 (output_bfd, NOP, contents + rel->r_offset);
+             r_type = R_PPC64_NONE;
+             rel->r_info = ELF64_R_INFO (r_symndx, r_type);
+           }
+         break;
+
        case R_PPC64_GOT_TPREL16_DS:
        case R_PPC64_GOT_TPREL16_LO_DS:
          if (tls_mask != 0