DragonFly bugs List (threaded) for 2007-10
DragonFly BSD
DragonFly bugs List (threaded) for 2007-10
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: Is this a compiler error?


From: walt <wa1ter@xxxxxxxxxxxxx>
Date: Fri, 5 Oct 2007 13:54:00 -0700

On Fri, 5 Oct 2007, Matthew Dillon wrote:

>
> :While trying to build pkgsrc/emacs on HEAD with the default gcc41 I'm
> :getting an error that just doesn't make sense.  This is taken from
> :'dragonfly.h' in the emacs sources:
> :
> :#if defined(__GNUC__) && __GNUC__ == 3 && __GNUC_MINOR__ == 4
> :#  ifndef DFLY_PRE_17_CRT
> :#define START_FILES pre-crt0.o /usr/lib/gcc34/crt1.o /usr/lib/gcc34/crti.o /usr/lib/gcc34/crtbegin.o
> :#define LIB_STANDARD -L/usr/lib/gcc34 -lgcc -lc -lgcc /usr/lib/gcc34/crtend.o /usr/lib/gcc34/crtn.o
> :#  else
> :#define START_FILES pre-crt0.o /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtbegin.o
> :#define LIB_STANDARD -L/usr/lib/gcc34 -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o
> :#  endif
> :#else
> :#error "Add compiler version magic"
> :#endif
> :
> :The problem is that 'error' is triggered no matter what that first 'if'
> :checks for.  E.g. that first line can be changed to #if 0 and that same
> :'error' is still triggered.
> :
> :Either gcc41 is broken or I am.  Which is it?

>     ...
>     The conditionals simply do not check for gcc 4.1.  It is only checking
>     for gcc 3.4, not finding it, and throwing up its hands.

Yes, I completely misunderstood the intentions of the programmer who wrote
that test.  I'm asked to supply the missing info, and this is my attempt:

#else
#define START_FILES pre-crt0.o /usr/lib/gcc41/crt1.o /usr/lib/gcc41/crti.o /usr/lib/gcc41/crtbegin.o
#define LIB_STANDARD -L/usr/lib/gcc41 -lgcc -lc -lgcc /usr/lib/gcc41/crtend.o /usr/lib/gcc41/crtn.o
#endif

However, here is yet another twist to my tale.  The pkgsrc top-level
Makefile.common for emacs includes this test:

. if ${OPSYS} == "DragonFly" && exists(/usr/lib/crtbegin.o)
CPPFLAGS+=      -DDFLY_PRE_17_CRT
. endif

I notice that all of my /usr/lib/crt*.o files were built in January,
while all the other files were built yesterday.  This makes me
suspect that those files from January probably should be deleted
because they cause the CPPFLAGS to be wrong for gcc41 (I think).



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