Skip to content

Commit ac04ef4

Browse files
nathanchancegregkh
authored andcommitted
powerpc: Adjust adding stack protector flags to KBUILD_CLAGS for clang
commit bee08a9 upstream. After fixing the HAVE_STACKPROTECTER checks for clang's in-progress per-task stack protector support [1], the build fails during prepare0 because '-mstack-protector-guard-offset' has not been added to KBUILD_CFLAGS yet but the other '-mstack-protector-guard' flags have. clang: error: '-mstack-protector-guard=tls' is used without '-mstack-protector-guard-offset', and there is no default clang: error: '-mstack-protector-guard=tls' is used without '-mstack-protector-guard-offset', and there is no default make[4]: *** [scripts/Makefile.build:229: scripts/mod/empty.o] Error 1 make[4]: *** [scripts/Makefile.build:102: scripts/mod/devicetable-offsets.s] Error 1 Mirror other architectures and add all '-mstack-protector-guard' flags to KBUILD_CFLAGS atomically during stack_protector_prepare, which resolves the issue and allows clang's implementation to fully work with the kernel. Cc: [email protected] # 6.1+ Link: llvm/llvm-project#110928 [1] Reviewed-by: Keith Packard <[email protected]> Tested-by: Keith Packard <[email protected]> Signed-off-by: Nathan Chancellor <[email protected]> Signed-off-by: Michael Ellerman <[email protected]> Link: https://patch.msgid.link/20241009-powerpc-fix-stackprotector-test-clang-v2-2-12fb86b31857@kernel.org Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent fab0610 commit ac04ef4

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

arch/powerpc/Makefile

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,6 @@ KBUILD_AFLAGS += -m$(BITS)
100100
KBUILD_LDFLAGS += -m elf$(BITS)$(LDEMULATION)
101101
endif
102102

103-
cflags-$(CONFIG_STACKPROTECTOR) += -mstack-protector-guard=tls
104-
ifdef CONFIG_PPC64
105-
cflags-$(CONFIG_STACKPROTECTOR) += -mstack-protector-guard-reg=r13
106-
else
107-
cflags-$(CONFIG_STACKPROTECTOR) += -mstack-protector-guard-reg=r2
108-
endif
109-
110103
LDFLAGS_vmlinux-y := -Bstatic
111104
LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) := -pie
112105
LDFLAGS_vmlinux-$(CONFIG_RELOCATABLE) += -z notext
@@ -402,9 +395,11 @@ prepare: stack_protector_prepare
402395
PHONY += stack_protector_prepare
403396
stack_protector_prepare: prepare0
404397
ifdef CONFIG_PPC64
405-
$(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "PACA_CANARY") print $$3;}' include/generated/asm-offsets.h))
398+
$(eval KBUILD_CFLAGS += -mstack-protector-guard=tls -mstack-protector-guard-reg=r13 \
399+
-mstack-protector-guard-offset=$(shell awk '{if ($$2 == "PACA_CANARY") print $$3;}' include/generated/asm-offsets.h))
406400
else
407-
$(eval KBUILD_CFLAGS += -mstack-protector-guard-offset=$(shell awk '{if ($$2 == "TASK_CANARY") print $$3;}' include/generated/asm-offsets.h))
401+
$(eval KBUILD_CFLAGS += -mstack-protector-guard=tls -mstack-protector-guard-reg=r2 \
402+
-mstack-protector-guard-offset=$(shell awk '{if ($$2 == "TASK_CANARY") print $$3;}' include/generated/asm-offsets.h))
408403
endif
409404
endif
410405

0 commit comments

Comments
 (0)