* elf32-rl78.c (rl78_elf_finish_dynamic_sections): Onlly run
authorNick Clifton <nickc@redhat.com>
Tue, 11 Jun 2013 07:21:40 +0000 (07:21 +0000)
committerNick Clifton <nickc@redhat.com>
Tue, 11 Jun 2013 07:21:40 +0000 (07:21 +0000)
checks if the dynamic sections have been created and relaxation
has not been performed.

bfd/ChangeLog
bfd/elf32-rl78.c

index baff0959443e5114088d91b9c035a252b5d95866..cfe54f93f6232d9be98771d20b94898307722797 100644 (file)
@@ -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.
index 11d1ecc74571020d06573b4c3c1ab04430ce6247..fb31176da04431ea6bbd7620519f45621a8a4644 100644 (file)
@@ -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);
        }
     }