collect2.c (main): Set COLLECT_NO_DEMANGLE for subprocesses.
authorJason Merrill <jason@redhat.com>
Tue, 10 Jul 2001 15:39:29 +0000 (11:39 -0400)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 10 Jul 2001 15:39:29 +0000 (11:39 -0400)
        * collect2.c (main): Set COLLECT_NO_DEMANGLE for subprocesses.
        (dump_file): Only pad the demangled name with spaces if the
        mangled name was padded with spaces.

From-SVN: r43903

gcc/ChangeLog
gcc/collect2.c

index 02a6f61c1858524be14e1402ddd3c36cb30b9f66..e408ec4e914d1db58e19cd4610201561b1702a33 100644 (file)
@@ -1,3 +1,9 @@
+2001-07-10  Jason Merrill  <jason_merrill@redhat.com>
+
+       * collect2.c (main): Set COLLECT_NO_DEMANGLE for subprocesses.
+       (dump_file): Only pad the demangled name with spaces if the 
+       mangled name was padded with spaces.
+
 2001-07-10  Bernd Schmidt  <bernds@redhat.com>
 
        * bb-reorder.c (make_reorder_chain_1): Correct branch/fallthru
index 83ed200da4f1b371af24a1255d82249f2b5da04e..1239b9837564a7e6b13c9646b123de9ec3970a18 100644 (file)
@@ -163,6 +163,10 @@ int do_collecting = 1;
 #else
 int do_collecting = 0;
 #endif
+
+/* Nonzero if we should suppress the automatic demangling of identifiers
+   in linker error messages.  Set from COLLECT_NO_DEMANGLE.  */
+int no_demangle;
 \f
 /* Linked lists of constructor and destructor names.  */
 
@@ -522,7 +526,6 @@ dump_file (name)
      const char *name;
 {
   FILE *stream = fopen (name, "r");
-  int no_demangle = !! getenv ("COLLECT_NO_DEMANGLE");
 
   if (stream == 0)
     return;
@@ -556,7 +559,7 @@ dump_file (name)
              fputs (result, stderr);
 
              diff = strlen (word) - strlen (result);
-             while (diff > 0)
+             while (diff > 0 && c == ' ')
                --diff, putc (' ', stderr);
              while (diff < 0 && c == ' ')
                ++diff, c = getc (stream);
@@ -858,6 +861,11 @@ main (argc, argv)
   int first_file;
   int num_c_args       = argc+9;
 
+  no_demangle = !! getenv ("COLLECT_NO_DEMANGLE");
+
+  /* Suppress demangling by the real linker, which may be broken.  */
+  putenv (xstrdup ("COLLECT_NO_DEMANGLE="));
+
 #if defined (COLLECT2_HOST_INITIALIZATION)
   /* Perform system dependent initialization, if neccessary.  */
   COLLECT2_HOST_INITIALIZATION;