12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- From 2fd7e7f9317d3048a14026816d081b08ba98ea8e Mon Sep 17 00:00:00 2001
- From: Mark Rutland <[email protected]>
- 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 <[email protected]>
- [arnd: don't add a duplicate flag to the default set, update changelog]
- Signed-off-by: Arnd Bergmann <[email protected]>
- Reviewed-by: Nathan Chancellor <[email protected]>
- Reviewed-by: Nick Desaulniers <[email protected]>
- Tested-by: Sedat Dilek <[email protected]> # LLVM/Clang v13.0.0 (x86-64)
- Signed-off-by: Masahiro Yamada <[email protected]>
- ---
- 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 == '*') {
|