diff options
author | Richard Henderson <rth@redhat.com> | 1999-06-07 23:22:00 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 1999-06-07 23:22:00 +0000 |
commit | 9d7428a9e33ee7fc2baa10004e7ef2e01c4691f0 (patch) | |
tree | 4a4f2893b8f1006ac0524305ea86ecda8f12d22c /bfd/section.c | |
parent | cce74817d9cdf9bdc375a599565105d78e07d167 (diff) | |
download | fsf-binutils-gdb-9d7428a9e33ee7fc2baa10004e7ef2e01c4691f0.zip fsf-binutils-gdb-9d7428a9e33ee7fc2baa10004e7ef2e01c4691f0.tar.gz fsf-binutils-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.c | 24 |
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; - } + } } |