gcc -E -MD -o behaves differently in 3.0.4 than in 2.95.2.
Sergei Organov
osv@javad.ru
Thu Feb 14 06:42:00 GMT 2002
In gcc 2.95.2 both
gcc -E -MD file.c -o file.out
and
gcc -E file.c -o file.out
used to send preprocessor output to 'file.out'. With gcc 3.0.4 (from
anon-cvs) the former command (incorrectly) sends preprocessor output to stdout
instead (while the latter command still behaves as before). It seems that gcc
just doesn't pass "-o file.out" to the cpp when both -E and -MD are present. I
observe the same (presumably incorrect) behavior with gcc 3.0.3 release.
$ cat file.c
void foo() {}
$ rm -f file.out file.d
$ ~/try/bin/gcc -v -E -MD file.c -o file.out
Reading specs from /home/osv/try/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/specs
Configured with: /home/osv/cygnus/gcc/configure --prefix=/home/osv/try --disable-nls --with-gnu-as --with-gnu-ld
Thread model: single
gcc version 3.0.4 20020212 (prerelease)
/home/osv/try/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/cpp0 -lang-c -v -M -MF file.d -MQ file.out -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ file.c
GNU CPP version 3.0.4 20020212 (prerelease) (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/home/osv/try/i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/home/osv/try/include
/home/osv/try/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/include
/usr/include
End of search list.
# 1 "file.c"
void foo() {}
$ cat file.out
cat: file.out: No such file or directory
$ rm -f file.out file.d
$ ~/try/bin/gcc -v -E file.c -o file.out
Reading specs from /home/osv/try/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/specs
Configured with: /home/osv/cygnus/gcc/configure --prefix=/home/osv/try --disable-nls --with-gnu-as --with-gnu-ld
Thread model: single
gcc version 3.0.4 20020212 (prerelease)
/home/osv/try/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/cpp0 -lang-c -v -D__GNUC__=3 -D__GNUC_MINOR__=0 -D__GNUC_PATCHLEVEL__=4 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ file.c -o file.out
GNU CPP version 3.0.4 20020212 (prerelease) (cpplib) (i386 Linux/ELF)
ignoring nonexistent directory "/home/osv/try/i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/home/osv/try/include
/home/osv/try/lib/gcc-lib/i686-pc-linux-gnu/3.0.4/include
/usr/include
End of search list.
$ cat file.out
# 1 "file.c"
void foo() {}
$ rm -f file.out file.d
$ /usr/bin/gcc -v -E -MD file.c -o file.out
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.2/specs
gcc version 2.95.2 20000313 (Debian GNU/Linux)
/usr/lib/gcc-lib/i386-linux/2.95.2/cpp -lang-c -v -MD file.d -D__GNUC__=2 -D__GNUC_MINOR__=95 -D__ELF__ -Dunix -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__linux__ -D__unix -D__linux -Asystem(posix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ file.c -o file.out
GNU CPP version 2.95.2 20000313 (Debian GNU/Linux) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/include
End of search list.
The following default directories have been omitted from the search path:
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
End of omitted list.
$ cat file.out
# 1 "file.c"
void foo() {}
$
<END>
More information about the Gcc-bugs
mailing list