From: Masahiro Yamada <yamada.masahiro@socionext.com>
To: Nick Desaulniers <ndesaulniers@google.com>
Cc: Kees Cook <keescook@chromium.org>,
clang-built-linux@googlegroups.com,
Nathan Chancellor <natechancellor@gmail.com>,
Michal Marek <michal.lkml@markovi.net>,
Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Nathan Lynch <nathan_lynch@mentor.com>,
Peter Smith <peter.smith@linaro.org>
Subject: Re: [PATCH v3] Makefile: lld: tell clang to use lld
Date: Sun, 7 Apr 2019 11:20:01 +0900 [thread overview]
Message-ID: <CAK7LNAS+n44wBUfSJktmXWuz1=UQkuNOq3_M4K-62+ymH_V1jw@mail.gmail.com> (raw)
In-Reply-To: <CAKwvOd=eBWm6B24soOGhxtCk+TCeKqwra0_b-V6kTYDSHLOg_w@mail.gmail.com>
Hi Kees, Nick,
On Sat, Apr 6, 2019 at 1:52 AM Nick Desaulniers <ndesaulniers@google.com> wrote:
>
> On Fri, Apr 5, 2019 at 9:11 AM Kees Cook <keescook@chromium.org> wrote:
> >
> > On Fri, Apr 5, 2019 at 3:17 AM Masahiro Yamada
> > <yamada.masahiro@socionext.com> wrote:
> > > I want to propose alternative solution.
> > > Please check the attached patches.
>
> ```
> My plan is to rewrite all VDSO Makefiles to use $(LD), then delete cc-ldoption.
> ```
>
> I agree with that as a possible solution as well; I think it's best to
> just invoke the linker directly rather than use the compiler as the
> driver. Just small nits with the 2 attached patches, but I think they
> will also work for us.
>
> Looks like there's 15 call sites across 12 files, plus Documentation/
> and scripts/Kbuild.include; removing it seems feasible and I'd be
> happy to help if you'd welcome the patches?
Yeah, your help is appreciated.
I just worked on two Makefiles
because I wanted to hear opinions
before investing more efforts.
Basically, you are positive to this approach,
so let's go this way.
> Let's start with that series of changes, but I suspect we will
> ultimately need to revisit -fuse-ld=. I was just thinking that even
> my proposed patch doesn't do anything for KBUILD_HOSTCFLAGS, for
> example.
Host tools are not so important, but I agree.
BTW, why does clang invoke bfd linker instead of
lld by default?
If we want to make llvm self-contained,
I believe clang should use ld.lld by default.
> I worry that bfd may still be invoked by Clang at some point
> in the build. I will try to test in an environment with no GNU
> binutils.
>
> > In the 0001 patch of arch/arm/vdso/Makefile:
> > > ...
> > > -VDSO_LDFLAGS += $(call cc-ldoption, -fuse-ld=bfd)
> > > +ldflags-y = -Bsymbolic --no-undefined -soname=linux-vdso.so.1 \
> > > + -z max-page-size=4096 -z common-page-size=4096 \
> > > + -nostdlib -shared \
> > > + $(call ld-option, --hash-style=sysv) \
>
> I think the vdso's should all REQUIRE --hash-style=sysv; the kselftest
> for vdso's will fail otherwise. I could always follow up with patches
> for that if we didn't want to conflate changes.
>
> > > + $(call ld-option, --build-id) \
> > > + -T
>
> Was it intentional to add -T standalone? The man page for `ld` says
> it needs an additional filename to follow -T.
This is because I wanted to re-use cmd_ld
defined in scripts/Makefile.lib
$(real-prereqs) contains the linker scripts and objects.
> Or rather is optional
> if a -L flag is specified?
>
> >
> > I see that "-fuse-ld=bfd" is explicitly dropped here, which could
> > reintroduce the problem fixed in d2b30cd4b722 ("ARM: 8384/1: VDSO:
> > force use of BFD linker") (and 3473f26592c1c). Does ld.gold still
> > exhibit this problem? If so, we'll need to detect gold and force bfd
> > still maybe?
I intentionally dropped -fuse-ld=bfd.
With my patch applied, users have full control
of the linker by passing LD=.
Since we cannot link vmlinux with gold,
users should definitely pass a bfd linker.
> The arm32 vdso Makefile is an oddity in this regard. I think what
> Kees described is best. Rather than always set the linker to bfd
> (which harms linkers like lld), detect if gold is being used and if so
> set the linker back to bfd.
>
> For arm64, lld has this issue with -n,
> https://github.com/ClangBuiltLinux/linux/issues/340, but I think we
> can fix that in a follow up patch. Same thoughts on --hash-style and
> -T.
If we need to add something depending on
the linker type,
I do not mind doing like this.
ldflags-$(CONFIG_LD_IS_GOLD) += ...
ldflags-$(CONFIG_LD_IS_LLD) += ...
But, it is a different issue.
--
Best Regards
Masahiro Yamada
next prev parent reply other threads:[~2019-04-07 2:20 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
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 [this message]
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='CAK7LNAS+n44wBUfSJktmXWuz1=UQkuNOq3_M4K-62+ymH_V1jw@mail.gmail.com' \
--to=yamada.masahiro@socionext.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=natechancellor@gmail.com \
--cc=nathan_lynch@mentor.com \
--cc=ndesaulniers@google.com \
--cc=peter.smith@linaro.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).