aboutsummaryrefslogtreecommitdiff
path: root/bfd/elfxx-sparc.c
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2006-02-01 22:03:38 +0000
committerEric Botcazou <ebotcazou@libertysurf.fr>2006-02-01 22:03:38 +0000
commitbb29dfeaa618b52a7f5c785ce1b816983b1d11ee (patch)
tree11ede7ccfe07758162048a9cda899379f561a8e2 /bfd/elfxx-sparc.c
parentdd24457ddffffda0617dda1beb6f21cf6bd87901 (diff)
downloadgdb-bb29dfeaa618b52a7f5c785ce1b816983b1d11ee.zip
gdb-bb29dfeaa618b52a7f5c785ce1b816983b1d11ee.tar.gz
gdb-bb29dfeaa618b52a7f5c785ce1b816983b1d11ee.tar.bz2
* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Reinstate bypass
for call-to-undefweak reloc overflow.
Diffstat (limited to 'bfd/elfxx-sparc.c')
-rw-r--r--bfd/elfxx-sparc.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/bfd/elfxx-sparc.c b/bfd/elfxx-sparc.c
index 5e8fb20..802206f 100644
--- a/bfd/elfxx-sparc.c
+++ b/bfd/elfxx-sparc.c
@@ -3373,7 +3373,18 @@ _bfd_sparc_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
break;
if (h != NULL)
- name = NULL;
+ {
+ /* Assume this is a call protected by other code that
+ detect the symbol is undefined. If this is the case,
+ we can safely ignore the overflow. If not, the
+ program is hosed anyway, and a little warning isn't
+ going to help. */
+ if (h->root.type == bfd_link_hash_undefweak
+ && howto->pc_relative)
+ break;
+
+ name = NULL;
+ }
else
{
name = bfd_elf_string_from_elf_section (input_bfd,