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

arm64: Disable LLD linker ASSERT()s for the time being

It turns out [1] that the way LLD handles ASSERT()s in the linker script
can result in spurious failures, so disable them for the newly
introduced BSS symbol export checks. Since we're not aware of any issues
with the existing assertions in vmlinux.lds.S, leave those alone for now
so that they can continue to provide useful coverage.

A linker fix [2] is due to land in version 21 of LLD.

Link: https://lore.kernel.org/r/202505261019.OUlitN6m-lkp@intel.com [1]
Link: https://github.com/llvm/llvm-project/commit/5859863bab7f [2]
Link: https://github.com/ClangBuiltLinux/linux/issues/2094
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Tested-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202505261019.OUlitN6m-lkp@intel.com/
Link: https://lore.kernel.org/r/20250529073507.2984959-2-ardb+git@google.com
Signed-off-by: Will Deacon <will@kernel.org>

authored by

Ard Biesheuvel and committed by
Will Deacon
e21560b7 217e3cbb

+6
+6
arch/arm64/kernel/image-vars.h
··· 10 10 #error This file should only be included in vmlinux.lds.S 11 11 #endif 12 12 13 + #if defined(CONFIG_LD_IS_LLD) && CONFIG_LLD_VERSION < 210000 14 + #define ASSERT(...) 15 + #endif 16 + 13 17 #define PI_EXPORT_SYM(sym) \ 14 18 __PI_EXPORT_SYM(sym, __pi_ ## sym, Cannot export BSS symbol sym to startup code) 15 19 #define __PI_EXPORT_SYM(sym, pisym, msg)\ ··· 145 141 #ifdef CONFIG_EFI_ZBOOT 146 142 _kernel_codesize = ABSOLUTE(__inittext_end - _text); 147 143 #endif 144 + 145 + #undef ASSERT 148 146 149 147 #endif /* __ARM64_KERNEL_IMAGE_VARS_H */