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