Hi Sedat, On Wed, Mar 13, 2019 at 5:52 PM Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote: > > 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) 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... 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