Discussion:
[PATCH v2] kernel: use the gnu89 standard explicitly
Sasha Levin
2014-10-20 02:40:55 UTC
Permalink
gcc5 changes the default standard to c11, which makes kernel
build unhappy.

Explicitly define the kernel standard to be gnu89 which should
keep everything working exactly like it was before gcc5.

Signed-off-by: Sasha Levin <***@oracle.com>
---

Changes from v1:
- I've accidently placed the statement in a CONFIG_READABLE_ASM.
It shouldn't be there.

Makefile | 1 +
1 file changed, 1 insertion(+)

diff --git a/Makefile b/Makefile
index dd7e1cb..eb0c026 100644
--- a/Makefile
+++ b/Makefile
@@ -625,6 +625,7 @@ all: vmlinux
include $(srctree)/arch/$(SRCARCH)/Makefile

KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
+KBUILD_CFLAGS += $(call cc-option,-std=gnu89,)

ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
KBUILD_CFLAGS += -Os $(call cc-disable-warning,maybe-uninitialized,)
--
1.7.10.4
Kirill A. Shutemov
2014-10-20 09:23:12 UTC
Permalink
Post by Sasha Levin
gcc5 changes the default standard to c11, which makes kernel
build unhappy.
Explicitly define the kernel standard to be gnu89 which should
keep everything working exactly like it was before gcc5.
---
- I've accidently placed the statement in a CONFIG_READABLE_ASM.
It shouldn't be there.
Makefile | 1 +
1 file changed, 1 insertion(+)
diff --git a/Makefile b/Makefile
index dd7e1cb..eb0c026 100644
--- a/Makefile
+++ b/Makefile
@@ -625,6 +625,7 @@ all: vmlinux
include $(srctree)/arch/$(SRCARCH)/Makefile
KBUILD_CFLAGS += $(call cc-option,-fno-delete-null-pointer-checks,)
+KBUILD_CFLAGS += $(call cc-option,-std=gnu89,)
I'm pretty sure all gcc versions you can build kernel with supports
-std=gnu89. cc-option is redunrant.

We also need to adjust HOSTCFLAGS otherwise allmodconfig fails for me.

Singed-off-by: Kirill A. Shutemov <***@linux.intel.com.

diff --git a/Makefile b/Makefile
index 05d67af376c5..27570984f28e 100644
--- a/Makefile
+++ b/Makefile
@@ -297,7 +297,7 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \

HOSTCC = gcc
HOSTCXX = g++
-HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
+HOSTCFLAGS = -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -std=gnu89
HOSTCXXFLAGS = -O2

ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1)
@@ -401,7 +401,8 @@ KBUILD_CPPFLAGS := -D__KERNEL__
KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common \
-Werror-implicit-function-declaration \
- -Wno-format-security
+ -Wno-format-security \
+ -std=gnu89

KBUILD_AFLAGS_KERNEL :=
KBUILD_CFLAGS_KERNEL :=
--
Kirill A. Shutemov
Continue reading on narkive:
Loading...