Float point handling issue during link time of cross compilation

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Float point handling issue during link time of cross compilation

1,320 Views
kravik
Contributor IV

Using Yocto(https://community.nxp.com/message/654043#comment-654043), 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 http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

  #repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.10.53-1.1.0_ga

  #repo sync

Labels (3)
0 Kudos
1 Reply

668 Views
Yuri
NXP Employee
NXP Employee

Hello,

  please refer to the following how to use the toolchain for NXP Linux BSP :

cannot find crt1.o

Have a great day,
Yuri

-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------

0 Kudos