Damaged dependency files

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



 Hello, all!

When running "make" I get an error:
make[3]: *** No rule to make target
`/usr/home/firebird/firebird/trunk/src/yvalve/gds_proto.h)', needed by
`/usr/home/firebird/firebird/trunk/temp/Release/gpre/boot/gpre_meta_boot.o'. 
Stop.

Let me explain, why do I ask in this list. Error happens due to broken
structure of dependency files, created using -MMD switch of g++.
Normally that file has the following layout:

/usr/home/firebird/firebird/trunk/temp/Release/gpre/c_cxx.o: $(wildcard  \
 /usr/home/firebird/firebird/trunk/src/gpre/c_cxx.cpp \
  /usr/home/firebird/firebird/trunk/src/include/firebird.h \
  /usr/home/firebird/firebird/trunk/src/include/gen/autoconfig.h \
....................
  /usr/home/firebird/firebird/trunk/src/include/ProviderInterface.h \
  /usr/home/firebird/firebird/trunk/src/common/classes/Interface.h)

But for some files I get:

 \
 /usr/home/firebird/firebird/trunk/temp/Release/gpre/boot/gpre_meta_boot.o: 
\
 /usr/home/firebird/firebird/trunk/src/gpre/boot/gpre_meta_boot.cpp \
  /usr/home/firebird/firebird/trunk/src/include/firebird.h \
........................
  /usr/home/firebird/firebird/trunk/src/yvalve/gds_proto.h)

I.e. extra line with single backslash in the beginning and missing
'$(wildcard' make's function after object file name.

My problem happens only for x86 builds with optimization, for x64 or
without optimization I've never seen it. I can reliably reproduce it for
the following versions:
gcc (Debian 4.3.2-1.1) 4.3.2
gcc (GCC) 4.3.3
gcc (GCC) 3.3.6
First one (where bug was noted initially) is Debian binary, two last
were built from clean sources, taken from official gcc repository (base
& g++ tar files were used). I've specially tried rather old gcc version
to check, does it help or not, but bug happens for all compilers.
What is specially surprising - for different gcc versions I get damaged
dependency files for different source files. On the other hand, for
particular compiler it happens always with particular source file and
does not depend upon 'make -j1' or 'make -j4' was used.

All this taken together makes me think, that this is gcc problem. But
may be I miss something obvious?

I can provide any additional information required, but do not want to
overload first letter with probably unneeded details. May be command
line options only:
g++ -ggdb -DFB_SEND_FLAGS=MSG_NOSIGNAL -DLINUX -pipe -MMD -fPIC
-fmessage-length=0 -O3 -march=i586 -mcpu=i686 -fno-omit-frame-pointer
-I/usr/home/firebird/firebird/trunk/src/include/gen
-I/usr/home/firebird/firebird/trunk/src/include -pthread  -pthread -c
/usr/home/firebird/firebird/trunk/src/gpre/boot/gpre_meta_boot.cpp -o
/usr/home/firebird/firebird/trunk/temp/Release/gpre/boot/gpre_meta_boot.o

And one thought - typically this happens for relatively long paths. May
be compiler tries to build better looking ddependency file but has some
old bug in this less tested branch of code?

Alex.




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux