aboutsummaryrefslogtreecommitdiff
path: root/bfd/section.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>1999-06-07 23:22:00 +0000
committerRichard Henderson <rth@redhat.com>1999-06-07 23:22:00 +0000
commit9d7428a9e33ee7fc2baa10004e7ef2e01c4691f0 (patch)
tree4a4f2893b8f1006ac0524305ea86ecda8f12d22c /bfd/section.c
parentcce74817d9cdf9bdc375a599565105d78e07d167 (diff)
downloadgdb-9d7428a9e33ee7fc2baa10004e7ef2e01c4691f0.zip
gdb-9d7428a9e33ee7fc2baa10004e7ef2e01c4691f0.tar.gz
gdb-9d7428a9e33ee7fc2baa10004e7ef2e01c4691f0.tar.bz2
* section.c (_bfd_strip_section_from_output): Remove output
sections with no initial link_order.
Diffstat (limited to 'bfd/section.c')
-rw-r--r--bfd/section.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/bfd/section.c b/bfd/section.c
index 18778b5..da4c4bc 100644
--- a/bfd/section.c
+++ b/bfd/section.c
@@ -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;
- }
+ }
}