build failures after stdlib update

Alexander Best alexbestms at wwu.de
Tue Mar 23 22:36:26 UTC 2010


Scot Hetzel schrieb am 2010-03-23:
> On Tue, Mar 23, 2010 at 4:34 AM, Alexander Best <alexbestms at wwu.de>
> wrote:
> > i don't think conf/112997 and the issue where gcc segfaults are
> > directly
> > related to each other:

> > 1. if CPUTYPE is set to 'native' your patch uses `gcc -v -x c -E
> >    -mtune=native
> > /dev/null -o /dev/null 2>&1 | grep mtune | sed -e 's/.*mtune=//'`
> > to determine
> > gcc's idea of the appropriate -mtune value. that command however
> > segfaults. so
> > this doesn't really help.

> The command runs correctly with a properly built gcc:

> # gcc -v -x c -E -mtune=native /dev/null -o /dev/null 2>&1 | grep
> mtune | sed -e 's/.*mtune=//'
> generic

i was finally able to solve this issue. it turns out the issue was caused by
an option in my CLFAGS called "-fno-builtin". sys/conf/NOTES recommends using
this switch for kernel builds, but it seems in a world environment the flag is
harmful to gcc. a gcc built with "-fno-builtin" trips over strlen() for some
reason.

you should be able to reproduce this problem simply by adding "-O2
-fno-strict-aliasing -pipe -fno-builtin" to your CFLAGS. maybe "-O2
-fno-builtin" triggers it too, but "-fno-builtin" (without -O2) doesn't.

thanks to everyone for all the help. :)

cheers.
alex


> > 2. i wasn't able to reproduce your `make -V MACHINE_CPU
> >    -DCPUTYPE=native`
> > examples. for me `make` prints the same no matter what CPUTYPE is
> > set to:

> > otaku% make -V MACHINE_CPU -DCPUTYPE=native
> > amd64 sse2 sse
> > otaku% make -V MACHINE_CPU -DCPUTYPE=nocona
> > amd64 sse2 sse
> > otaku% make -V MACHINE_CPU -DCPUTYPE=i386
> > amd64 sse2 sse
> > otaku% make -V MACHINE_CPU -DCPUTYPE=lalalala
> > amd64 sse2 sse

> > ..oh and of course i ran these commands with no CPUTYPE set in
> > make.conf. ;)


> If I run the same commands as above, I get similar results:

> # make -V MACHINE_CPU -DCPUTYPE=native
> amd64 sse2 sse
> # make -V MACHINE_CPU -DCPUTYPE=k8
> amd64 sse2 sse
> # make -V MACHINE_CPU -DCPUTYPE=nocona
> amd64 sse2 sse
> # make -V MACHINE_CPU -DCPUTYPE=i386
> amd64 sse2 sse
> # make -V MACHINE_CPU -DCPUTYPE=lala
> amd64 sse2 sse

> But if I run the commands without the "-D", it shows the problem
> correctly:

> # make -V MACHINE_CPU CPUTYPE=native
> unknown amd64 sse2 sse mmx
> # make -V MACHINE_CPU CPUTYPE=k8
> k8 3dnow amd64 sse2 sse mmx
> # make -V MACHINE_CPU CPUTYPE=nocona
> sse3 amd64 sse2 sse mmx
> # make -V MACHINE_CPU CPUTYPE=i386
> unknown amd64 sse2 sse mmx
> # make -V MACHINE_CPU CPUTYPE=lalala
> unknown amd64 sse2 sse mmx
> # grep CPUTYPE /etc/make.conf /etc/src.conf
> grep: /etc/src.conf: No such file or directory

> This was run under a Feb 28th -CURRENT.

> Now here is something strange.  Defining CPUTYPE in /etc/src.conf has
> no effect on the output of MACHING_CPU.

> /etc/src.conf: 1 lines, 11 characters.
> # make -V MACHINE_CPU ; grep CPUTYPE /etc/make.conf /etc/src.conf
> amd64 sse2 sse
> /etc/src.conf:CPUTYPE=k8

> # make -V MACHINE_CPU ; grep CPUTYPE /etc/make.conf /etc/src.conf
> k8 3dnow amd64 sse2 sse mmx
> /etc/make.conf:CPUTYPE=k8

> Scot

-- 
Alexander Best


More information about the freebsd-current mailing list