diff options
Diffstat (limited to 'bfd/archive.c')
-rw-r--r-- | bfd/archive.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/bfd/archive.c b/bfd/archive.c index 3390a1c..19293af 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -1804,19 +1804,16 @@ _bfd_compute_and_write_armap (arch, elength) { flagword flags = (syms[src_count])->flags; asection *sec = syms[src_count]->section; - size_t namelen; - struct orl *new_map; - if (bfd_is_und_section (sec)) - continue; - else if (bfd_is_com_section (sec)) + if ((flags & BSF_GLOBAL || + flags & BSF_WEAK || + flags & BSF_INDIRECT || + bfd_is_com_section (sec)) + && ! bfd_is_und_section (sec)) { - if (! bfd_allow_commons_in_armap (arch)) - continue; - } - else if ((flags & (BSF_GLOBAL | BSF_WEAK | BSF_INDIRECT)) == 0) - continue; - + size_t namelen; + struct orl *new_map; + /* This symbol will go into the archive header */ if (orl_count == orl_max) { @@ -1845,6 +1842,7 @@ _bfd_compute_and_write_armap (arch, elength) stridx += namelen + 1; ++orl_count; + } } } |