Cross-compilation to i386
Francois Tigeot
ftigeot at wolfpond.org
Sun Mar 7 09:59:09 PST 2004
[copy to -current since it may be of help to other freebsd ports]
On Thu, Mar 04, 2004 at 06:51:03PM +0100, Francois Tigeot wrote:
>
> I'm currently running a 5.2.1-RELEASE/amd64 system and I'm trying to
> cross-build an i386 world with the following command :
>
> time nice make buildworld TARGET_ARCH=i386 DESTDIR=/itx
>
> This fails miserably with these error messages :
>
> cc -Os -march=c3 -fno-strict-aliasing -pipe -I/usr/src/sbin/gbde/../../sys -DRESCUE -Wsystem -headers -Werror -Wall -Wno-format-y2k -W -Wstrict-prototypes -Wmissing-prototypes -Wpointer -arith -Wreturn-type -Wcast-qual -Wwrite-strings -Wswitch -Wshadow -Wcast-align -c /usr/src/sys/crypto/sha2/sha2.c
> {standard input}: Assembler messages:
> {standard input}:92: Error: bignum invalid
> {standard input}:93: Error: bignum invalid
> [more bignum invalid lines]
I've managed to make it work.
The 'bignum invalid' error is caused by this type of gcc-generated
assembly code :
.quad 8158064640168781261
.quad -5349999486874862801
For some reason, as doesn't like big negative numbers.
This is what I did :
- I installed a stock copy of binutils compiled with
--target=i386-freebsd and --enable-64-bit-bfd
- I initiated a buildworld to populate /usr/obj
- After the first build failure, I replaced /usr/obj/i386/usr/src/amd64/usr/bin/as
with the new assembler, protecting it by a chflags command
The world and kernel builds then completed succesfully. The new i386 kernel
boots on a diskless machine.
Now, I understand a new binutils import was scheduled before 5.3-RELEASE.
Is there any reason not to compile it with the '--enable-64-bit-bfd'
option on 64-bit architectures ?
--
Francois Tigeot
More information about the freebsd-amd64
mailing list