All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Chancellor <natechancellor@gmail.com>
To: Nick Desaulniers <ndesaulniers@google.com>
Cc: yamada.masahiro@socionext.com, keescook@chromium.org,
	clang-built-linux@googlegroups.com,
	Michal Marek <michal.lkml@markovi.net>,
	linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4] Makefile: lld: tell clang to use lld
Date: Tue, 2 Apr 2019 00:57:25 -0700	[thread overview]
Message-ID: <20190402075725.GB5308@archlinux-ryzen> (raw)
In-Reply-To: <20190402073317.56529-1-ndesaulniers@google.com>

On Tue, Apr 02, 2019 at 12:33:17AM -0700, Nick Desaulniers wrote:
> 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: https://github.com/ClangBuiltLinux/linux/issues/342
> Link: https://github.com/ClangBuiltLinux/linux/issues/366
> Link: https://github.com/ClangBuiltLinux/linux/issues/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>

> ---
> Changes V3->V4:
> * Unconditionally add -Qunused-arguments sooners, as per Nathan.
> * Slight modification to commit message for that point.
> Changes V2->V3:
> * Use absolute path based on `which $LD` as per Masahiro.
> * Add -Qunused-arguments.
> * Drop tested-by/reviewed-by tags, since this patched has changed enough
>   to warrant re-testing/re-review, IMO.
> * Add more info to the commit message.
> Changes V1->V2:
> * add reviewed and tested by tags.
> * move this addition up 2 statments so that it's properly added to
>   KBUILD_*FLAGS as per Nathan.
> 
>  Makefile | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/Makefile b/Makefile
> index 026fbc450906..b290e76e1ca5 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -514,6 +514,10 @@ ifneq ($(GCC_TOOLCHAIN),)
>  CLANG_FLAGS	+= --gcc-toolchain=$(GCC_TOOLCHAIN)
>  endif
>  CLANG_FLAGS	+= -no-integrated-as
> +ifneq ($(shell $(LD) --version 2>&1 | head -n 1 | grep LLD),)
> +CLANG_FLAGS	+= -fuse-ld=$(shell which $(LD))
> +endif
> +KBUILD_CPPFLAGS	+= -Qunused-arguments
>  KBUILD_CFLAGS	+= $(CLANG_FLAGS)
>  KBUILD_AFLAGS	+= $(CLANG_FLAGS)
>  export CLANG_FLAGS
> @@ -716,7 +720,6 @@ stackp-flags-$(CONFIG_STACKPROTECTOR_STRONG)      := -fstack-protector-strong
>  KBUILD_CFLAGS += $(stackp-flags-y)
>  
>  ifdef CONFIG_CC_IS_CLANG
> -KBUILD_CPPFLAGS += $(call cc-option,-Qunused-arguments,)
>  KBUILD_CFLAGS += $(call cc-disable-warning, format-invalid-specifier)
>  KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
>  KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
> -- 
> 2.21.0.392.gf8f6787159e-goog
> 

  reply	other threads:[~2019-04-02  7:57 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-11 19:30 [PATCH v2 1/4] init/Kconfig: add config support for detecting linker ndesaulniers
2019-02-11 19:30 ` [PATCH v2 2/4] Makefile: clang: choose GCC_TOOLCHAIN_DIR not on LD ndesaulniers
2019-02-16  3:02   ` Masahiro Yamada
2019-02-11 19:30 ` [PATCH v2 3/4] Makefile: lld: tell clang to use lld ndesaulniers
2019-02-13 14:58   ` Masahiro Yamada
2019-02-13 17:41     ` Nick Desaulniers
2019-02-16  3:07       ` Masahiro Yamada
2019-04-02  3:54         ` Nick Desaulniers
2019-04-02  4:49           ` Masahiro Yamada
2019-04-02  7:08             ` [PATCH v3] " Nick Desaulniers
2019-04-02  7:27               ` Nathan Chancellor
2019-04-02  7:33                 ` [PATCH v4] " Nick Desaulniers
2019-04-02  7:57                   ` Nathan Chancellor [this message]
2019-04-02  7:52               ` [PATCH v3] " Sedat Dilek
2019-04-02  7:56                 ` Nathan Chancellor
2019-04-05 10:16               ` Masahiro Yamada
2019-04-05 16:11                 ` Kees Cook
2019-04-05 16:52                   ` Nick Desaulniers
2019-04-07  2:20                     ` Masahiro Yamada
2019-02-11 19:30 ` [PATCH v2 4/4] Makefile: lld: set -O2 linker flag when linking with LLD ndesaulniers
2019-02-12 12:22   ` Peter Zijlstra
2019-02-16  2:55   ` Masahiro Yamada
2019-02-11 19:30 ` [PATCH v2 0/4] Improve kernel LLD support ndesaulniers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190402075725.GB5308@archlinux-ryzen \
    --to=natechancellor@gmail.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=keescook@chromium.org \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michal.lkml@markovi.net \
    --cc=ndesaulniers@google.com \
    --cc=yamada.masahiro@socionext.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.