On Wed, Aug 3, 2011 at 4:57 AM, Bernhard Rosenkranzer bernhard.rosenkranzer@linaro.org wrote:
Hi, ld in the current (4.6-2011.07-0-8-2011-07-25_12-42-06) Android toolchain fails to link uboot:
arm-eabi-ld: /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/libgeneric.o: Unknown mandatory EABI object attribute 44 arm-eabi-ld: failed to merge target specific data of file /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/crc16.o arm-eabi-ld: /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/libgeneric.o: Unknown mandatory EABI object attribute 44 arm-eabi-ld: failed to merge target specific data of file /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/crc32.o arm-eabi-ld: /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/ctype.o: Unknown mandatory EABI object attribute 44 arm-eabi-ld: failed to merge target specific data of file /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/ctype.o arm-eabi-ld: /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/div64.o: Unknown mandatory EABI object attribute 44 arm-eabi-ld: failed to merge target specific data of file /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/div64.o arm-eabi-ld: /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/errno.o: Unknown mandatory EABI object attribute 44 arm-eabi-ld: failed to merge target specific data of file /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/errno.o arm-eabi-ld: /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/ldiv.o: Unknown mandatory EABI object attribute 44 arm-eabi-ld: failed to merge target specific data of file /mnt/user/bero/android-iMX53-20110716151649/out/target/product/iMX53/obj/u-boot/lib/ldiv.o
I believe this is already fixed in upstream binutils (or at least in hjl's 2.21.52.0.2 release from kernel.org /pub/linux/devel/binutils).
Hi Bernhard. The list of EABI attributes is in bintuils/include/elf/arm.h. Attribute 44 is 'DIV use', which is set if the idiv/sdiv instructions are used. These exist in the Cortex-M, Cortex-R, and the Cortex-A15 but not in the A8 or A9. This attribute is set by the assembler automatically based on the architecture being compiled for.
You can check the attributes set on a function using arm-linux-gnueabi-readelf -A object-file-name.o.
I don't know which version of binutils you are using. Support was added to the assembler in May 2010 and updated for ARM mode in September 2010.
-- Michael