| 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 |
| @@ -244,7 +244,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. |
| @@ -382,7 +382,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__ |