All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sedat Dilek <sedat.dilek@gmail.com>
To: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Linux Kbuild mailing list <linux-kbuild@vger.kernel.org>
Subject: Re: Fix and simplify -z noreloc-overflow" linker check in arch/x86/boot/compressed/Makefile
Date: Mon, 18 Mar 2019 10:49:31 +0100	[thread overview]
Message-ID: <CA+icZUU8=fqNSLFviK2OpDN9piLPck9X3D5-fUtr0Y6SpxrgVg@mail.gmail.com> (raw)
In-Reply-To: <CAK7LNAQoBs5_0t_FUqRCBm4ir4PuhyW1gSL+xmoM8_uPHrBP1Q@mail.gmail.com>

On Mon, Mar 18, 2019 at 10:46 AM Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
>
> Hi Sedat,
>
>
> On Wed, Mar 13, 2019 at 5:52 PM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> >
> > On Tue, Mar 12, 2019 at 5:06 PM Masahiro Yamada
> > <yamada.masahiro@socionext.com> wrote:
> > >
> > > On Tue, Mar 12, 2019 at 6:13 PM Sedat Dilek <sedat.dilek@gmail.com> wrote:
> > > >
> > > > Hi Masahiro Yamada,
> > > >
> > > > do you have an idea how to fix this properly - as for example LLD
> > > > hasn't this option?
> > > > Speaking of the shell-line.
> > > > I mean use the method "call ld-option".
> > > >
> > > > The below should be if $linker supports z noreloc-overflow then set
> > > > -pie together with --no-dynamic-linker.
> > > > AFAICS this is for x86-64-only?
> > > >
> > > > Is it possible to simplify and have have one single line...?
> > >
> > >
> > > Sorry, I do not understand.
> > >
> > > Could you clarify what you want to achieve?
> > >
> > >
> > > Thanks.
> > >
> > >
> > >
> > >
> > >
> > >
> > > > KBUILD_LDFLAGS += $(call ld-option, -pie) $(call ld-option, --no-dynamic-linker)
> > > >
> > > > [ arch/x86/boot/compressed/Makefile ]
> > > >
> > > > KBUILD_LDFLAGS := -m elf_$(UTS_MACHINE)
> > > > # Compressed kernel should be built as PIE since it may be loaded at any
> > > > # address by the bootloader.
> > > > ifeq ($(CONFIG_X86_32),y)
> > > > KBUILD_LDFLAGS += $(call ld-option, -pie) $(call ld-option, --no-dynamic-linker)
> >
> > See below.
> >
> > > > else
> > > > # To build 64-bit compressed kernel as PIE, we disable relocation
> > > > # overflow check to avoid relocation overflow error with a new linker
> > > > # command-line option, -z noreloc-overflow.
> >
> > > > KBUILD_LDFLAGS += $(shell $(LD) --help 2>&1 | grep -q "\-z noreloc-overflow" \
> > > >         && echo "-z noreloc-overflow -pie --no-dynamic-linker")
> >
> > First of all, I would like to have the "-z noreloc-overflow" checked
> > via "call ld-option".
> > Where I have problems is how to check the following, "-pie
> > --no-dynamic-linker" shall be set if "-z noreloc-overflow" is
> > available.
> > According to the comments, this is for the  CONFIG_X86_64 case.
> >
> > ifeq ($(CONFIG_X86_64),y)
> > KBUILD_LDFLAGS += $(call ld-option, -z noreloc-overflow)
>
>
> Is this equivalent to
>    $(LD) --help 2>&1 | grep -q "\-z noreloc-overflow" ... ?
>
>
>
>
>
> > if z-noreloc-oevrflow-ld-option-is-available
> > KBUILD_LDFLAGS += $(call ld-option, -pie) $(call ld-option, --no-dynamic-linker)
> > endif # z-noreloc-oevrflow-ld-option-is-available
> > endif # CONFIG_X86_64
> >
> > As we have the 2nd check for the CONFIG_X86_32 case already, I asked
> > myself if it is possible to use it at one single place.
> >
> > KBUILD_LDFLAGS += $(call ld-option, -pie) $(call ld-option, --no-dynamic-linker)
>
>
> If you want to factor out the -pie --no-dynamic-linker tests,
> the following may work.
>
> It is not very clean...
>

Hehe.
Thanks for taking care!

- sed@ -

>
> ifeq ($(CONFIG_X86_64),y)
> KBUILD_LDFLAGS = $(shell $(LD) --help 2>&1 | grep -q "\-z noreloc-overflow" \
>        && echo "-z noreloc-overflow")
> endif
>
> ifneq ($(filter noreloc-overflow,$(KBUILD_LDFLAGS))$(CONFIG_X86_32),)
> KBUILD_LDFLAGS += $(call ld-option, -pie) $(call ld-option, --no-dynamic-linker)
> endif
>
>
>
>
> Perhaps, testing flags in Kconfig might make it a bit cleaner,
> but I am not sure.
>
>
> Masahiro
>
>
> > Is this now clearer?
> >
> > Regards,
> > - Sedat -
> >
> > > > endif
> > > > LDFLAGS_vmlinux := -T
> > > >
> > > > If you need more infos let me know.
> > > >
> > > > Thanks.
> > > >
> > > > Regards,
> > > > - Sedat -
> > > >
> > > > Link: https://github.com/ClangBuiltLinux/linux/issues/411
> > >
> > >
> > >
> > > --
> > > Best Regards
> > > Masahiro Yamada
>
>
>
> --
> Best Regards
> Masahiro Yamada

  reply	other threads:[~2019-03-18  9:49 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-12  9:13 Fix and simplify -z noreloc-overflow" linker check in arch/x86/boot/compressed/Makefile Sedat Dilek
2019-03-12 16:05 ` Masahiro Yamada
2019-03-13  8:51   ` Sedat Dilek
2019-03-18  9:45     ` Masahiro Yamada
2019-03-18  9:49       ` Sedat Dilek [this message]
2019-03-18 11:51       ` Sedat Dilek
2019-03-19  0:53         ` Masahiro Yamada

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='CA+icZUU8=fqNSLFviK2OpDN9piLPck9X3D5-fUtr0Y6SpxrgVg@mail.gmail.com' \
    --to=sedat.dilek@gmail.com \
    --cc=linux-kbuild@vger.kernel.org \
    --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.