* section.c (_bfd_strip_section_from_output): Remove output
authorRichard Henderson <rth@redhat.com>
Mon, 7 Jun 1999 23:22:00 +0000 (23:22 +0000)
committerRichard Henderson <rth@redhat.com>
Mon, 7 Jun 1999 23:22:00 +0000 (23:22 +0000)
        sections with no initial link_order.

bfd/ChangeLog
bfd/section.c

index 3d69c295c5c6f4ba5b60037ca5eadd4d815f6a45..e5fd81d2ac29e14fccf82b16e35741fe9a373f74 100644 (file)
@@ -1,3 +1,8 @@
+1999-06-07  Richard Henderson  <rth@cygnus.com>
+
+       * section.c (_bfd_strip_section_from_output): Remove output
+       sections with no initial link_order.
+
 1999-06-07  Nick Clifton  <nickc@cygnus.com>
 
        * elf32-m88k.c (ELF_MAXPAGESIZE): Define.
index 18778b5362feab3c98b8cec3681b7be682f1c82f..da4c4bcba86ab2c81c76b113b4117ba25574c9e4 100644 (file)
@@ -1046,30 +1046,30 @@ _bfd_strip_section_from_output (s)
   asection **spp, *os;
   struct bfd_link_order *p, *pp;
 
+  /* Excise the input section from the link order.  */
   os = s->output_section;
   for (p = os->link_order_head, pp = NULL; p != NULL; pp = p, p = p->next)
     if (p->type == bfd_indirect_link_order
        && p->u.indirect.section == s)
       {
-       /* Excise the input section.  */
        if (pp)
          pp->next = p->next;
        else
          os->link_order_head = p->next;
        if (!p->next)
          os->link_order_tail = pp;
+       break;
+      }
 
-       if (!os->link_order_head)
+  /* If the output section is empty, remove it too.  */
+  if (!os->link_order_head)
+    {
+      for (spp = &os->owner->sections; *spp; spp = &(*spp)->next)
+       if (*spp == os)
          {
-           /* Excise the output section.  */
-           for (spp = &os->owner->sections; *spp; spp = &(*spp)->next)
-             if (*spp == os)
-               {
-                 *spp = os->next;
-                 os->owner->section_count--;
-                 break;
-               }
+           *spp = os->next;
+           os->owner->section_count--;
+           break;
          }
-       break;
-      }
+    }
 }