Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: Do not use NOCROSSREFS directive with ld.lld

ld.lld does not support the NOCROSSREFS directive at the moment, which
breaks the build after commit b9baf5c8c5c3 ("ARM: Spectre-BHB
workaround"):

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

Support for this directive will eventually be implemented, at which
point a version check can be added. To avoid breaking the build in the
meantime, just define NOCROSSREFS to nothing when using ld.lld, with a
link to the issue for tracking.

Cc: stable@vger.kernel.org
Fixes: b9baf5c8c5c3 ("ARM: Spectre-BHB workaround")
Link: https://github.com/ClangBuiltLinux/linux/issues/1609
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Nathan Chancellor and committed by
Linus Torvalds
36168e38 37c333a5

+8
+8
arch/arm/include/asm/vmlinux.lds.h
··· 26 26 #define ARM_MMU_DISCARD(x) x 27 27 #endif 28 28 29 + /* 30 + * ld.lld does not support NOCROSSREFS: 31 + * https://github.com/ClangBuiltLinux/linux/issues/1609 32 + */ 33 + #ifdef CONFIG_LD_IS_LLD 34 + #define NOCROSSREFS 35 + #endif 36 + 29 37 /* Set start/end symbol names to the LMA for the section */ 30 38 #define ARM_LMA(sym, section) \ 31 39 sym##_start = LOADADDR(section); \