aboutsummaryrefslogtreecommitdiff
path: root/bfd/elf64-ppc.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2010-03-31 07:53:40 +0000
committerAlan Modra <amodra@gmail.com>2010-03-31 07:53:40 +0000
commit9d6ded02f6ff449048b89fcaa83792037a6d66a9 (patch)
treec1801dbed3d6b9ad432fdc4cc64fd72c8b0da99e /bfd/elf64-ppc.c
parentfd63344e356da161ac6262f865066e35fe2cd876 (diff)
downloadgdb-9d6ded02f6ff449048b89fcaa83792037a6d66a9.zip
gdb-9d6ded02f6ff449048b89fcaa83792037a6d66a9.tar.gz
gdb-9d6ded02f6ff449048b89fcaa83792037a6d66a9.tar.bz2
* elf64-ppc.c (ppc64_elf_relocate_section): Nop out optimized
TPREL16_HI and TPREL16_HA insns.
Diffstat (limited to 'bfd/elf64-ppc.c')
-rw-r--r--bfd/elf64-ppc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/bfd/elf64-ppc.c b/bfd/elf64-ppc.c
index 306c15e..3259e2e 100644
--- a/bfd/elf64-ppc.c
+++ b/bfd/elf64-ppc.c
@@ -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