From 6d78d0b92e4cb8284544af89e9ca3452e46a0bd1 Mon Sep 17 00:00:00 2001
From: Alan Modra <amodra@gmail.com>
Date: Fri, 19 Jun 2009 03:30:45 +0000
Subject: [PATCH] 	* elf32-ppc.c (ppc_elf_check_relocs): Allow local
 symbols for 	R_PPC_PLTREL24 relocs. 	(ppc_elf_relocate_section): Likewise.

---
 bfd/ChangeLog   | 6 ++++++
 bfd/elf32-ppc.c | 7 ++++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 612256a3172..f959b450f55 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+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
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.  */
 	  {
-- 
GitLab