summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2018-02-28 17:02:49 -0800
committerMichael Ellerman <mpe@ellerman.id.au>2018-03-06 09:21:21 +1100
commit51d42f0f5fd6c74144d19bf6a663521e2ea99765 (patch)
tree0d047444b749a85aa45b8aec8246dae5122319b1 /arch
parent661e50bc853209e41a5c14a290ca4decc43cbfd1 (diff)
downloadtalos-obmc-linux-51d42f0f5fd6c74144d19bf6a663521e2ea99765.tar.gz
talos-obmc-linux-51d42f0f5fd6c74144d19bf6a663521e2ea99765.zip
powerpc: Keep const vars out of writable .sdata
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 Reported-by: Christophe Leroy <christophe.leroy@c-s.fr> Signed-off-by: Segher Boessenkool <segher@kernel.crashing.org> Signed-off-by: Kees Cook <keescook@chromium.org> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch')
-rw-r--r--arch/powerpc/Makefile2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index ccd2556bdb53..c7628e973084 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -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)
OpenPOWER on IntegriCloud