Crossbuild failure on 8-stable

Mark Tinguely marktinguely at gmail.com
Thu Jun 30 16:44:44 UTC 2011


On 6/30/2011 4:22 AM, Hans Petter Selasky wrote:
> Hi,
>
> Trying to cross build ARM fails in the following way on 8-stable:
>
> 8.2-STABLE FreeBSD 8.2-STABLE #1: Wed Jun 29 13:09:23 UTC 2011
>
> make toolchain TARGET=arm
>
> Is this perhaps also an issue in 9-current?
>
> Any clues?
>
> cc -O -pipe  -ffreestanding -Wformat -I/usr/src/lib/libstand -msoft-float -
> D_STANDALONE -DBZ_NO_STDIO -DBZ_NO_COMPRESS -DHAVE_MEMCPY -
> I/usr/src/lib/libstand/../libz -std=gnu99  -c
> /usr/src/lib/libstand/../libc/net/ntoh.c
> {standard input}: Assembler messages:
> {standard input}:27: Error: bad instruction `bswap r0'
> {standard input}:53: Error: bad instruction `bswap r0'
>

and you also said:

> Tracing down the issue:
>
> /usr/include/machine/endian.h
>
> #define __byte_swap_int_var(x) \
> __extension__ ({ register __uint32_t __X = (x); \
>     __asm ("bswap %0" : "+r" (__X)); \
>     __X; })
>
> r0 looks like an ARM register passed to a non-arm assembler. I'm going to try:
>

Looks like you have an ARM compiler/assembler because the assembler 
rejects the i386/amd64 "bswap" assembly command.

Does anyone remember if the cross compiler has the cross include paths 
compiled into them or should there be a "-I" in the compile command to 
correctly expand the "#include <machine/endian.h>" ? I thought the cross 
path was compiled into the cross compiler.

You manually test the "cc" command with the included "-I" option.

--Mark


More information about the freebsd-current mailing list