2022-09-04 20:08:47 +00:00
|
|
|
From b810c8e719ea082e47c7a8f7cf878bc84fa2455d Mon Sep 17 00:00:00 2001
|
|
|
|
From: Arnd Bergmann <arnd@arndb.de>
|
|
|
|
Date: Tue, 8 Mar 2022 22:56:14 +0100
|
|
|
|
Subject: [PATCH 2/3] Kbuild: move to -std=gnu11
|
|
|
|
|
|
|
|
During a patch discussion, Linus brought up the option of changing
|
|
|
|
the C standard version from gnu89 to gnu99, which allows using variable
|
|
|
|
declaration inside of a for() loop. While the C99, C11 and later standards
|
|
|
|
introduce many other features, most of these are already available in
|
|
|
|
gnu89 as GNU extensions as well.
|
|
|
|
|
|
|
|
An earlier attempt to do this when gcc-5 started defaulting to
|
|
|
|
-std=gnu11 failed because at the time that caused warnings about
|
|
|
|
designated initializers with older compilers. Now that gcc-5.1 is
|
|
|
|
the minimum compiler version used for building kernels, that is no
|
|
|
|
longer a concern. Similarly, the behavior of 'inline' functions changes
|
|
|
|
between gnu89 using gnu_inline behavior and gnu11 using standard c99+
|
|
|
|
behavior, but this was taken care of by defining 'inline' to include
|
|
|
|
__attribute__((gnu_inline)) in order to allow building with clang a
|
|
|
|
while ago.
|
|
|
|
|
|
|
|
Nathan Chancellor reported a new -Wdeclaration-after-statement
|
|
|
|
warning that appears in a system header on arm, this still needs a
|
|
|
|
workaround.
|
|
|
|
|
|
|
|
The differences between gnu99, gnu11, gnu1x and gnu17 are fairly
|
|
|
|
minimal and mainly impact warnings at the -Wpedantic level that the
|
|
|
|
kernel never enables. Between these, gnu11 is the newest version
|
|
|
|
that is supported by all supported compiler versions, though it is
|
|
|
|
only the default on gcc-5, while all other supported versions of
|
|
|
|
gcc or clang default to gnu1x/gnu17.
|
|
|
|
|
|
|
|
Link: https://lore.kernel.org/lkml/CAHk-=wiyCH7xeHcmiFJ-YgXUy2Jaj7pnkdKpcovt8fYbVFW3TA@mail.gmail.com/
|
|
|
|
Link: https://github.com/ClangBuiltLinux/linux/issues/1603
|
|
|
|
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
|
|
|
|
Acked-by: Marco Elver <elver@google.com>
|
|
|
|
Acked-by: Jani Nikula <jani.nikula@intel.com>
|
|
|
|
Acked-by: David Sterba <dsterba@suse.com>
|
|
|
|
Tested-by: Sedat Dilek <sedat.dilek@gmail.com>
|
|
|
|
Reviewed-by: Alex Shi <alexs@kernel.org>
|
|
|
|
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
|
|
|
|
Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
|
|
|
|
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
|
|
|
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
|
|
|
|
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
|
|
|
---
|
|
|
|
Makefile | 2 +-
|
|
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
|
|
|
|
--- a/Makefile
|
|
|
|
+++ b/Makefile
|
2023-03-12 14:16:50 +00:00
|
|
|
@@ -524,7 +524,7 @@ KBUILD_CFLAGS := -Wall -Wundef -Werror
|
2022-10-16 11:19:05 +00:00
|
|
|
-fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE \
|
|
|
|
-Werror=implicit-function-declaration -Werror=implicit-int \
|
|
|
|
-Werror=return-type -Wno-format-security \
|
2022-09-04 20:08:47 +00:00
|
|
|
- -std=gnu89
|
|
|
|
+ -std=gnu11
|
|
|
|
KBUILD_CPPFLAGS := -D__KERNEL__
|
|
|
|
KBUILD_AFLAGS_KERNEL :=
|
|
|
|
KBUILD_CFLAGS_KERNEL :=
|