Arm multilib for cortex-a15

Matthew Gretton-Dann matthew.gretton-dann@linaro.org
Mon Aug 20 09:26:00 GMT 2012


On 16 August 2012 17:32, Manjunath S Matti <81matti@gmail.com> wrote:
> Hi,
>
> I am trying to build multilib arm toolchain using gcc-linaro-4.7-2012.06
> I am targeting cpu=cortex-a15 and multilib for softfp and hard.
>
> i have added a file t-mlibs
> {{{
> comma := ,
> space :=
> space +=
>
> MULTILIB_OPTIONS = mfloat-abi=softfp
> MULTILIB_DIRNAMES = softfp
>
> MULTILIB_EXCEPTIONS =
>
> MULTILIB_REQUIRED = marm/mfloat-abi=softfp
>
> MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o
> }}}
>
> The reason i have not added mfloat-abi=hard, in this file is because the
> default i guess is hard, as mentioned in the file
> linux-elf.h
> {{{
> * Run-time Target Specification.  */
> #undef  TARGET_DEFAULT_FLOAT_ABI
> #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD
> }}}
>
> I am able to boot strap gcc which is configured with the following options
> {{{
> COLLECT_GCC=./install/bin/arm-cortex_a15-linux-gnueabi-gcc
> COLLECT_LTO_WRAPPER=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install/libexec/gcc/arm-cortex_a15-linux-gnueabi/4.7.1/lto-wrapper
> Target: arm-cortex_a15-linux-gnueabi
> Configured with:
> /home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/sources/gcc-linaro-4.7-2012.06/configure
> --target=arm-cortex_a15-linux-gnueabi
> --prefix=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install
> --with-local-prefix=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install/arm-cortex_a15-linux-gnueabi/sysroot
> --with-sysroot=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install/arm-cortex_a15-linux-gnueabi/sysroot
> --with-gmp=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install
> --with-mpfr=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install
> --with-mpc=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install
> --with-ppl=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install
> --with-cloog=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install
> --with-libelf=/home/manjunath/workspace/linaro_arm_tc/manual/cortex_multilib/install
> --with-newlib --enable-__cxa_atexit --enable-threads=no --enable-lto
> --enable-languages=c,c++ --disable-libmudflap --disable-libgomp
> --disable-libmudflap --disable-nls --disable-libstdcxx-pch --disable-shared
> --with-arch=armv7-a --with-cpu=cortex-a15 --with-tune=cortex-a15
> --with-float=hard --with-multilib-list
> }}}
>
> And the build directory has the following
>
> ./arm-cortex_a15-linux-gnueabi/libgcc/libgcc.a
> ./arm-cortex_a15-linux-gnueabi/softfp/libgcc/libgcc.a
>
> I am even able to build the glibc with softfp and hard for cortex-a15
> respectively, but while building the final gcc i get the following error:
> Error msg:
> {{{
> /install/arm-cortex_a15-linux-gnueabi/bin/ld: error:
> softfp/libgcc_s.so.1.tmp uses VFP register arguments,
> /workspace/linaro_arm_tc/manual/cortex_multilib/build/gcc_obj/./gcc/softfp/crtbeginS.o
> does not
> }}}
>
> Please let me know what am I missing or is this approach wrong?
>
> Thanks in advance
>
> Regards,
> Manjunath S Matti.

Hi,

Try adding --with-fpu=neon-vfpv4 to the configure line of GCC.

For ARM targets -mcpu=FOO does not specify a floating-point unit, you
have to specify -mfpu=BAR as well.

Thanks,

Matt

-- 
Matthew Gretton-Dann
Linaro Toolchain Working Group
matthew.gretton-dann@linaro.org



More information about the Gcc-help mailing list