$ ./xgcc -v
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../configure --enable-languages=c 
Thread model: posix
gcc version 4.5.0 20090901 (experimental) [trunk revision 151276] (GCC)

$ ./xgcc -B. -o
Segmentation fault

(gdb) bt
#0  0xb7f43613 in strlen () from /lib/tls/i686/cmov/libc.so.6
#1  0x08065b27 in xstrdup (s=0x0) at ../../libiberty/xstrdup.c:33
#2  0x0804f55e in process_command (argc=3, argv=0x9ff62b8)
    at ../../gcc/gcc.c:4164
#3  0x0805720f in main (argc=3, argv=0xbfe5d574) at ../../gcc/gcc.c:6823

Introduced by http://gcc.gnu.org/viewcvs?view=revision&revision=145470

Only happens in gcc 4.5.0.

Index: gcc.c
===================================================================
--- gcc.c       (revision 151276)
+++ gcc.c       (working copy)
@@ -4161,7 +4161,10 @@
                argv[i] = convert_filename (argv[i], ! have_c, 0);
 #endif
              /* Save the output name in case -save-temps=obj was used.  */
-             save_temps_prefix = xstrdup ((p[1] == 0) ? argv[i + 1] : argv[i]
+ 1);
+             if ((p[1] == 0) &&  argv[i + 1])
+               save_temps_prefix = xstrdup(argv[i + 1]);
+              else
+               save_temps_prefix = xstrdup(argv[i] + 1);
              goto normal_switch;

            default:


-- 
           Summary: Driver crashes if -o specified without filename
           Product: gcc
           Version: 4.5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: driver
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rmansfield at qnx dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41217

Reply via email to