powerpc: Keep const vars out of writable .sdata
PATCH 1/1 powerpc: Keep const vars out of writable .sdata
From: Segher Boessenkool <[email protected]>
Newer gcc will support "-mno-readonly-in-sdata"[1], which makes sure that the optimization on PPC32 for variables getting moved into the .sdata section will not apply to const variables (which must be in .rodata).
This was originally noticed in mm/rodata_test.c when rodata_test_data was not static:
c0695034 g O .data 00000004 rodata_test_data
After this patch with an updated compiler, this is correctly in .rodata.
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82411
--- arch/powerpc/Makefile | 2 ++ 1 file changed, 2 insertions(+)
arch/powerpc/Makefile +2 -0
@@ -141,7 +141,9 @@ AFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mabi=elfv1) endif CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mcmodel=medium,$(call cc-option,-mminimal-toc)) CFLAGS-$(CONFIG_PPC64) += $(call cc-option,-mno-pointers-to-nested-functions) + CFLAGS-$(CONFIG_PPC32) := -ffixed-r2 $(MULTIPLEWORD) +CFLAGS-$(CONFIG_PPC32) += $(call cc-option,-mno-readonly-in-sdata) ifeq ($(CONFIG_PPC_BOOK3S_64),y) CFLAGS-$(CONFIG_GENERIC_CPU) += $(call cc-option,-mtune=power7,-mtune=power4)
Signature · 6 lines
2.7.4 -- Kees Cook Pixel Security
Michael Ellerman
AppliedQuoted 11 lines · Kees Cook
From: Segher Boessenkool <[email protected]>
Newer gcc will support "-mno-readonly-in-sdata"[1], which makes sure that the optimization on PPC32 for variables getting moved into the .sdata section will not apply to const variables (which must be in .rodata).
This was originally noticed in
mm/rodata_test.cwhenrodata_test_datawas not static:
c0695034g O .data 00000004rodata_test_data
Quoted 7 lines
After this patch with an updated compiler, this is correctly in .rodata.
[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82411
Reported-by Christophe Leroy <[email protected]>Signed-off-by Segher Boessenkool <[email protected]>Signed-off-by Kees Cook <[email protected]>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/51d42f0f5fd6c74144d19bf6a66352
cheers