summaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2009-06-19 03:30:45 +0000
committerAlan Modra <amodra@gmail.com>2009-06-19 03:30:45 +0000
commit6d78d0b92e4cb8284544af89e9ca3452e46a0bd1 (patch)
tree3e7bcb574fac5fc88da4f763c880f418b38706c9 /bfd
parent3ec01793a5270f58f4cdb69e6713e9202f61450f (diff)
downloadbinutils-gdb-6d78d0b92e4cb8284544af89e9ca3452e46a0bd1.tar.gz
* elf32-ppc.c (ppc_elf_check_relocs): Allow local symbols for
R_PPC_PLTREL24 relocs. (ppc_elf_relocate_section): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf32-ppc.c7
2 files changed, 12 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 612256a3172..f959b450f55 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,11 @@
2009-06-19 Alan Modra <amodra@bigpond.net.au>
+ * elf32-ppc.c (ppc_elf_check_relocs): Allow local symbols for
+ R_PPC_PLTREL24 relocs.
+ (ppc_elf_relocate_section): Likewise.
+
+2009-06-19 Alan Modra <amodra@bigpond.net.au>
+
* elf32-ppc.c (find_plt_ent): Pass pointer to plist rather than
pointer to sym hash. Update all uses.
(update_plt_info): Likewise. Don't check addend here.
diff --git a/bfd/elf32-ppc.c b/bfd/elf32-ppc.c
index 01e4359f20d..7aafbebf843 100644
--- a/bfd/elf32-ppc.c
+++ b/bfd/elf32-ppc.c
@@ -3570,8 +3570,11 @@ ppc_elf_check_relocs (bfd *abfd,
h->non_got_ref = TRUE;
break;
- case R_PPC_PLT32:
case R_PPC_PLTREL24:
+ if (h == NULL)
+ break;
+ /* Fall through */
+ case R_PPC_PLT32:
case R_PPC_PLTREL32:
case R_PPC_PLT16_LO:
case R_PPC_PLT16_HI:
@@ -7210,6 +7213,8 @@ ppc_elf_relocate_section (bfd *output_bfd,
break;
case R_PPC_PLTREL24:
+ if (h == NULL)
+ break;
/* Relocation is to the entry for this symbol in the
procedure linkage table. */
{