Re: [next] ld.lld: error: ./arch/arm/kernel/vmlinux.lds:34: AT expected, but got NOCROSSREFS

From: Nathan Chancellor
Date: Thu Mar 10 2022 - 11:22:36 EST


On Thu, Mar 10, 2022 at 05:07:36PM +0530, Naresh Kamboju wrote:
> Linux next-20220310 arm clang builds failed due to following errors/warnings.
>
> metadata:
> git_describe: next-20220310
> git_repo: https://gitlab.com/Linaro/lkft/mirrors/next/linux-next
> git_sha: 71941773e143369a73c9c4a3b62fbb60736a1182
> git_short_log: 71941773e143 (\Add linux-next specific files for 20220310\)
> target_arch: arm
> toolchain: clang-14
> Kconfig: https://builds.tuxbuild.com/26BmBgHzW9MFZ3R0kIwL0Ce2r09/config
>
> make --silent --keep-going --jobs=8
> O=/home/tuxbuild/.cache/tuxmake/builds/1/build LLVM=1 LLVM_IAS=1
> ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 'HOSTCC=sccache clang'
> 'CC=sccache clang'
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> clang: warning: argument unused during compilation: '-march=armv7-a'
> [-Wunused-command-line-argument]
> ld.lld: error: ./arch/arm/kernel/vmlinux.lds:34: AT expected, but got
> NOCROSSREFS
> >>> __vectors_lma = .; OVERLAY 0xffff0000 : NOCROSSREFS AT(__vectors_lma) { .vectors { *(.vectors) } .vectors.bhb.loop8 { *(.vectors.bhb.loop8) } .vectors.bhb.bpiall { *(.vectors.bhb.bpiall) } } __vectors_start = LOADADDR(.vectors); __vectors_end = LOADADDR(.vectors) + SIZEOF(.vectors); __vectors_bhb_loop8_start = LOADADDR(.vectors.bhb.loop8); __vectors_bhb_loop8_end = LOADADDR(.vectors.bhb.loop8) + SIZEOF(.vectors.bhb.loop8); __vectors_bhb_bpiall_start = LOADADDR(.vectors.bhb.bpiall); __vectors_bhb_bpiall_end = LOADADDR(.vectors.bhb.bpiall) + SIZEOF(.vectors.bhb.bpiall); . = __vectors_lma + SIZEOF(.vectors) + SIZEOF(.vectors.bhb.loop8) + SIZEOF(.vectors.bhb.bpiall); __stubs_lma = .; .stubs ADDR(.vectors) + 0x1000 : AT(__stubs_lma) { *(.stubs) } __stubs_start = LOADADDR(.stubs); __stubs_end = LOADADDR(.stubs) + SIZEOF(.stubs); . = __stubs_lma + SIZEOF(.stubs); PROVIDE(vector_fiq_offset = vector_fiq - ADDR(.vectors));
> >>> ^
> make[1]: *** [/builds/linux/Makefile:1225: vmlinux] Error 1

Hi Naresh,

Thank you for the report! This is already fixed in mainline with
commit 36168e387fa7 ("ARM: Do not use NOCROSSREFS directive with
ld.lld"). This should be in next-20220311.

Cheers,
Nathan