+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.
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;
- }
+ }
}