Skip to content

Commit

Permalink
BACKPORT: FROMLIST: Makefile: lld: tell clang to use lld
Browse files Browse the repository at this point in the history
This is needed because clang doesn't select which linker to use based on
$LD but rather -fuse-ld={bfd,gold,lld,<absolute path to linker>}.  This
is problematic especially for cc-ldoption, which checks for linker flag
support via invoking the compiler, rather than the linker.

Select the linker via absolute path from $PATH via `which`. This allows
you to build with:

$ make LD=ld.lld
$ make LD=ld.lld-8
$ make LD=/path/to/ld.lld

Add -Qunused-arguments to KBUILD_CPPFLAGS sooner, as otherwise
Clang likes to complain about -fuse-lld= being unused when compiling but
not linking (-c) such as when cc-option is used. There's no need to
guard with cc-option.

Link: ClangBuiltLinux/linux#342
Link: ClangBuiltLinux/linux#366
Link: ClangBuiltLinux/linux#357
Suggested-by: Nathan Chancellor <natechancellor@gmail.com>
Suggested-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
Tested-by: Nathan Chancellor <natechancellor@gmail.com>
(am from https://lore.kernel.org/patchwork/patch/1057183/)
[kdrag0n: Backported to k4.14 with the following changes:
           - Replaced full version check with ld-name call because we
             added support for lld to ld-name
]
Signed-off-by: Danny Lin <danny@kdrag0n.dev>
Signed-off-by: Panchajanya1999 <panchajanya@azure-dev.live>

Change-Id: I3294ba544a0c204c6b3464a1d77a04bba442b0ad
Signed-off-by: Panchajanya1999 <panchajanya@azure-dev.live>
  • Loading branch information
nickdesaulniers authored and mizdrake7 committed Jul 12, 2023
1 parent 47284c2 commit b11a4c4
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,10 @@ ifneq ($(LLVM_IAS),1)
CLANG_FLAGS += -no-integrated-as
endif
CLANG_FLAGS += -Werror=unknown-warning-option
ifeq ($(ld-name),lld)
CLANG_FLAGS += -fuse-ld=$(shell which $(LD))
endif
KBUILD_CPPFLAGS += -Qunused-arguments
KBUILD_CFLAGS += $(CLANG_FLAGS)
KBUILD_AFLAGS += $(CLANG_FLAGS)
export CLANG_FLAGS
Expand Down

0 comments on commit b11a4c4

Please sign in to comment.