Hi Venkata,

Further to what Chris said, I don't think LTO will work with armclang. From what I can gather, you'd need to link with armlink which we don't really support. I did try this on v2.13 and it didn't work either - it built just fine but without LTO despite the flag.

Thanks,
Boyan

From: Chris Kay via TF-A <tf-a@lists.trustedfirmware.org>
Sent: 04 February 2026 10:30 AM
To: Taticharla, Venkata Sai <VenkataSai.Taticharla@amd.com>; tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
Cc: Belsare, Akshay <akshay.belsare@amd.com>; Bollapalli, Maheedhar Sai <MaheedharSai.Bollapalli@amd.com>; Gudipalli, Sugadeesh <sugadeesh.gudipalli@amd.com>
Subject: [TF-A] Re: Unable to build the ZynqMP platform with armclang when ENABLE_LTO=1.
 
Hi Venkata,

TF-A does not support AS=armasm​. You should avoid setting AS​ (in which case it will default to CC​) or, if you must set it explicitly, use AS=armclang​.

Regards,
Chris

From: Taticharla, Venkata Sai via TF-A <tf-a@lists.trustedfirmware.org>
Date: Wednesday, 4 February 2026 at 09:16
To: tf-a@lists.trustedfirmware.org <tf-a@lists.trustedfirmware.org>
Cc: Belsare, Akshay <akshay.belsare@amd.com>, Bollapalli, Maheedhar Sai <MaheedharSai.Bollapalli@amd.com>, Gudipalli, Sugadeesh <sugadeesh.gudipalli@amd.com>
Subject: [TF-A] Re: Unable to build the ZynqMP platform with armclang when ENABLE_LTO=1.

[AMD Official Use Only - AMD Internal Distribution Only]

Hi Boyan,

Applied the patch shared by you,and the -flto-partition error is now resolved. However, this exposes a new set of issues during the link stage related to assembly function call

Trimmed out the linker error log :
(.text.asm.bl31_entrypoint+0x144): undefined reference to `bl31_main'
(.text.asm.el3_exit+0x30): undefined reference to `per_world_context'
(.text.asm.sync_exception_handler+0x68): undefined reference to `rt_svc_descs_indices'

Additionally, when we are passing the armclang assembler as part of build command,running into below errors:

Error log :

Makefile:970:
Makefile:970: The configured AArch64 assembler could not be identified:
Makefile:970:
Makefile:970:     '/tools/installs/arm/safety/armcc/6.16.2/bin/armasm' (via `AS` parameter)
Makefile:970:
Makefile:970: The following tools are supported:
Makefile:970:
Makefile:970:   - Arm(r) Compiler for Embedded `armclang`
Makefile:970:   - LLVM Clang (`clang`)
Makefile:970:   - GNU GCC (`gcc`)
Makefile:970:
Makefile:970: The build system will treat this assembler as GNU GCC (`gcc`).

Please let me know if this configuration is expected to work with ENABLE_LTO=1, or if additional changes (e.g., toolchain selection or linker/assembler handling) are required.

Thanks for your guidance.

Best regards,
Venkata Sai .T .
--
TF-A mailing list -- tf-a@lists.trustedfirmware.org
To unsubscribe send an email to tf-a-leave@lists.trustedfirmware.org