Linux kernel compilation failed with error: FPA is unsupported in the AAPCS

Mikael Pettersson
2010-12-08T14:21:10Z

Prasad Joshi writes:
> On Wed, Dec 8, 2010 at 1:37 PM, Jamie Iles <jamie@jamieiles.com> wrote:
> > On Wed, Dec 08, 2010 at 01:04:17PM +0000, Prasad Joshi wrote:
> >> Hello All,
> >>
> >> I am trying to compile the linux 2.6.36 kernel for arm-linux. This is
> >> the error I am getting during compilation.
> >>
> >> clfs at prasad-desktop:/mnt/clfs/sources/linux-2.6.36$ make
> >> ARCH=${CLFS_ARCH} CROSS_COMPILE=${CLFS_TARGET}- zImage modules
> >> ? CHK ? ? include/linux/version.h
> >> ? CHK ? ? include/generated/utsrelease.h
> >> make[1]: `include/generated/mach-types.h' is up to date.
> >> ? CC ? ? ?kernel/bounds.s
> >> kernel/bounds.c:1:0: error: FPA is unsupported in the AAPCS
> >> make[1]: *** [kernel/bounds.s] Error 1
> >> make: *** [prepare0] Error 2
> >>
> >> These are the environment variables
> >> export BUILD="-mabi=arm-linux"
> >> export CLFS_ARCH="arm"
> >> export CLFS_TARGET="arm-unknown-linux-uclibc"
> >> export CLFS_HOST="x86_64-cross-linux-gnu"
> >> export CLFS_ENDIAN="little"
> >> export CC="arm-unknown-linux-uclibc-gcc"
> >> export CXX="arm-unknown-linux-uclibc-g++"
> >> export AR="arm-unknown-linux-uclibc-ar"
> >> export AS="arm-unknown-linux-uclibc-as"
> >> export LD="arm-unknown-linux-uclibc-ld"
> >> export RANLIB="arm-unknown-linux-uclibc-ranlib"
> >> export READELF="arm-unknown-linux-uclibc-readelf"
> >> export STRIP="arm-unknown-linux-uclibc-strip"
> >>
> >> clfs at prasad-desktop:/mnt/clfs/sources/linux-2.6.36$
> >> arm-unknown-linux-uclibc-gcc -v
> >> Using built-in specs.
> >> COLLECT_GCC=arm-unknown-linux-uclibc-gcc
> >> COLLECT_LTO_WRAPPER=/mnt/clfs/cross-tools/libexec/gcc/arm-unknown-linux-uclibc/4.5.1/lto-wrapper
> >> Target: arm-unknown-linux-uclibc
> >> Configured with: ../gcc-4.5.1/configure --prefix=/mnt/clfs/cross-tools
> >> --build=x86_64-cross-linux-gnu --host=x86_64-cross-linux-gnu
> >> --target=arm-unknown-linux-uclibc --with-sysroot=/mnt/clfs
> >> --disable-nls --disable-shared --with-mpfr=/mnt/clfs/cross-tools
> >> --with-gmp=/mnt/clfs/cross-tools --without-headers --with-newlib
> >> --disable-decimal-float --disable-libgomp --disable-libmudflap
> >> --disable-libssp --disable-threads --enable-languages=c :
> >> (reconfigured) ../gcc-4.5.1/configure --prefix=/mnt/clfs/cross-tools
> >> --build=x86_64-cross-linux-gnu --target=arm-unknown-linux-uclibc
> >> --host=x86_64-cross-linux-gnu --with-sysroot=/mnt/clfs --disable-nls
> >> --enable-shared --enable-languages=c --enable-c99 --enable-long-long
> >> --with-mpfr=/mnt/clfs/cross-tools --with-gmp=/mnt/clfs/cross-tools
> >> Thread model: posix
> >> gcc version 4.5.1 (GCC)
> > If your kernel is configured for EABI (CONFIG_AEABI=y) then you'll need a
> > compiler built for EABI. You can find one at
> > http://kernel.org/pub/tools/crosstool/files/bin/ that doesn't have a libc.
> >
>
> Thanks a lot Jamie and Mikael. I can not follow what is EABI or OABI.
> But while configuring the linux kernel I enabled EABI. After disabling
> it, make is running smoothly.
>
> I have one more (silly) question on same, my intention behind
> compiling the linux kernel is to boot RealView ARM under QEMU. Would
> disabling EABI would make kernel unbootable with QEMU?

The kernel, no, but user-space won't work if it's EABI while the kernel
is OABI. I'm guessing your user-space is arm-unknown-linux-uclibc, which
presumably is OABI, so an OABI kernel should be selected.

However, OABI is becoming obsolete and unsupported. New projects should
be EABI.