On Fri, Mar 4, 2022 at 12:29 PM Sedat Dilek <sedat.dilek@xxxxxxxxx> wrote: > > On Tue, Mar 1, 2022 at 4:59 PM Arnd Bergmann <arnd@xxxxxxxxxx> wrote: > > > > From: Mark Rutland <mark.rutland@xxxxxxx> > > > > In a subsequent patch we'll move the kernel 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 disabled 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@xxxxxxx> > > [arnd: don't add a duplicate flag to the default set, update changelog] > > Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx> > > I was able to build and boot on bare metal. > > No new warnings in my build-log here after switching to -std=gnu11. > > Tested-by: Sedat Dilek <sedat.dilek@xxxxxxxxx> # LLVM/Clang v13.0.0 x86-64 > I have re-tested with Debian's LLVM/Clang v14.0.0-rc2. Tested-by: Sedat Dilek <sedat.dilek@xxxxxxxxx> # LLVM/Clang v14.0.0-rc2 (x86-64) - sed@ - > - sed@ - > > > --- > > Makefile | 3 ++- > > arch/arm64/kernel/vdso32/Makefile | 1 + > > scripts/mod/modpost.c | 4 +++- > > 3 files changed, 6 insertions(+), 2 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 94fa9a849a7a..37ef6a555dcd 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -432,7 +432,8 @@ HOSTCXX = g++ > > endif > > > > 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) > > diff --git a/arch/arm64/kernel/vdso32/Makefile b/arch/arm64/kernel/vdso32/Makefile > > index 9378ea055bf2..ed181bedbffc 100644 > > --- a/arch/arm64/kernel/vdso32/Makefile > > +++ b/arch/arm64/kernel/vdso32/Makefile > > @@ -68,6 +68,7 @@ VDSO_CFLAGS += -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ > > -fno-strict-aliasing -fno-common \ > > -Werror-implicit-function-declaration \ > > -Wno-format-security \ > > + -Wdeclaration-after-statement \ > > -std=gnu11 > > VDSO_CFLAGS += -O2 > > # Some useful compiler-dependent flags from top-level Makefile > > diff --git a/scripts/mod/modpost.c b/scripts/mod/modpost.c > > index 6bfa33217914..fe693304b120 100644 > > --- a/scripts/mod/modpost.c > > +++ b/scripts/mod/modpost.c > > @@ -833,8 +833,10 @@ static int match(const char *sym, const char * const pat[]) > > { > > 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 == '*') { > > -- > > 2.29.2 > >