LINUX.ORG.RU

Собрать u-boot (ARM) тулчейном с hard float

 , ,


1

1

...возможно ли? U-Boot 2013.10, архитектура — armv7.

Если собирать с USE_PRIVATE_LIBGCC=yes:

drivers/mmc/libmmc.o: In function `mmc_berase':
/home/operator/u-boot/drivers/mmc/mmc_write.c:76: undefined reference to `__aeabi_uldivmod'
/home/operator/u-boot/drivers/mmc/mmc_write.c:76: undefined reference to `__aeabi_uldivmod'
ld.bfd: error: required section '.rel.plt' not found in the linker script
ld.bfd: final link failed: Неверная операция

Если без этого ключа:

ld.bfd: ошибка: /usr/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.2/libgcc.a(bpabi.o) использует регистровые аргументы VFP, а u-boot не использует
ld.bfd: failed to merge target specific data of file /usr/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.2/libgcc.a(bpabi.o)
ld.bfd: ошибка: /usr/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.2/libgcc.a(_divdi3.o) использует регистровые аргументы VFP, а u-boot не использует
ld.bfd: failed to merge target specific data of file /usr/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.2/libgcc.a(_divdi3.o)
ld.bfd: ошибка: /usr/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.2/libgcc.a(_udivdi3.o) использует регистровые аргументы VFP, а u-boot не использует
ld.bfd: failed to merge target specific data of file /usr/lib/gcc/armv7l-unknown-linux-gnueabihf/4.8.2/libgcc.a(_udivdi3.o)

Эта сборка велась прямо на целевой машине (ArchLinuxARM, gcc 4.8.2).
Если собирать на x86 кросс-тулчейном от Linaro (2013.08, gcc 4.8.2) — то же самое.
Если взять crosstool-ng и собрать не-hardfloat тулчейн с последними версиями всего, а потом собрать им — полученный бинарник работать не будет.

ЧЯДНТ?

★★★★★

Последнее исправление: CYB3R (всего исправлений: 2)

Если собирать на x86 кросс-тулчейном от Linaro (2013.08, gcc 4.8.2) — то же самое.

без проблем собирается линаровским кросскомпилятором gcc-linaro-4.8-2014.02, да и с предыдущими релизами проблем не было, скорей проблемы системы на которй собирается. На хосте тоже срАч-линукс как и на arm ?

anonymous
()
Ответ на: комментарий от intelfx

Посмотри флаги компилятора которые ему передаются при сборке

http://lists.linaro.org/pipermail/linaro-toolchain/2013-October/003782.html

у меня такие

arm-linux-gnueabihf-gcc -g -Os -ffunction-sections -fdata-sections -fno-common -ffixed-r9 -msoft-float -D__KERNEL__ -DCONFIG_SYS_TEXT_BASE=0x17800000 -I/path/u-boot-2013.10/include -fno-builtin -ffreestanding -nostdinc -isystem /path/ext-toolchain/bin/../lib/gcc/arm-linux-gnueabihf/4.8.3/include -pipe -DCONFIG_ARM -D__ARM__ -marm -mno-thumb-interwork -mabi=aapcs-linux -mword-relocations -march=armv7-a -Wall -Wstrict-prototypes -fno-stack-protector -Wno-format-nonliteral -Wno-format-security -fstack-usage

anonymous
()
Ответ на: комментарий от anonymous

-msoft-float

В этом-то и дело. У меня тулчейн armhf, вот он и жалуется на несовпадение ABI между libgcc и u-boot'ом. Если передавать последнему USE_PRIVATE_LIBGCC (что, по идее, заставляет u-boot собирать свой собственный libgcc с softfp и шлюхами), возникают какие-то странные ошибки линкера.

intelfx ★★★★★
() автор топика
Ответ на: комментарий от intelfx

У меня тулчейн armhf

у меня тоже

Если собирать на x86 кросс-тулчейном от Linaro (2013.08, gcc 4.8.2) — то же самое.

не тоже самое - у линаровских сборок multilib, ссылку я тебе не просто так дал

anonymous
()
Ответ на: комментарий от anonymous

Ещё бы знать, как его включить.

Впрочем, я разобрался. С armhf поступил брутально — выпилил из Makefile все упоминания -msoft-float. И ещё пофиксил начальное значение SP (это я пытаюсь заставить неподдерживаемую борду работать), видимо, третий случай этим и объясняется.

intelfx ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.