mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
kbuild: Use ld.lld for linking host programs when LLVM is set
Currently, host programs are linked with HOSTCC using the toolchain's default linker. This can result in confusing behavior when using the LLVM Kbuild variable (which states that the user would like to build with the LLVM toolchain instead of the GNU one), as clang's default linker is ld for most platforms, not ld.lld. The documentation mentions HOSTLD=ld.lld is set but this variable is not used by Kbuild proper, only within some tools/ projects. Kbuild provides the HOSTLDFLAGS variable, which allow users to provide the '-fuse-ld' or '--ld-path' flags to customize what linker is used, but this is not super obvious to folks not familiar with Kbuild. If the user has not customized the linker already using one of these flags, default to ld.lld when using the LLVM variable, which is more in line with user expectations when using that variable. Closes: https://github.com/ClangBuiltLinux/linux/issues/2167 Link: https://patch.msgid.link/20260610-kbuild-use-lld-for-linking-hostprogs-v1-1-70396fe42ee3@kernel.org Signed-off-by: Nathan Chancellor <nathan@kernel.org>
This commit is contained in:
parent
1a1e62a5a4
commit
7158c5b67e
3
Makefile
3
Makefile
|
|
@ -525,6 +525,9 @@ OBJCOPY = $(LLVM_PREFIX)llvm-objcopy$(LLVM_SUFFIX)
|
|||
OBJDUMP = $(LLVM_PREFIX)llvm-objdump$(LLVM_SUFFIX)
|
||||
READELF = $(LLVM_PREFIX)llvm-readelf$(LLVM_SUFFIX)
|
||||
STRIP = $(LLVM_PREFIX)llvm-strip$(LLVM_SUFFIX)
|
||||
ifeq ($(filter -fuse-ld=% --ld-path=%,$(KBUILD_HOSTLDFLAGS)),)
|
||||
KBUILD_HOSTLDFLAGS += -fuse-ld=lld
|
||||
endif
|
||||
else
|
||||
CC = $(CROSS_COMPILE)gcc
|
||||
LD = $(CROSS_COMPILE)ld
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user