From: "Nicholas Piggin" <npiggin@gmail.com>
To: "Masahiro Yamada" <masahiroy@kernel.org>,
"Joel Stanley" <joel@jms.id.au>,
"Michael Ellerman" <mpe@ellerman.id.au>,
<linuxppc-dev@lists.ozlabs.org>
Cc: <linux-kbuild@vger.kernel.org>,
"Christophe Leroy" <christophe.leroy@csgroup.eu>,
"Nathan Chancellor" <nathan@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
<linux-kernel@vger.kernel.org>,
"Nicolas Schier" <nicolas@fjasle.eu>
Subject: Re: [PATCH] powerpc: remove checks for binutils older than 2.25
Date: Mon, 26 Jun 2023 11:58:06 +1000 [thread overview]
Message-ID: <CTM7K580U3T2.261RJKV58M653@wheely> (raw)
In-Reply-To: <CAK7LNAS=UCo_o-B0mgsR+SDb0sYwvQo90uag5sJ1UmB+8NqLjQ@mail.gmail.com>
On Sun Jun 25, 2023 at 6:02 PM AEST, Masahiro Yamada wrote:
> On Thu, Jan 19, 2023 at 9:37 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > On Thu, Jan 19, 2023 at 9:12 PM Joel Stanley <joel@jms.id.au> wrote:
> > >
> > > On Thu, 19 Jan 2023 at 08:24, Masahiro Yamada <masahiroy@kernel.org> wrote:
> > > >
> > > > Commit e4412739472b ("Documentation: raise minimum supported version of
> > > > binutils to 2.25") allows us to remove the checks for old binutils.
> > > >
> > > > There is no more user for ld-ifversion. Remove it as well.
> > >
> > > ppc kernels fail to link with 2.27 under some configurations:
> > >
> > > https://github.com/linuxppc/issues/issues/388
> > >
> > > We may want to use ld-ifversion to exclude that version.
> >
> >
>
>
> Ping?
>
>
>
>
> >
> > For LLD, CONFIG option is directly checked.
Yeah, doesn't seem too difficult to add new linker version tests if needed.
> >
> >
> > masahiro@zoe:~/ref/linux(master)$ git grep CONFIG_LLD_VERSION
> > Makefile:ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
> > arch/riscv/Makefile:ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 150000),y)
> > arch/x86/Makefile:ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
> > scripts/Kbuild.include:# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000)
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > > >
> > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> > > > ---
> > > >
> > > > arch/powerpc/Makefile | 22 +---------------------
> > > > arch/powerpc/lib/Makefile | 2 +-
> > > > scripts/Makefile.compiler | 4 ----
> > > > 3 files changed, 2 insertions(+), 26 deletions(-)
> > > >
> > > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
> > > > index dc4cbf0a5ca9..3d265b16c0ae 100644
> > > > --- a/arch/powerpc/Makefile
> > > > +++ b/arch/powerpc/Makefile
> > > > @@ -42,18 +42,13 @@ machine-$(CONFIG_PPC64) += 64
> > > > machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
> > > > UTS_MACHINE := $(subst $(space),,$(machine-y))
> > > >
> > > > -# XXX This needs to be before we override LD below
> > > > -ifdef CONFIG_PPC32
> > > > -KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
> > > > -else
> > > > -ifeq ($(call ld-ifversion, -ge, 22500, y),y)
> > > > +ifeq ($(CONFIG_PPC64)$(CONFIG_LD_IS_BFD),yy)
> > > > # Have the linker provide sfpr if possible.
> > > > # There is a corresponding test in arch/powerpc/lib/Makefile
> > > > KBUILD_LDFLAGS_MODULE += --save-restore-funcs
> > > > else
> > > > KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
> > > > endif
> > > > -endif
> > > >
> > > > ifdef CONFIG_CPU_LITTLE_ENDIAN
> > > > KBUILD_CFLAGS += -mlittle-endian
> > > > @@ -389,8 +384,6 @@ vdso_prepare: prepare0
> > > > $(build)=arch/powerpc/kernel/vdso include/generated/vdso64-offsets.h)
> > > > endif
> > > >
> > > > -archprepare: checkbin
> > > > -
> > > > archheaders:
> > > > $(Q)$(MAKE) $(build)=arch/powerpc/kernel/syscalls all
> > > >
> > > > @@ -405,16 +398,3 @@ else
> > > > $(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "TASK_CANARY") print $$3;}' include/generated/asm-offsets.h))
> > > > endif
> > > > endif
> > > > -
> > > > -PHONY += checkbin
> > > > -# Check toolchain versions:
> > > > -# - gcc-4.6 is the minimum kernel-wide version so nothing required.
> > > > -checkbin:
> > > > - @if test "x${CONFIG_LD_IS_LLD}" != "xy" -a \
> > > > - "x$(call ld-ifversion, -le, 22400, y)" = "xy" ; then \
> > > > - echo -n '*** binutils 2.24 miscompiles weak symbols ' ; \
> > > > - echo 'in some circumstances.' ; \
> > > > - echo '*** binutils 2.23 do not define the TOC symbol ' ; \
> > > > - echo -n '*** Please use a different binutils version.' ; \
> > > > - false ; \
> > > > - fi
> > > > diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
> > > > index 4de71cbf6e8e..c53618c34b70 100644
> > > > --- a/arch/powerpc/lib/Makefile
> > > > +++ b/arch/powerpc/lib/Makefile
> > > > @@ -42,7 +42,7 @@ obj-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o
> > > > # 64-bit linker creates .sfpr on demand for final link (vmlinux),
> > > > # so it is only needed for modules, and only for older linkers which
> > > > # do not support --save-restore-funcs
> > > > -ifeq ($(call ld-ifversion, -lt, 22500, y),y)
> > > > +ifndef CONFIG_LD_IS_BFD
> > > > extra-$(CONFIG_PPC64) += crtsavres.o
> > > > endif
This test got inverted for LLD now AFAIKS?
Does LLVM support --save-restore-funcs and supply .sfpr already I
wonder? We could remove this stuff entirely.
Thanks,
Nick
WARNING: multiple messages have this Message-ID (diff)
From: "Nicholas Piggin" <npiggin@gmail.com>
To: "Masahiro Yamada" <masahiroy@kernel.org>,
"Joel Stanley" <joel@jms.id.au>,
"Michael Ellerman" <mpe@ellerman.id.au>,
<linuxppc-dev@lists.ozlabs.org>
Cc: Nicolas Schier <nicolas@fjasle.eu>,
linux-kbuild@vger.kernel.org,
Nick Desaulniers <ndesaulniers@google.com>,
linux-kernel@vger.kernel.org,
Nathan Chancellor <nathan@kernel.org>
Subject: Re: [PATCH] powerpc: remove checks for binutils older than 2.25
Date: Mon, 26 Jun 2023 11:58:06 +1000 [thread overview]
Message-ID: <CTM7K580U3T2.261RJKV58M653@wheely> (raw)
In-Reply-To: <CAK7LNAS=UCo_o-B0mgsR+SDb0sYwvQo90uag5sJ1UmB+8NqLjQ@mail.gmail.com>
On Sun Jun 25, 2023 at 6:02 PM AEST, Masahiro Yamada wrote:
> On Thu, Jan 19, 2023 at 9:37 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
> >
> > On Thu, Jan 19, 2023 at 9:12 PM Joel Stanley <joel@jms.id.au> wrote:
> > >
> > > On Thu, 19 Jan 2023 at 08:24, Masahiro Yamada <masahiroy@kernel.org> wrote:
> > > >
> > > > Commit e4412739472b ("Documentation: raise minimum supported version of
> > > > binutils to 2.25") allows us to remove the checks for old binutils.
> > > >
> > > > There is no more user for ld-ifversion. Remove it as well.
> > >
> > > ppc kernels fail to link with 2.27 under some configurations:
> > >
> > > https://github.com/linuxppc/issues/issues/388
> > >
> > > We may want to use ld-ifversion to exclude that version.
> >
> >
>
>
> Ping?
>
>
>
>
> >
> > For LLD, CONFIG option is directly checked.
Yeah, doesn't seem too difficult to add new linker version tests if needed.
> >
> >
> > masahiro@zoe:~/ref/linux(master)$ git grep CONFIG_LLD_VERSION
> > Makefile:ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
> > arch/riscv/Makefile:ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 150000),y)
> > arch/x86/Makefile:ifeq ($(call test-lt, $(CONFIG_LLD_VERSION), 130000),y)
> > scripts/Kbuild.include:# Usage: $(call test-lt, $(CONFIG_LLD_VERSION), 150000)
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > > >
> > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> > > > ---
> > > >
> > > > arch/powerpc/Makefile | 22 +---------------------
> > > > arch/powerpc/lib/Makefile | 2 +-
> > > > scripts/Makefile.compiler | 4 ----
> > > > 3 files changed, 2 insertions(+), 26 deletions(-)
> > > >
> > > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
> > > > index dc4cbf0a5ca9..3d265b16c0ae 100644
> > > > --- a/arch/powerpc/Makefile
> > > > +++ b/arch/powerpc/Makefile
> > > > @@ -42,18 +42,13 @@ machine-$(CONFIG_PPC64) += 64
> > > > machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
> > > > UTS_MACHINE := $(subst $(space),,$(machine-y))
> > > >
> > > > -# XXX This needs to be before we override LD below
> > > > -ifdef CONFIG_PPC32
> > > > -KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
> > > > -else
> > > > -ifeq ($(call ld-ifversion, -ge, 22500, y),y)
> > > > +ifeq ($(CONFIG_PPC64)$(CONFIG_LD_IS_BFD),yy)
> > > > # Have the linker provide sfpr if possible.
> > > > # There is a corresponding test in arch/powerpc/lib/Makefile
> > > > KBUILD_LDFLAGS_MODULE += --save-restore-funcs
> > > > else
> > > > KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
> > > > endif
> > > > -endif
> > > >
> > > > ifdef CONFIG_CPU_LITTLE_ENDIAN
> > > > KBUILD_CFLAGS += -mlittle-endian
> > > > @@ -389,8 +384,6 @@ vdso_prepare: prepare0
> > > > $(build)=arch/powerpc/kernel/vdso include/generated/vdso64-offsets.h)
> > > > endif
> > > >
> > > > -archprepare: checkbin
> > > > -
> > > > archheaders:
> > > > $(Q)$(MAKE) $(build)=arch/powerpc/kernel/syscalls all
> > > >
> > > > @@ -405,16 +398,3 @@ else
> > > > $(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "TASK_CANARY") print $$3;}' include/generated/asm-offsets.h))
> > > > endif
> > > > endif
> > > > -
> > > > -PHONY += checkbin
> > > > -# Check toolchain versions:
> > > > -# - gcc-4.6 is the minimum kernel-wide version so nothing required.
> > > > -checkbin:
> > > > - @if test "x${CONFIG_LD_IS_LLD}" != "xy" -a \
> > > > - "x$(call ld-ifversion, -le, 22400, y)" = "xy" ; then \
> > > > - echo -n '*** binutils 2.24 miscompiles weak symbols ' ; \
> > > > - echo 'in some circumstances.' ; \
> > > > - echo '*** binutils 2.23 do not define the TOC symbol ' ; \
> > > > - echo -n '*** Please use a different binutils version.' ; \
> > > > - false ; \
> > > > - fi
> > > > diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile
> > > > index 4de71cbf6e8e..c53618c34b70 100644
> > > > --- a/arch/powerpc/lib/Makefile
> > > > +++ b/arch/powerpc/lib/Makefile
> > > > @@ -42,7 +42,7 @@ obj-$(CONFIG_FUNCTION_ERROR_INJECTION) += error-inject.o
> > > > # 64-bit linker creates .sfpr on demand for final link (vmlinux),
> > > > # so it is only needed for modules, and only for older linkers which
> > > > # do not support --save-restore-funcs
> > > > -ifeq ($(call ld-ifversion, -lt, 22500, y),y)
> > > > +ifndef CONFIG_LD_IS_BFD
> > > > extra-$(CONFIG_PPC64) += crtsavres.o
> > > > endif
This test got inverted for LLD now AFAIKS?
Does LLVM support --save-restore-funcs and supply .sfpr already I
wonder? We could remove this stuff entirely.
Thanks,
Nick
next prev parent reply other threads:[~2023-06-26 1:58 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-19 8:22 [PATCH] powerpc: remove checks for binutils older than 2.25 Masahiro Yamada
2023-01-19 8:22 ` Masahiro Yamada
2023-01-19 12:12 ` Joel Stanley
2023-01-19 12:12 ` Joel Stanley
2023-01-19 12:37 ` Masahiro Yamada
2023-01-19 12:37 ` Masahiro Yamada
2023-06-25 8:02 ` Masahiro Yamada
2023-06-25 8:02 ` Masahiro Yamada
2023-06-26 1:58 ` Nicholas Piggin [this message]
2023-06-26 1:58 ` Nicholas Piggin
2023-06-26 3:11 ` Masahiro Yamada
2023-06-26 3:11 ` Masahiro Yamada
2023-06-26 4:41 ` Nicholas Piggin
2023-06-26 4:41 ` Nicholas Piggin
2023-06-27 11:58 ` Michael Ellerman
2023-06-27 11:58 ` Michael Ellerman
2023-07-03 5:26 ` Michael Ellerman
2023-07-03 5:26 ` Michael Ellerman
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=CTM7K580U3T2.261RJKV58M653@wheely \
--to=npiggin@gmail.com \
--cc=christophe.leroy@csgroup.eu \
--cc=joel@jms.id.au \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=masahiroy@kernel.org \
--cc=mpe@ellerman.id.au \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=nicolas@fjasle.eu \
/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.