summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2008-11-19 09:25:56 +0000
committerNick Clifton <nickc@redhat.com>2008-11-19 09:25:56 +0000
commitbad20834f8d4b6dfd0253d2f2d3158c2c00da48e (patch)
tree89ea2e807cd1d65a4bc2cad62e1749ec06d1cb8a
parent9463d9b23ca12aef7419bf30ae127c6cb318c2b7 (diff)
downloadgdb-bad20834f8d4b6dfd0253d2f2d3158c2c00da48e.tar.gz
PR 7027
* elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Treat WPLT30 relocs against local symbols in 64-bit binaries as if they were WDISP30 relocs. (_bfd_sparc_elf_relocate_section): Likewise.
-rw-r--r--bfd/ChangeLog8
-rw-r--r--bfd/elfxx-sparc.c6
2 files changed, 14 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index bc225558e0d..dfbf47ac384 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,11 @@
+2008-11-19 Nick Clifton <nickc@redhat.com>
+
+ PR 7027
+ * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Treat WPLT30 relocs
+ against local symbols in 64-bit binaries as if they were WDISP30
+ relocs.
+ (_bfd_sparc_elf_relocate_section): Likewise.
+
2008-11-18 Catherine Moore <clm@codesourcery.com>
* elf32-arm.c (elf32_arm_merge_eabi_attributes): Merge
diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
index 7b815557ff0..83d26b0b925 100644
--- a/bfd/elfxx-sparc.c
+++ b/bfd/elfxx-sparc.c
@@ -1329,6 +1329,9 @@ _bfd_sparc_elf_check_relocs (bfd *abfd, struct bfd_link_info *info,
goto r_sparc_plt32;
break;
}
+ /* PR 7027: We need similar behaviour for 64-bit binaries. */
+ else if (r_type == R_SPARC_WPLT30)
+ break;
/* It does not make sense to have a procedure linkage
table entry for a local symbol. */
@@ -2760,6 +2763,9 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd,
if (h == NULL)
break;
}
+ /* PR 7027: We need similar behaviour for 64-bit binaries. */
+ else if (r_type == R_SPARC_WPLT30 && h == NULL)
+ break;
else
{
BFD_ASSERT (h != NULL);