* xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Do the regular
authorIan Lance Taylor <ian@airs.com>
Tue, 30 Jul 1996 17:39:33 +0000 (17:39 +0000)
committerIan Lance Taylor <ian@airs.com>
Tue, 30 Jul 1996 17:39:33 +0000 (17:39 +0000)
archive search before looking for stripped dynamic objects.
PR 10187.

bfd/ChangeLog
bfd/xcofflink.c

index 056c529..7820db9 100644 (file)
@@ -1,3 +1,8 @@
+Tue Jul 30 13:31:27 1996  Ian Lance Taylor  <ian@cygnus.com>
+
+       * xcofflink.c (_bfd_xcoff_bfd_link_add_symbols): Do the regular
+       archive search before looking for stripped dynamic objects.
+
 Fri Jul 26 17:51:39 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * xcofflink.c (xcoff_build_ldsyms): Make exporting an undefined
index 9a52a9c..a568043 100644 (file)
@@ -1061,12 +1061,21 @@ _bfd_xcoff_bfd_link_add_symbols (abfd, info)
     {
     case bfd_object:
       return xcoff_link_add_object_symbols (abfd, info);
+
     case bfd_archive:
-      /* We need to look through the archive for stripped dynamic
-         objects, because they will not appear in the archive map even
-         though they should, perhaps, be included.  Also, if the
-         linker has no map, we just consider each object file in turn,
-         since that apparently is what the AIX native linker does.  */
+      /* If the archive has a map, do the usual search.  We then need
+         to check the archive for stripped dynamic objects, because
+         they will not appear in the archive map even though they
+         should, perhaps, be included.  If the archive has no map, we
+         just consider each object file in turn, since that apparently
+         is what the AIX native linker does.  */
+      if (bfd_has_map (abfd))
+       {
+         if (! (_bfd_generic_link_add_archive_symbols
+                (abfd, info, xcoff_link_check_archive_element)))
+           return false;
+       }
+
       {
        bfd *member;
 
@@ -1087,15 +1096,10 @@ _bfd_xcoff_bfd_link_add_symbols (abfd, info)
              }
            member = bfd_openr_next_archived_file (abfd, member);
          }
-
-       if (! bfd_has_map (abfd))
-         return true;
-
-       /* Now do the usual search.  */
-       return (_bfd_generic_link_add_archive_symbols
-               (abfd, info, xcoff_link_check_archive_element));
       }
 
+      return true;
+
     default:
       bfd_set_error (bfd_error_wrong_format);
       return false;