Re: [RFC PATCH kernel] powerpc/stack_protector: Fix external modules building
Masahiro Yamada writes: > On Thu, Jan 10, 2019 at 2:44 PM Alexey Kardashevskiy wrote: ... >> diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile >> index 488c9ed..0492f62 100644 >> --- a/arch/powerpc/Makefile >> +++ b/arch/powerpc/Makefile >> @@ -419,7 +419,11 @@ archheaders: >> ifdef CONFIG_STACKPROTECTOR >> prepare: stack_protector_prepare >> >> +ifeq ($(KBUILD_EXTMOD),) >> stack_protector_prepare: prepare0 >> +else >> +stack_protector_prepare: >> +endif > > > Honestly, I think this is ugly. Yes I would call it a hack :) > Do you want me to send an alternative solution? I don't grok how external modules are built well enough to work out what the right solution is. So if you can come up with something better that would be awesome. cheers
Re: [RFC PATCH kernel] powerpc/stack_protector: Fix external modules building
On 11/01/2019 14:08, Masahiro Yamada wrote: > On Thu, Jan 10, 2019 at 2:44 PM Alexey Kardashevskiy wrote: >> >> c3ff2a519 "powerpc/32: add stack protector support" addes stack protector >> support so now powerpc's "prepare" target depends on prepare0 (via >> stack_protector_prepare target). >> >> It works fine until we try build an external module where it fails with: >> Run: 'make -j128 SYSSRC=/home/aik/p/kernel >> SYSOUT=/home/aik/pbuild/kernel-le-pseries/ ARCH=powerpc' >> make[1]: Entering directory '/home/aik/p/kernel' >> make[2]: Entering directory '/home/aik/pbuild/kernel-le-pseries' >> make[2]: *** No rule to make target 'prepare0', needed by >> 'stack_protector_prepare'. Stop. >> >> The reason for that is that the main Linux Makefile defines "prepare0" >> only if KBUILD_EXTMOD=="". >> >> This hacks powerpc's Makefile to make external modules build again. >> >> Fixes: c3ff2a519 "powerpc/32: add stack protector support" >> Signed-off-by: Alexey Kardashevskiy >> --- >> >> >> It has been suggested that there is a better way of fixing this hence RFC. >> >> >> --- >> arch/powerpc/Makefile | 4 >> 1 file changed, 4 insertions(+) >> >> diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile >> index 488c9ed..0492f62 100644 >> --- a/arch/powerpc/Makefile >> +++ b/arch/powerpc/Makefile >> @@ -419,7 +419,11 @@ archheaders: >> ifdef CONFIG_STACKPROTECTOR >> prepare: stack_protector_prepare >> >> +ifeq ($(KBUILD_EXTMOD),) >> stack_protector_prepare: prepare0 >> +else >> +stack_protector_prepare: >> +endif > > > Honestly, I think this is ugly. > > Do you want me to send an alternative solution? YES! Thanks :) > > > > >> ifdef CONFIG_PPC64 >> $(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk >> '{if ($$2 == "PACA_CANARY") print $$3;}' include/generated/asm-offsets.h)) >> else >> -- >> 2.17.1 >> > > -- Alexey
Re: [RFC PATCH kernel] powerpc/stack_protector: Fix external modules building
On Thu, Jan 10, 2019 at 2:44 PM Alexey Kardashevskiy wrote: > > c3ff2a519 "powerpc/32: add stack protector support" addes stack protector > support so now powerpc's "prepare" target depends on prepare0 (via > stack_protector_prepare target). > > It works fine until we try build an external module where it fails with: > Run: 'make -j128 SYSSRC=/home/aik/p/kernel > SYSOUT=/home/aik/pbuild/kernel-le-pseries/ ARCH=powerpc' > make[1]: Entering directory '/home/aik/p/kernel' > make[2]: Entering directory '/home/aik/pbuild/kernel-le-pseries' > make[2]: *** No rule to make target 'prepare0', needed by > 'stack_protector_prepare'. Stop. > > The reason for that is that the main Linux Makefile defines "prepare0" > only if KBUILD_EXTMOD=="". > > This hacks powerpc's Makefile to make external modules build again. > > Fixes: c3ff2a519 "powerpc/32: add stack protector support" > Signed-off-by: Alexey Kardashevskiy > --- > > > It has been suggested that there is a better way of fixing this hence RFC. > > > --- > arch/powerpc/Makefile | 4 > 1 file changed, 4 insertions(+) > > diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile > index 488c9ed..0492f62 100644 > --- a/arch/powerpc/Makefile > +++ b/arch/powerpc/Makefile > @@ -419,7 +419,11 @@ archheaders: > ifdef CONFIG_STACKPROTECTOR > prepare: stack_protector_prepare > > +ifeq ($(KBUILD_EXTMOD),) > stack_protector_prepare: prepare0 > +else > +stack_protector_prepare: > +endif Honestly, I think this is ugly. Do you want me to send an alternative solution? > ifdef CONFIG_PPC64 > $(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk > '{if ($$2 == "PACA_CANARY") print $$3;}' include/generated/asm-offsets.h)) > else > -- > 2.17.1 > -- Best Regards Masahiro Yamada
[RFC PATCH kernel] powerpc/stack_protector: Fix external modules building
c3ff2a519 "powerpc/32: add stack protector support" addes stack protector support so now powerpc's "prepare" target depends on prepare0 (via stack_protector_prepare target). It works fine until we try build an external module where it fails with: Run: 'make -j128 SYSSRC=/home/aik/p/kernel SYSOUT=/home/aik/pbuild/kernel-le-pseries/ ARCH=powerpc' make[1]: Entering directory '/home/aik/p/kernel' make[2]: Entering directory '/home/aik/pbuild/kernel-le-pseries' make[2]: *** No rule to make target 'prepare0', needed by 'stack_protector_prepare'. Stop. The reason for that is that the main Linux Makefile defines "prepare0" only if KBUILD_EXTMOD=="". This hacks powerpc's Makefile to make external modules build again. Fixes: c3ff2a519 "powerpc/32: add stack protector support" Signed-off-by: Alexey Kardashevskiy --- It has been suggested that there is a better way of fixing this hence RFC. --- arch/powerpc/Makefile | 4 1 file changed, 4 insertions(+) diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile index 488c9ed..0492f62 100644 --- a/arch/powerpc/Makefile +++ b/arch/powerpc/Makefile @@ -419,7 +419,11 @@ archheaders: ifdef CONFIG_STACKPROTECTOR prepare: stack_protector_prepare +ifeq ($(KBUILD_EXTMOD),) stack_protector_prepare: prepare0 +else +stack_protector_prepare: +endif ifdef CONFIG_PPC64 $(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "PACA_CANARY") print $$3;}' include/generated/asm-offsets.h)) else -- 2.17.1