diff options
author | Alan Modra <amodra@bigpond.net.au> | 2009-12-03 08:31:28 +0000 |
---|---|---|
committer | Alan Modra <amodra@bigpond.net.au> | 2009-12-03 08:31:28 +0000 |
commit | 9322f582cead1bc706207a0e5c5434ddefaae8dd (patch) | |
tree | 7eb78e1bca38b5e0f6ab853750e813aeedf3231c /bfd/elf32-ppc.c | |
parent | b5d92ab1a147c77edebac22866e5c9244984ff52 (diff) | |
download | binutils-redhat-9322f582cead1bc706207a0e5c5434ddefaae8dd.tar.gz |
PR ld/11047
* elf32-ppc.c (ppc_elf_relocate_section): Delete __tls_get_addr
symbol reference from relocs belonging to calls that are
optimized away.
* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
Diffstat (limited to 'bfd/elf32-ppc.c')
-rw-r--r-- | bfd/elf32-ppc.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c index e4fdc1ea23..976dd3700d 100644 --- a/bfd/elf32-ppc.c +++ b/bfd/elf32-ppc.c @@ -6929,9 +6929,7 @@ ppc_elf_relocate_section (bfd *output_bfd, insn1 |= 32 << 26; /* lwz */ if (offset != (bfd_vma) -1) { - rel[1].r_info - = ELF32_R_INFO (ELF32_R_SYM (rel[1].r_info), - R_PPC_NONE); + rel[1].r_info = ELF32_R_INFO (STN_UNDEF, R_PPC_NONE); insn2 = 0x7c631214; /* add 3,3,2 */ bfd_put_32 (output_bfd, insn2, contents + offset); } @@ -7005,8 +7003,7 @@ ppc_elf_relocate_section (bfd *output_bfd, bfd_put_32 (output_bfd, insn2, contents + offset); /* Zap the reloc on the _tls_get_addr call too. */ BFD_ASSERT (offset == rel[1].r_offset); - rel[1].r_info = ELF32_R_INFO (ELF32_R_SYM (rel[1].r_info), - R_PPC_NONE); + rel[1].r_info = ELF32_R_INFO (STN_UNDEF, R_PPC_NONE); } break; @@ -7035,8 +7032,7 @@ ppc_elf_relocate_section (bfd *output_bfd, contents + rel->r_offset - d_offset); /* Zap the reloc on the _tls_get_addr call too. */ BFD_ASSERT (rel->r_offset - d_offset == rel[1].r_offset); - rel[1].r_info = ELF32_R_INFO (ELF32_R_SYM (rel[1].r_info), - R_PPC_NONE); + rel[1].r_info = ELF32_R_INFO (STN_UNDEF, R_PPC_NONE); rel--; continue; } |