aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2013-06-11 07:21:40 +0000
committerNick Clifton <nickc@redhat.com>2013-06-11 07:21:40 +0000
commit47fc0f1f211b925f68e4bb8d34b5df5479fd5596 (patch)
treeebbf5378ead1d577794dc6456d8c4a670e0c3987
parentc933105541d0de4b62c635755fed568582ceeacc (diff)
downloadgdb-47fc0f1f211b925f68e4bb8d34b5df5479fd5596.zip
gdb-47fc0f1f211b925f68e4bb8d34b5df5479fd5596.tar.gz
gdb-47fc0f1f211b925f68e4bb8d34b5df5479fd5596.tar.bz2
* elf32-rl78.c (rl78_elf_finish_dynamic_sections): Onlly run
checks if the dynamic sections have been created and relaxation has not been performed.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/elf32-rl78.c24
2 files changed, 20 insertions, 10 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index baff095..cfe54f9 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2013-06-11 Nick Clifton <nickc@redhat.com>
+
+ * elf32-rl78.c (rl78_elf_finish_dynamic_sections): Onlly run
+ checks if the dynamic sections have been created and relaxation
+ has not been performed.
+
2013-06-07 Will Newton <will.newton@linaro.org>
* configure: Regenerate.
diff --git a/bfd/elf32-rl78.c b/bfd/elf32-rl78.c
index 11d1ecc..fb31176 100644
--- a/bfd/elf32-rl78.c
+++ b/bfd/elf32-rl78.c
@@ -1270,24 +1270,28 @@ rl78_elf_finish_dynamic_sections (bfd *abfd ATTRIBUTE_UNUSED,
bfd *dynobj;
asection *splt;
+ if (!elf_hash_table (info)->dynamic_sections_created)
+ return TRUE;
+
/* As an extra sanity check, verify that all plt entries have been
filled in. However, relaxing might have changed the relocs so
that some plt entries don't get filled in, so we have to skip
this check if we're relaxing. Unfortunately, check_relocs is
called before relaxation. */
- if (info->relax_trip > 0)
+ if (info->relax_trip > 0)
+ return TRUE;
+
+ if ((dynobj = elf_hash_table (info)->dynobj) != NULL
+ && (splt = bfd_get_linker_section (dynobj, ".plt")) != NULL)
{
- if ((dynobj = elf_hash_table (info)->dynobj) != NULL
- && (splt = bfd_get_linker_section (dynobj, ".plt")) != NULL)
+ bfd_byte *contents = splt->contents;
+ unsigned int i, size = splt->size;
+
+ for (i = 0; i < size; i += 4)
{
- bfd_byte *contents = splt->contents;
- unsigned int i, size = splt->size;
- for (i = 0; i < size; i += 4)
- {
- unsigned int x = bfd_get_32 (dynobj, contents + i);
- BFD_ASSERT (x != 0);
- }
+ unsigned int x = bfd_get_32 (dynobj, contents + i);
+ BFD_ASSERT (x != 0);
}
}