2ce19af0cd
Doesn't boot with GCC10. [ci:skip-build] Already built successfuly on CI in MR
67 lines
2.4 KiB
Diff
67 lines
2.4 KiB
Diff
From 51b97e354ba9fce1890cf38ecc754aa49677fc89 Mon Sep 17 00:00:00 2001
|
|
From: "Kirill A. Shutemov" <kirill@shutemov.name>
|
|
Date: Mon, 20 Oct 2014 12:23:12 +0300
|
|
Subject: kernel: use the gnu89 standard explicitly
|
|
|
|
From: "Kirill A. Shutemov" <kirill@shutemov.name>
|
|
|
|
commit 51b97e354ba9fce1890cf38ecc754aa49677fc89 upstream.
|
|
|
|
Sasha Levin reports:
|
|
"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"
|
|
|
|
There are multiple small issues with the new default, but the biggest
|
|
issue seems to be that the old - and very useful - GNU extension to
|
|
allow a cast in front of an initializer has gone away.
|
|
|
|
Patch updated by Kirill:
|
|
"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"
|
|
|
|
Note by Andrew Pinski:
|
|
"Yes it was reported and both problems relating to this extension has
|
|
been added to gnu99 and gnu11. Though there are other issues with the
|
|
kernel dealing with extern inline have different semantics between
|
|
gnu89 and gnu99/11"
|
|
|
|
End result: we may be able to move up to a newer stdc model eventually,
|
|
but right now the newer models have some annoying deficiencies, so the
|
|
traditional "gnu89" model ends up being the preferred one.
|
|
|
|
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
|
|
Singed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
|
|
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
|
|
---
|
|
Makefile | 6 ++++--
|
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
|
--- a/Makefile
|
|
+++ b/Makefile
|
|
@@ -241,7 +241,7 @@ CONFIG_SHELL := $(shell if [ -x "$$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
|
|
|
|
# Decide whether to build built-in, modular, or both.
|
|
@@ -373,7 +373,9 @@ KBUILD_CFLAGS := -Wall -Wundef -Wstric
|
|
-fno-strict-aliasing -fno-common \
|
|
-Werror-implicit-function-declaration \
|
|
-Wno-format-security \
|
|
- -fno-delete-null-pointer-checks
|
|
+ -fno-delete-null-pointer-checks \
|
|
+ -std=gnu89
|
|
+
|
|
KBUILD_AFLAGS_KERNEL :=
|
|
KBUILD_CFLAGS_KERNEL :=
|
|
KBUILD_AFLAGS := -D__ASSEMBLY__
|