summaryrefslogtreecommitdiff
path: root/bfd/archive.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/archive.c')
-rw-r--r--bfd/archive.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/bfd/archive.c b/bfd/archive.c
index 19293af4573..3390a1c2635 100644
--- a/bfd/archive.c
+++ b/bfd/archive.c
@@ -1804,16 +1804,19 @@ _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 ((flags & BSF_GLOBAL ||
- flags & BSF_WEAK ||
- flags & BSF_INDIRECT ||
- bfd_is_com_section (sec))
- && ! bfd_is_und_section (sec))
+ if (bfd_is_und_section (sec))
+ continue;
+ else if (bfd_is_com_section (sec))
{
- size_t namelen;
- struct orl *new_map;
-
+ if (! bfd_allow_commons_in_armap (arch))
+ continue;
+ }
+ else if ((flags & (BSF_GLOBAL | BSF_WEAK | BSF_INDIRECT)) == 0)
+ continue;
+
/* This symbol will go into the archive header */
if (orl_count == orl_max)
{
@@ -1842,7 +1845,6 @@ _bfd_compute_and_write_armap (arch, elength)
stridx += namelen + 1;
++orl_count;
- }
}
}