From b3bf42d83b95779e9bd9df56982a6dbe39bf76c1 Mon Sep 17 00:00:00 2001 From: Hans-Peter Nilsson Date: Tue, 27 Jan 2009 06:07:54 +0000 Subject: [PATCH] * elf32-cris.c (cris_elf_relocate_section) : Don't call BFD_ASSERT for weak undefined symbols with non-default visibility. --- bfd/ChangeLog | 6 ++++++ bfd/elf32-cris.c | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 5873b1b320..99618693fd 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2009-01-27 Hans-Peter Nilsson + + * elf32-cris.c (cris_elf_relocate_section) + : Don't call BFD_ASSERT for weak undefined + symbols with non-default visibility. + 2009-01-26 Nathan Sidwell * elf32-ppc.c (ppc_elf_relax_section): Add space for relocs diff --git a/bfd/elf32-cris.c b/bfd/elf32-cris.c index 4b59d33e03..6b71ee47b9 100644 --- a/bfd/elf32-cris.c +++ b/bfd/elf32-cris.c @@ -1528,7 +1528,16 @@ cris_elf_relocate_section (output_bfd, info, input_bfd, input_section, rel->r_offset); if (outrel.r_offset == (bfd_vma) -1) skip = TRUE; - else if (outrel.r_offset == (bfd_vma) -2) + else if (outrel.r_offset == (bfd_vma) -2 + /* For now, undefined weak symbols with non-default + visibility (yielding 0), like exception info for + discarded sections, will get a R_CRIS_NONE + relocation rather than no relocation, because we + notice too late that the symbol doesn't need a + relocation. */ + || (h != NULL + && h->root.type == bfd_link_hash_undefweak + && ELF_ST_VISIBILITY (h->other) != STV_DEFAULT)) skip = TRUE, relocate = TRUE; outrel.r_offset += (input_section->output_section->vma + input_section->output_offset); -- 2.34.1