Date: Mon, 8 Nov 2010 19:13:34 +0100 From: Alexey Shuvaev <shuvaev@physik.uni-wuerzburg.de> To: Dimitry Andric <dim@FreeBSD.org> Cc: hackers@FreeBSD.org Subject: Re: ccache pausing in buildworld Message-ID: <20101108181334.GA20814@wep4035.physik.uni-wuerzburg.de> In-Reply-To: <4CD83AF3.9090507@FreeBSD.org> References: <alpine.BSF.2.00.1010311019150.9437@wonkity.com> <20101108144811.4a737a7a.ehaupt@FreeBSD.org> <20101108153434.GC17517@wep4035.physik.uni-wuerzburg.de> <4CD83AF3.9090507@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Nov 08, 2010 at 07:01:23PM +0100, Dimitry Andric wrote: > On 2010-11-08 16:34, Alexey Shuvaev wrote: > >Just FYI, you would see exact the same problem if you try to compile > >i386 world on amd64-CURRENT with clang: > >... > >/src/lib/csu/i386-elf/crt1_s.S: Assembler messages: > >/src/lib/csu/i386-elf/crt1_s.S:34: Error: suffix or operands invalid for `push' > >/src/lib/csu/i386-elf/crt1_s.S:37: Error: `8(%ebp)' is not a valid 64 bit base/index expression > >/src/lib/csu/i386-elf/crt1_s.S:38: Error: suffix or operands invalid for `push' > >/src/lib/csu/i386-elf/crt1_s.S:39: Error: `4(%ebp)' is not a valid 64 bit base/index expression > >/src/lib/csu/i386-elf/crt1_s.S:40: Error: suffix or operands invalid for `push' > >clang: error: assembler command failed with exit code 1 (use -v to see invocation) > >*** Error code 1 > >... > > > >As far as I understand this, there is no clang cross-compiler support > >at the moment. So compiler generates (somehow) i386 assembler code > >which amd64 assembler does not like. Looks like something similar happens > >here too... > > Have you read http://wiki.freebsd.org/BuildingFreeBSDWithClang, which > suggests to put: > > .if !defined(CC) || ${CC} == "cc" > CC=clang > .endif > .if !defined(CXX) || ${CXX} == "c++" > CXX=clang++ > .endif > # Don't die on warnings > NO_WERROR= > WERROR= > > in your /etc/src.conf (or make.conf, depending on your preference)? > > If you use that, it should work, at least for the build32 stage of > buildworld on amd64. This workaround is only needed on amd64, not for > i386. > Certainly, I have all these in the host machine and native buildworld works as expected. What I was talking about is cross-compiling, i.e.: make TARGET=i386 buildworld on amd64 host. BTW, the absence of clang testers on arm architecture would not change unless the cross-compiling issue with clang is resolved. Cross-compilation is a MUST HAVE here (there is no other way to bootstrap the platform). Alexey.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20101108181334.GA20814>