Re: Fix and simplify -z noreloc-overflow" linker check in arch/x86/boot/compressed/Makefile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 12, 2019 at 5:06 PM Masahiro Yamada
<yamada.masahiro@xxxxxxxxxxxxx> wrote:
>
> On Tue, Mar 12, 2019 at 6:13 PM Sedat Dilek <sedat.dilek@xxxxxxxxx> 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)
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)

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



[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux