From f51848680915eae487fefb74e2eca008b8649745 Mon Sep 17 00:00:00 2001 From: Benjamin Herrenschmidt Date: Wed, 21 Dec 2016 18:26:32 +1100 Subject: [PATCH] Makefile: Disable stack protector due to gcc problems MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Depending on how it was built, gcc will use the canary from a global (works for us) or from the TLS (doesn't work for us and accesses random stuff instead). Fixing that would be tricky. There are talks of adding a gcc option to force use of globals, but in the meantime, disable the stack protector Signed-off-by: Benjamin Herrenschmidt  [stewart@linux.vnet.ibm.com: add -fno-stack-protector] Signed-off-by: Stewart Smith (cherry picked from commit fe6f1f982b562ba855bb68fb51545f104078f546) Signed-off-by: Stewart Smith --- Makefile.main | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Makefile.main b/Makefile.main index 6b011d7d6e59..f6d9a436e3dc 100644 --- a/Makefile.main +++ b/Makefile.main @@ -78,12 +78,18 @@ ifeq ($(SKIBOOT_GCOV),1) CFLAGS += -fprofile-arcs -ftest-coverage -DSKIBOOT_GCOV=1 endif +# Stack protector disabled for now. gcc tends to use the TLS to +# access the canary (depending on how gcc was built), and this won't +# work for us. +# ifeq ($(STACK_CHECK),1) -CFLAGS += -fstack-protector-all -pg +#CFLAGS += -fstack-protector-all -pg +CFLAGS += -fno-stack-protector -pg CPPFLAGS += -DSTACK_CHECK_ENABLED else -CFLAGS += -fstack-protector -CFLAGS += $(call try-cflag,$(CC),-fstack-protector-strong) +CFLAGS += -fno-stack-protector +#CFLAGS += -fstack-protector +#CFLAGS += $(call try-cflag,$(CC),-fstack-protector-strong) endif CFLAGS += $(call try-cflag,$(CC),-Wjump-misses-init) \