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 | |
parent | cce74817d9cdf9bdc375a599565105d78e07d167 (diff) | |
download | gdb-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')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/section.c | 24 |
2 files changed, 17 insertions, 12 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3d69c29..e5fd81d 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -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. 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; - } + } } |