summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2009-06-19 03:30:45 +0000
committerAlan Modra <amodra@bigpond.net.au>2009-06-19 03:30:45 +0000
commit9537a56e0368e3857240d8716295c0f70d85dadc (patch)
tree0320f4ae72a018b82d56b05ca1098b5ab2764921
parent6d141897e95bb6f4d56380ec57acb8304095585f (diff)
downloadgdb-9537a56e0368e3857240d8716295c0f70d85dadc.tar.gz
* elf32-ppc.c (ppc_elf_check_relocs): Allow local symbols for
R_PPC_PLTREL24 relocs. (ppc_elf_relocate_section): Likewise.
-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. */
{