Hi All,
During the TF-A CI upgrade from Arm GNU Toolchain version 14.2.Rel1 to 14.3.Rel1 [1], the Marvell A3700 platform build began failing. Since TF-A does not include the WTMI sources and there has been no response from the Marvell
maintainers, the platform has been temporarily removed from the CI [2]. We will restore it once the fix lands in the Marvell upstream and links cleanly with 14.3/binutils 2.44.
The sections below outline the CI environment, build configuration, and error details for reference.
Host: Ubuntu 22.04 (Docker)
Toolchains:
aarch64-none-elf: Arm GNU 14.3.Rel1
arm-none-eabi (CM3/WTMI): Arm GNU 14.3.Rel1 (fails); passes with 14.2.Rel1
make CROSS_COMPILE=aarch64-none-elf- CROSS_CM3=arm-none-eabi- PLAT=a3700 BL33=/dev/null CM3_SYSTEM_RESET=1 A3720_DB_PM_WAKEUP_SRC=1 CLOCKSPRESET=CPU_1000_DDR_800 DDR_TOPOLOGY=5 DEBUG=1 V=1
(*ABS*0x1fff0000): Unknown destination type (ARM/Thumb) in main.o
(.text.startup+0x2a): dangerous relocation: unsupported relocation
/home/../.../arm-none-eabi/bin/ld: warning: build/sys_init.elf has a LOAD segment with RWX permissions
/home/../.../arm-none-eabi/bin/ld: (*ABS*0x1fff0000): Unknown destination type (ARM/Thumb) in main.o
main.o: in function `main':
.../A3700-utils-marvell/wtmi/sys_init/main.c:350:(.text.startup+0x2a): dangerous relocation: unsupported relocation
collect2: error: ld returned 1 exit status
Root Cause
On Cortex-M (Thumb-only), calls/jumps to absolute addresses must have bit0 = 1 to indicate Thumb state. Older binutils tolerated raw addresses like 0x1FFF0000; binutils 2.44 now errors if the destination state is unknown (no stub is inserted).
Requested fix (in WTMI sources)
Please update any absolute branch/call targets to be explicitly Thumb (LSB=1), or define a Thumb symbol and call that.
Acceptance criteria:
WTMI links cleanly with arm-none-eabi 14.3.Rel1 (binutils 2.44) with no:
Thanks & regards,
Jayanth