When building TF-A with clang 16 and lld. It has below error:
ld.lld: error: section type mismatch for base_xlat_table >>> /ssd/android/trusty/build-root/build-qemu-generic-arm32-gicv3-test-debug/atf/qemu/debug/bl2/xlat_tables_context.o:(base_xlat_table): SHT_PROGBITS >>> output section .bss: SHT_NOBITS ld.lld: error: section type mismatch for xlat_table >>> /ssd/android/trusty/build-root/build-qemu-generic-arm32-gicv3-test-debug/atf/qemu/debug/bl2/xlat_tables_context.o:(xlat_table): SHT_PROGBITS >>> output section xlat_table: SHT_NOBITS
When linking, TF-A uses linker script to put sections in SHT_PROGBITS type to output sections in SHT_NOBITS type.
This used to be okay. But lld tightens its check in https://reviews.llvm.org/D118840 and https://reviews.llvm.org/D125074.
lld gives a warnings when seeing this section type mismatch.
TF-A uses --fatal-warnings when linking, thus making the warning into an error.
To fix such error, the suggestion from lld maintainer is to avoid section type mismatch by modifying linker script. I don't know if it is feasible here.
Another choice is to remove --fatal-warnings, which may weaken other checks.