]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tlink.c (scan_linker_output): Recognize errors from irix 6.2 linker.
authorJason Merrill <jason@yorick.cygnus.com>
Sun, 4 Oct 1998 19:37:42 +0000 (19:37 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Sun, 4 Oct 1998 19:37:42 +0000 (15:37 -0400)
* tlink.c (scan_linker_output): Recognize errors from irix 6.2
linker.  Recognize mangled names in quotes.

Co-Authored-By: Scott Snyder <snyder@fnal.gov>
From-SVN: r22823

gcc/ChangeLog
gcc/tlink.c

index 0d2aef8a3af4a72fdd7f73b3bfada4883f756a82..8b04e882d092464d2805a9476f4671f3c1bc4410 100644 (file)
@@ -1,3 +1,9 @@
+Sun Oct  4 18:33:24 1998  Jason Merrill  <jason@yorick.cygnus.com>
+                         scott snyder  <snyder@d0sgif.fnal.gov>
+
+       * tlink.c (scan_linker_output): Recognize errors from irix 6.2
+       linker.  Recognize mangled names in quotes.
+
 Sun Oct  4 02:58:20 1998  Jakub Jelinek  <jj@sunsite.ms.mff.cuni.cz>
 
         * config/sparc/sparc.md (ashldi3+1): Name it ashldi3_sp64.
index d5fa00cb6687c3b12728c9e662dd90fbfabeda8b..a4c5b5311cdabbbb42805df909286017d0912784 100644 (file)
@@ -550,26 +550,29 @@ scan_linker_output (fname)
       sym = symbol_hash_lookup (p, false);
 
       if (! sym && ! end)
-       /* Try a mangled name in `quotes'.  */
+       /* Try a mangled name in quotes.  */
        {
+         char *oldq = q+1;
          demangled *dem = 0;
-         p = index (q+1, '`');
          q = 0;
 
-#define MUL "multiple definition of "
-#define UND "undefined reference to "
+         /* First try `GNU style'.  */
+         p = index (oldq, '`');
+         if (p)
+           p++, q = index (p, '\'');
+         /* Then try "double quotes".  */
+         else if (p = index (oldq, '"'), p)
+           p++, q = index (p, '"');
 
-         if (p && (p - line > sizeof (MUL)))
+         if (q)
            {
-             char *beg = p - sizeof (MUL) + 1;
-             *p = 0;
-             if (!strcmp (beg, MUL) || !strcmp (beg, UND))
-               p++, q = index (p, '\'');
+             *q = 0;
+             dem = demangled_hash_lookup (p, false);
+             if (dem)
+               sym = symbol_hash_lookup (dem->mangled, false);
+             else
+               sym = symbol_hash_lookup (p, false);
            }
-         if (q)
-           *q = 0, dem = demangled_hash_lookup (p, false);
-         if (dem)
-           sym = symbol_hash_lookup (dem->mangled, false);
        }
 
       if (sym && sym->tweaked)