74 lines
2.7 KiB
Diff
74 lines
2.7 KiB
Diff
From 2fd7e7f9317d3048a14026816d081b08ba98ea8e Mon Sep 17 00:00:00 2001
|
||
From: Mark Rutland <mark.rutland@arm.com>
|
||
Date: Tue, 8 Mar 2022 22:56:13 +0100
|
||
Subject: [PATCH 1/3] Kbuild: use -Wdeclaration-after-statement
|
||
|
||
The kernel is moving from using `-std=gnu89` to `-std=gnu11`, permitting
|
||
the use of additional C11 features such as for-loop initial declarations.
|
||
|
||
One contentious aspect of C99 is that it permits mixed declarations and
|
||
code, and for now at least, it seems preferable to enforce that
|
||
declarations must come first.
|
||
|
||
These warnings were already enabled in the kernel itself, but not
|
||
for KBUILD_USERCFLAGS or the compat VDSO on arch/arm64, which uses
|
||
a separate set of CFLAGS.
|
||
|
||
This patch fixes an existing violation in modpost.c, which is not
|
||
reported because of the missing flag in KBUILD_USERCFLAGS:
|
||
|
||
| scripts/mod/modpost.c: In function ‘match’:
|
||
| scripts/mod/modpost.c:837:3: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement]
|
||
| 837 | const char *endp = p + strlen(p) - 1;
|
||
| | ^~~~~
|
||
|
||
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
|
||
[arnd: don't add a duplicate flag to the default set, update changelog]
|
||
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||
Reviewed-by: Nathan Chancellor <nathan@kernel.org>
|
||
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
|
||
Tested-by: Sedat Dilek <sedat.dilek@gmail.com> # LLVM/Clang v13.0.0 (x86-64)
|
||
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
|
||
---
|
||
Makefile | 3 ++-
|
||
arch/arm64/kernel/vdso32/Makefile | 1 +
|
||
scripts/mod/modpost.c | 4 +++-
|
||
3 files changed, 6 insertions(+), 2 deletions(-)
|
||
|
||
--- a/Makefile
|
||
+++ b/Makefile
|
||
@@ -440,7 +440,8 @@ endif
|
||
HOSTPKG_CONFIG = pkg-config
|
||
|
||
export KBUILD_USERCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes \
|
||
- -O2 -fomit-frame-pointer -std=gnu89
|
||
+ -O2 -fomit-frame-pointer -std=gnu89 \
|
||
+ -Wdeclaration-after-statement
|
||
export KBUILD_USERLDFLAGS :=
|
||
|
||
KBUILD_HOSTCFLAGS := $(KBUILD_USERCFLAGS) $(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
|
||
--- a/arch/arm64/kernel/vdso32/Makefile
|
||
+++ b/arch/arm64/kernel/vdso32/Makefile
|
||
@@ -76,6 +76,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-pr
|
||
-fno-strict-aliasing -fno-common \
|
||
-Werror-implicit-function-declaration \
|
||
-Wno-format-security \
|
||
+ -Wdeclaration-after-statement \
|
||
-std=gnu89
|
||
VDSO_CFLAGS += -O2
|
||
# Some useful compiler-dependent flags from top-level Makefile
|
||
--- a/scripts/mod/modpost.c
|
||
+++ b/scripts/mod/modpost.c
|
||
@@ -833,8 +833,10 @@ static int match(const char *sym, const
|
||
{
|
||
const char *p;
|
||
while (*pat) {
|
||
+ const char *endp;
|
||
+
|
||
p = *pat++;
|
||
- const char *endp = p + strlen(p) - 1;
|
||
+ endp = p + strlen(p) - 1;
|
||
|
||
/* "*foo*" */
|
||
if (*p == '*' && *endp == '*') {
|