diff mbox series

[1/2] Makefile.extrawarn: move -Wcast-align to W=3

Message ID 20201026220331.3896226-1-arnd@kernel.org (mailing list archive)
State New
Headers show
Series [1/2] Makefile.extrawarn: move -Wcast-align to W=3 | expand

Commit Message

Arnd Bergmann Oct. 26, 2020, 10:03 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

This warning behaves differently depending on the architecture
and compiler. Using x86 gcc, we get no output at all because
gcc knows the architecture can handle unaligned accesses.

Using x86 clang, or gcc on an architecture that needs to
manually deal with unaligned accesses, the build log is
completely flooded with these warnings, as they are commonly
invoked by inline functions of networking headers, e.g.

include/linux/skbuff.h:1426:26: warning: cast increases required alignment of target type [-Wcast-align]

The compiler is correct to point this out, as we are dealing
with undefined behavior that does cause problems in practice,
but there is also no good way to rewrite the code in commonly
included headers to a safer method.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 scripts/Makefile.extrawarn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Nathan Chancellor Oct. 27, 2020, 1:42 a.m. UTC | #1
On Mon, Oct 26, 2020 at 11:03:13PM +0100, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> This warning behaves differently depending on the architecture
> and compiler. Using x86 gcc, we get no output at all because
> gcc knows the architecture can handle unaligned accesses.
> 
> Using x86 clang, or gcc on an architecture that needs to
> manually deal with unaligned accesses, the build log is
> completely flooded with these warnings, as they are commonly
> invoked by inline functions of networking headers, e.g.
> 
> include/linux/skbuff.h:1426:26: warning: cast increases required alignment of target type [-Wcast-align]
> 
> The compiler is correct to point this out, as we are dealing
> with undefined behavior that does cause problems in practice,
> but there is also no good way to rewrite the code in commonly
> included headers to a safer method.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Always sad to see a warning move further down the list but noisy headers
are rough to deal with. This seems okay.

Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>

> ---
>  scripts/Makefile.extrawarn | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
> index 95e4cdb94fe9..6baee1200615 100644
> --- a/scripts/Makefile.extrawarn
> +++ b/scripts/Makefile.extrawarn
> @@ -60,7 +60,6 @@ endif
>  #
>  ifneq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
>  
> -KBUILD_CFLAGS += -Wcast-align
>  KBUILD_CFLAGS += -Wdisabled-optimization
>  KBUILD_CFLAGS += -Wnested-externs
>  KBUILD_CFLAGS += -Wshadow
> @@ -80,6 +79,7 @@ endif
>  ifneq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
>  
>  KBUILD_CFLAGS += -Wbad-function-cast
> +KBUILD_CFLAGS += -Wcast-align
>  KBUILD_CFLAGS += -Wcast-qual
>  KBUILD_CFLAGS += -Wconversion
>  KBUILD_CFLAGS += -Wpacked
> -- 
> 2.27.0
>
Masahiro Yamada Nov. 23, 2020, 11:17 a.m. UTC | #2
On Tue, Oct 27, 2020 at 10:42 AM Nathan Chancellor
<natechancellor@gmail.com> wrote:
>
> On Mon, Oct 26, 2020 at 11:03:13PM +0100, Arnd Bergmann wrote:
> > From: Arnd Bergmann <arnd@arndb.de>
> >
> > This warning behaves differently depending on the architecture
> > and compiler. Using x86 gcc, we get no output at all because
> > gcc knows the architecture can handle unaligned accesses.
> >
> > Using x86 clang, or gcc on an architecture that needs to
> > manually deal with unaligned accesses, the build log is
> > completely flooded with these warnings, as they are commonly
> > invoked by inline functions of networking headers, e.g.
> >
> > include/linux/skbuff.h:1426:26: warning: cast increases required alignment of target type [-Wcast-align]
> >
> > The compiler is correct to point this out, as we are dealing
> > with undefined behavior that does cause problems in practice,
> > but there is also no good way to rewrite the code in commonly
> > included headers to a safer method.
> >
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>
> Always sad to see a warning move further down the list but noisy headers
> are rough to deal with. This seems okay.
>
> Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
>
> > ---
> >  scripts/Makefile.extrawarn | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
> > index 95e4cdb94fe9..6baee1200615 100644
> > --- a/scripts/Makefile.extrawarn
> > +++ b/scripts/Makefile.extrawarn
> > @@ -60,7 +60,6 @@ endif
> >  #
> >  ifneq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
> >
> > -KBUILD_CFLAGS += -Wcast-align
> >  KBUILD_CFLAGS += -Wdisabled-optimization
> >  KBUILD_CFLAGS += -Wnested-externs
> >  KBUILD_CFLAGS += -Wshadow
> > @@ -80,6 +79,7 @@ endif
> >  ifneq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
> >
> >  KBUILD_CFLAGS += -Wbad-function-cast
> > +KBUILD_CFLAGS += -Wcast-align
> >  KBUILD_CFLAGS += -Wcast-qual
> >  KBUILD_CFLAGS += -Wconversion
> >  KBUILD_CFLAGS += -Wpacked
> > --
> > 2.27.0
> >


Applied to linux-kbuild. Thanks.

But, I think people already tend to ignore W=2 warnings.
Arnd Bergmann Nov. 24, 2020, 3:42 p.m. UTC | #3
On Mon, Nov 23, 2020 at 12:18 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> Applied to linux-kbuild. Thanks.
>
> But, I think people already tend to ignore W=2 warnings.

Yes, this is what I was trying to change with this series and a couple of other
patches I sent. When all the warnings from commonly included headers are
gone, W=2 actually becomes somewhat useful.

      Arnd
diff mbox series

Patch

diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn
index 95e4cdb94fe9..6baee1200615 100644
--- a/scripts/Makefile.extrawarn
+++ b/scripts/Makefile.extrawarn
@@ -60,7 +60,6 @@  endif
 #
 ifneq ($(findstring 2, $(KBUILD_EXTRA_WARN)),)
 
-KBUILD_CFLAGS += -Wcast-align
 KBUILD_CFLAGS += -Wdisabled-optimization
 KBUILD_CFLAGS += -Wnested-externs
 KBUILD_CFLAGS += -Wshadow
@@ -80,6 +79,7 @@  endif
 ifneq ($(findstring 3, $(KBUILD_EXTRA_WARN)),)
 
 KBUILD_CFLAGS += -Wbad-function-cast
+KBUILD_CFLAGS += -Wcast-align
 KBUILD_CFLAGS += -Wcast-qual
 KBUILD_CFLAGS += -Wconversion
 KBUILD_CFLAGS += -Wpacked