* aoutx.h (aout_link_check_ar_symbols): Correct test for whether
authorIan Lance Taylor <ian@airs.com>
Sat, 5 Feb 1994 06:17:36 +0000 (06:17 +0000)
committerIan Lance Taylor <ian@airs.com>
Sat, 5 Feb 1994 06:17:36 +0000 (06:17 +0000)
object file defines symbol.  Also, if skipping a symbol, skip the
second symbol of a N_WARNING or N_INDR symbol as well.

bfd/ChangeLog
bfd/aoutx.h

index c1d46791652b6cacb56198f42a0bd353831f8749..fb6787c32350d12a803d98dc42c7cdc960bea44c 100644 (file)
@@ -1,3 +1,9 @@
+Sat Feb  5 01:14:38 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
+
+       * aoutx.h (aout_link_check_ar_symbols): Correct test for whether
+       object file defines symbol.  Also, if skipping a symbol, skip the
+       second symbol of a N_WARNING or N_INDR symbol as well.
+
 Fri Feb  4 23:55:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
 
        Add basic support for writing RS/6000 XCOFF files.
index 861ebb98c1eb857399128a54ff7f0985099cb49b..bff9b2bb568dcfa12a8626900e517dacc382b178 100644 (file)
@@ -3035,7 +3035,12 @@ aout_link_check_ar_symbols (abfd, info, pneeded)
 
       /* Ignore symbols that are not externally visible.  */
       if ((type & N_EXT) == 0)
-       continue;
+       {
+         if (type == N_WARNING
+             || type == N_INDR)
+           ++p;
+         continue;
+       }
 
       name = strings + GET_WORD (abfd, p->e_strx);
       h = bfd_link_hash_lookup (info->hash, name, false, false, true);
@@ -3045,9 +3050,17 @@ aout_link_check_ar_symbols (abfd, info, pneeded)
       if (h == (struct bfd_link_hash_entry *) NULL
          || (h->type != bfd_link_hash_undefined
              && h->type != bfd_link_hash_common))
-       continue;
+       {
+         if (type == (N_INDR | N_EXT))
+           ++p;
+         continue;
+       }
 
-      if ((type & (N_TEXT | N_DATA | N_BSS)) != 0)
+      if (type == (N_TEXT | N_EXT)
+         || type == (N_DATA | N_EXT)
+         || type == (N_BSS | N_EXT)
+         || type == (N_ABS | N_EXT)
+         || type == (N_INDR | N_EXT))
        {
          /* This object file defines this symbol.  We must link it
             in.  This is true regardless of whether the current
@@ -3064,7 +3077,7 @@ aout_link_check_ar_symbols (abfd, info, pneeded)
          return true;
        }
 
-      if (type == (N_EXT | N_UNDF))
+      if (type == (N_UNDF | N_EXT))
        {
          bfd_vma value;