AnsweredAssumed Answered

Float point handling issue during link time of cross compilation

Question asked by Ravi Kumar on May 26, 2016
Latest reply on May 26, 2016 by Yuri Muhin

Using Yocto(, I have built images for IMX6 Sabersd board and flashed images on sdcard to boot the Sabersd board - IMX6Q-SDB.


I am compiling a 3rd party source for IMX6 Sabersd board using the tool chain built with Yocto, the source is having few pre-built libraries. During linking stage I got following error for pre-built libraries.


ld: error: *Executable* uses VFP register arguments,  *Library* does not

ld: failed to merge target specific data of file *Library*

Following is the one occurrence of the error.

/home/user/fsl-release-bsp/build/tmp/sysroots/x86_64-linux/usr/libexec/cortexa9hf-vfp-neon-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.8.2/ld: error: build/imx6/system/staging/bin/fwDaemon uses VFP register arguments, /home/user/fsl-release-bsp/build/tmp/sysroots/imx6qsabresd/usr/lib/lib_tapi.a(lib_tapi_common.o) does not

/home/user/fsl-release-bsp/build/tmp/sysroots/x86_64-linux/usr/libexec/cortexa9hf-vfp-neon-poky-linux-gnueabi/gcc/arm-poky-linux-gnueabi/4.8.2/ld: failed to merge target specific data of file /home/user/fsl-release-bsp/build/tmp/sysroots/imx6qsabresd/usr/lib/lib_tapi.a(lib_tapi_common.o)


After searching about the error in Google, I was understood that the pre-built libraries are not using VFP registers for floating point handling but the IMX6 tool chain expects to use VFP registers.


It seems by passing -mfloat-abi=softfp to gcc we can avoid this error, but gcc has to be configured with multilib to support this. When I checked gcc configured options using -v, it is showing "--disable-multilib".


While building images for IMX6 sabersd using yocto, the toolchain source was downloaded and compiled for the target. So I am looking for the following options.


Option 1: Changing the tool chain configuration in yocto to enable multilib option.  I have greped with multilib in sources folder, it appeared in many .bb, .inc, .conf, .bbclass, .py, .json files. I started looking from bblayers.conf file, but I could see the files in multiple layers. Can you help to identify the .bb or .inc or .conf file to enable multilib.


Option 2: Changing the tool chain configuration in yocto to use softfp, so that the whole system will use softfp.


Option 3: Is it possible to get already build toolchain for IMX6 which supports multilib or softfp.

Can you help on any of the above options.


I have used following commands to get Yocto source.

  #curl > ~/bin/repo

  #repo init -u git:// -b imx-3.10.53-1.1.0_ga

  #repo sync