mk: disable warning with gcc 9 on Fedora 30

Message ID 20190502093334.7546-1-reshma.pattan@intel.com (mailing list archive)
State Accepted, archived
Headers
Series mk: disable warning with gcc 9 on Fedora 30 |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS
ci/Intel-compilation fail apply issues

Commit Message

Pattan, Reshma May 2, 2019, 9:33 a.m. UTC
  gcc 9 on Fedora 30 gives an error
"taking address of packed member may result in an
unaligned pointer value" warnings.

For clang builds this warning is already disabled,
so disable "-Waddress-of-packed-member" for gcc builds
also.

Snippet of build error:
...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking address
of packed member of ‘struct rte_mem_config’ may result in an unaligned
pointer value [-Werror=address-of-packed-member]
  768 |  cur_msl = &mcfg->memsegs[msl_idx];
      |            ^~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
 mk/toolchain/gcc/rte.vars.mk | 3 +++
 1 file changed, 3 insertions(+)
  

Comments

David Marchand May 2, 2019, 10:07 a.m. UTC | #1
On Thu, May 2, 2019 at 11:33 AM Reshma Pattan <reshma.pattan@intel.com>
wrote:

> gcc 9 on Fedora 30 gives an error
> "taking address of packed member may result in an
> unaligned pointer value" warnings.
>
> For clang builds this warning is already disabled,
> so disable "-Waddress-of-packed-member" for gcc builds
> also.
>
> Snippet of build error:
> ...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
> ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking address
> of packed member of ‘struct rte_mem_config’ may result in an unaligned
> pointer value [-Werror=address-of-packed-member]
>   768 |  cur_msl = &mcfg->memsegs[msl_idx];
>       |            ^~~~~~~~~~~~~~~~~~~~~~~
>
> Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> ---
>  mk/toolchain/gcc/rte.vars.mk | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
> index d8b99faf6..b852fcfd7 100644
> --- a/mk/toolchain/gcc/rte.vars.mk
> +++ b/mk/toolchain/gcc/rte.vars.mk
> @@ -87,5 +87,8 @@ WERROR_FLAGS += -Wimplicit-fallthrough=2
>  WERROR_FLAGS += -Wno-format-truncation
>  endif
>
> +# disable packed member unalign warnings
> +WERROR_FLAGS += -Wno-address-of-packed-member
> +
>  export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
>  export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
> --
> 2.21.0
>
>
Not the best approach to me...
Let me install a fedora 30 and have a look.
  
Bruce Richardson May 2, 2019, 1:26 p.m. UTC | #2
On Thu, May 02, 2019 at 12:07:17PM +0200, David Marchand wrote:
> On Thu, May 2, 2019 at 11:33 AM Reshma Pattan <reshma.pattan@intel.com>
> wrote:
> 
> > gcc 9 on Fedora 30 gives an error
> > "taking address of packed member may result in an
> > unaligned pointer value" warnings.
> >
> > For clang builds this warning is already disabled,
> > so disable "-Waddress-of-packed-member" for gcc builds
> > also.
> >
> > Snippet of build error:
> > ...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
> > ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking address
> > of packed member of ‘struct rte_mem_config’ may result in an unaligned
> > pointer value [-Werror=address-of-packed-member]
> >   768 |  cur_msl = &mcfg->memsegs[msl_idx];
> >       |            ^~~~~~~~~~~~~~~~~~~~~~~
> >
> > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > ---
> >  mk/toolchain/gcc/rte.vars.mk | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
> > index d8b99faf6..b852fcfd7 100644
> > --- a/mk/toolchain/gcc/rte.vars.mk
> > +++ b/mk/toolchain/gcc/rte.vars.mk
> > @@ -87,5 +87,8 @@ WERROR_FLAGS += -Wimplicit-fallthrough=2
> >  WERROR_FLAGS += -Wno-format-truncation
> >  endif
> >
> > +# disable packed member unalign warnings
> > +WERROR_FLAGS += -Wno-address-of-packed-member
> > +
> >  export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
> >  export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
> > --
> > 2.21.0
> >
> >
> Not the best approach to me...
> 
Agreed, but this fix does seem reasonable since we already disable this warning
for clang.

> Let me install a fedora 30 and have a look.
Hopefully you can come up with a better fix, but I think we need something
soon for 19.05, so this patch may be needed as a stop-gap fix.

/Bruce
  
David Marchand May 2, 2019, 1:30 p.m. UTC | #3
On Thu, May 2, 2019 at 3:26 PM Bruce Richardson <bruce.richardson@intel.com>
wrote:

> On Thu, May 02, 2019 at 12:07:17PM +0200, David Marchand wrote:
> > On Thu, May 2, 2019 at 11:33 AM Reshma Pattan <reshma.pattan@intel.com>
> > wrote:
> >
> > > gcc 9 on Fedora 30 gives an error
> > > "taking address of packed member may result in an
> > > unaligned pointer value" warnings.
> > >
> > > For clang builds this warning is already disabled,
> > > so disable "-Waddress-of-packed-member" for gcc builds
> > > also.
> > >
> > > Snippet of build error:
> > > ...lib/librte_eal/linux/eal/eal_memalloc.c: In function
> ‘alloc_seg_walk’:
> > > ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking
> address
> > > of packed member of ‘struct rte_mem_config’ may result in an unaligned
> > > pointer value [-Werror=address-of-packed-member]
> > >   768 |  cur_msl = &mcfg->memsegs[msl_idx];
> > >       |            ^~~~~~~~~~~~~~~~~~~~~~~
> > >
> > > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > > ---
> > >  mk/toolchain/gcc/rte.vars.mk | 3 +++
> > >  1 file changed, 3 insertions(+)
> > >
> > > diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/
> rte.vars.mk
> > > index d8b99faf6..b852fcfd7 100644
> > > --- a/mk/toolchain/gcc/rte.vars.mk
> > > +++ b/mk/toolchain/gcc/rte.vars.mk
> > > @@ -87,5 +87,8 @@ WERROR_FLAGS += -Wimplicit-fallthrough=2
> > >  WERROR_FLAGS += -Wno-format-truncation
> > >  endif
> > >
> > > +# disable packed member unalign warnings
> > > +WERROR_FLAGS += -Wno-address-of-packed-member
> > > +
> > >  export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
> > >  export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
> > > --
> > > 2.21.0
> > >
> > >
> > Not the best approach to me...
> >
> Agreed, but this fix does seem reasonable since we already disable this
> warning
> for clang.
>
> > Let me install a fedora 30 and have a look.
> Hopefully you can come up with a better fix, but I think we need something
> soon for 19.05, so this patch may be needed as a stop-gap fix.
>

Hiding this warning, we will never fix the places that could be fixed (and
I found some where the packed attribute makes no sense to me).
I'd prefer at least a -Wno-error=address-of-packed-member
  
Pattan, Reshma May 2, 2019, 1:35 p.m. UTC | #4
From: David Marchand [mailto:david.marchand@redhat.com]
Sent: Thursday, May 2, 2019 2:31 PM
To: Richardson, Bruce <bruce.richardson@intel.com>
Cc: Pattan, Reshma <reshma.pattan@intel.com>; dev <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH] mk: disable warning with gcc 9 on Fedora 30



On Thu, May 2, 2019 at 3:26 PM Bruce Richardson <bruce.richardson@intel.com<mailto:bruce.richardson@intel.com>> wrote:
On Thu, May 02, 2019 at 12:07:17PM +0200, David Marchand wrote:
> On Thu, May 2, 2019 at 11:33 AM Reshma Pattan <reshma.pattan@intel.com<mailto:reshma.pattan@intel.com>>
> wrote:
>
> > gcc 9 on Fedora 30 gives an error
> > "taking address of packed member may result in an
> > unaligned pointer value" warnings.
> >
> > For clang builds this warning is already disabled,
> > so disable "-Waddress-of-packed-member" for gcc builds
> > also.
> >
> > Snippet of build error:
> > ...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
> > ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking address
> > of packed member of ‘struct rte_mem_config’ may result in an unaligned
> > pointer value [-Werror=address-of-packed-member]
> >   768 |  cur_msl = &mcfg->memsegs[msl_idx];
> >       |            ^~~~~~~~~~~~~~~~~~~~~~~
> >
> > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com<mailto:reshma.pattan@intel.com>>
> > ---
> >  mk/toolchain/gcc/rte.vars.mk<http://rte.vars.mk> | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/mk/toolchain/gcc/rte.vars.mk<http://rte.vars.mk> b/mk/toolchain/gcc/rte.vars.mk<http://rte.vars.mk>
> > index d8b99faf6..b852fcfd7 100644
> > --- a/mk/toolchain/gcc/rte.vars.mk<http://rte.vars.mk>
> > +++ b/mk/toolchain/gcc/rte.vars.mk<http://rte.vars.mk>
> > @@ -87,5 +87,8 @@ WERROR_FLAGS += -Wimplicit-fallthrough=2
> >  WERROR_FLAGS += -Wno-format-truncation
> >  endif
> >
> > +# disable packed member unalign warnings
> > +WERROR_FLAGS += -Wno-address-of-packed-member
> > +
> >  export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
> >  export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
> > --
> > 2.21.0
> >
> >
> Not the best approach to me...
>
Agreed, but this fix does seem reasonable since we already disable this warning
for clang.

> Let me install a fedora 30 and have a look.
Hopefully you can come up with a better fix, but I think we need something
soon for 19.05, so this patch may be needed as a stop-gap fix.

Hiding this warning, we will never fix the places that could be fixed (and I found some where the packed attribute makes no sense to me).
I'd prefer at least a -Wno-error=address-of-packed-member

Hi,

If below is ok, I will send the patch.

diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
index b852fcfd7..cfe6f2645 100644
--- a/mk/toolchain/gcc/rte.vars.mk
+++ b/mk/toolchain/gcc/rte.vars.mk
@@ -49,6 +49,8 @@ WERROR_FLAGS += -Wcast-align -Wnested-externs -Wcast-qual
WERROR_FLAGS += -Wformat-nonliteral -Wformat-security
WERROR_FLAGS += -Wundef -Wwrite-strings -Wdeprecated

+WERROR_FLAGS += -Wno-error=address-of-packed-member
+

Thanks,
Reshma
  
David Marchand May 2, 2019, 3 p.m. UTC | #5
On Thu, May 2, 2019 at 11:33 AM Reshma Pattan <reshma.pattan@intel.com>
wrote:

> gcc 9 on Fedora 30 gives an error
> "taking address of packed member may result in an
> unaligned pointer value" warnings.
>
> For clang builds this warning is already disabled,
> so disable "-Waddress-of-packed-member" for gcc builds
> also.
>
> Snippet of build error:
> ...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
> ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking address
> of packed member of ‘struct rte_mem_config’ may result in an unaligned
> pointer value [-Werror=address-of-packed-member]
>   768 |  cur_msl = &mcfg->memsegs[msl_idx];
>       |            ^~~~~~~~~~~~~~~~~~~~~~~
>
> Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> ---
>  mk/toolchain/gcc/rte.vars.mk | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
> index d8b99faf6..b852fcfd7 100644
> --- a/mk/toolchain/gcc/rte.vars.mk
> +++ b/mk/toolchain/gcc/rte.vars.mk
> @@ -87,5 +87,8 @@ WERROR_FLAGS += -Wimplicit-fallthrough=2
>  WERROR_FLAGS += -Wno-format-truncation
>  endif
>
> +# disable packed member unalign warnings
> +WERROR_FLAGS += -Wno-address-of-packed-member
> +
>  export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
>  export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
> --
> 2.21.0
>
>
Tested on rhel-7 and fedora-30.
Tested-by: David Marchand <david.marchand@redhat.com>
  
Thomas Monjalon May 2, 2019, 3:56 p.m. UTC | #6
02/05/2019 17:00, David Marchand:
> On Thu, May 2, 2019 at 11:33 AM Reshma Pattan <reshma.pattan@intel.com>
> wrote:
> 
> > gcc 9 on Fedora 30 gives an error
> > "taking address of packed member may result in an
> > unaligned pointer value" warnings.
> >
> > For clang builds this warning is already disabled,
> > so disable "-Waddress-of-packed-member" for gcc builds
> > also.
> >
> > Snippet of build error:
> > ...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
> > ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking address
> > of packed member of ‘struct rte_mem_config’ may result in an unaligned
> > pointer value [-Werror=address-of-packed-member]
> >   768 |  cur_msl = &mcfg->memsegs[msl_idx];
> >       |            ^~~~~~~~~~~~~~~~~~~~~~~
> >
> > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> >
> >
> Tested on rhel-7 and fedora-30.
> Tested-by: David Marchand <david.marchand@redhat.com>

Applied, thanks
  
Jerin Jacob Kollanukkaran May 3, 2019, 4:01 p.m. UTC | #7
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Thomas Monjalon
> Sent: Thursday, May 2, 2019 9:27 PM
> To: Reshma Pattan <reshma.pattan@intel.com>
> Cc: dev@dpdk.org; David Marchand <david.marchand@redhat.com>
> Subject: Re: [dpdk-dev] [PATCH] mk: disable warning with gcc 9 on Fedora 30
> 
> 02/05/2019 17:00, David Marchand:
> > On Thu, May 2, 2019 at 11:33 AM Reshma Pattan
> > <reshma.pattan@intel.com>
> > wrote:
> >
> > > gcc 9 on Fedora 30 gives an error
> > > "taking address of packed member may result in an unaligned pointer
> > > value" warnings.
> > >
> > > For clang builds this warning is already disabled, so disable
> > > "-Waddress-of-packed-member" for gcc builds also.
> > >
> > > Snippet of build error:
> > > ...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
> > > ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking
> > > address of packed member of ‘struct rte_mem_config’ may result in an
> > > unaligned pointer value [-Werror=address-of-packed-member]
> > >   768 |  cur_msl = &mcfg->memsegs[msl_idx];
> > >       |            ^~~~~~~~~~~~~~~~~~~~~~~
> > >
> > > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > >
> > >
> > Tested on rhel-7 and fedora-30.
> > Tested-by: David Marchand <david.marchand@redhat.com>
> 
> Applied, thanks

Its been found that one of the armv7 toolchain treats
-Wno-address-of-packed-member as unrecognized command line option,
Hence armv7 build fails on dpdk.org master now. Not sure it is specific to armv7 or compiler?

Armv7 is not maintained and I don’t think, it has any use case for DPDK.
If everyone agrees IMO it is better remove the arm 32bit support.
   
    arm-buildroot-linux-gnueabihf-gcc -v
    Using built-in specs.
    COLLECT_GCC=/opt/armv7-eabihf--glibc--stable-2018.11-1/
    bin/arm-buildroot-linux-gnueabihf-gcc.br_real
    COLLECT_LTO_WRAPPER=/opt/armv7-eabihf--glibc--stable-2018.11-1/
    libexec/gcc/arm-buildroot-linux-gnueabihf/7.3.0/lto-wrapper
    Target: arm-buildroot-linux-gnueabihf
    Configured with: ./configure
    --prefix=/opt/armv7-eabihf--glibc--stable-2018.11-1
    --sysconfdir=/opt/armv7-eabihf--glibc--stable-2018.11-1/etc
    --enable-static --target=arm-buildroot-linux-gnueabihf
    --with-sysroot=/opt/armv7-eabihf--glibc--stable-2018.11-1/
    arm-buildroot-linux-gnueabihf/sysroot
    --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib
    --with-gmp=/opt/armv7-eabihf--glibc--stable-2018.11-1
    --with-mpc=/opt/armv7-eabihf--glibc--stable-2018.11-1
    --with-mpfr=/opt/armv7-eabihf--glibc--stable-2018.11-1
    --with-pkgversion='Buildroot 2018.08.1-00003-g576b333'
    --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath
    --enable-tls --disable-libmudflap --enable-threads --without-isl
    --without-cloog --disable-decimal-float --with-abi=aa
    pcs-linux --with-cpu=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard
    --with-mode=arm --enable-languages=c,c++
    --with-build-time-tools=/opt/armv7-eabihf--glibc--stable-2018.11-1/
    arm-buildroot-linux-gnueabihf/bin --enable-shared --disable-libgomp
    Thread model: posix
    gcc version 7.3.0 (Buildroot 2018.08.1-00003-g576b333)

    error log:

    dpdk.org/lib/librte_eal/linux/eal/eal_vfio_mp_sync.c: At top level:
    cc1: error: unrecognized command line option
    ‘-Wno-address-of-packed-member’ [-Werror]
    cc1: all warnings being treated as errors

> 
>
  
Bruce Richardson May 3, 2019, 4:25 p.m. UTC | #8
On Fri, May 03, 2019 at 04:01:38PM +0000, Jerin Jacob Kollanukkaran wrote:
> > -----Original Message-----
> > From: dev <dev-bounces@dpdk.org> On Behalf Of Thomas Monjalon
> > Sent: Thursday, May 2, 2019 9:27 PM
> > To: Reshma Pattan <reshma.pattan@intel.com>
> > Cc: dev@dpdk.org; David Marchand <david.marchand@redhat.com>
> > Subject: Re: [dpdk-dev] [PATCH] mk: disable warning with gcc 9 on Fedora 30
> > 
> > 02/05/2019 17:00, David Marchand:
> > > On Thu, May 2, 2019 at 11:33 AM Reshma Pattan
> > > <reshma.pattan@intel.com>
> > > wrote:
> > >
> > > > gcc 9 on Fedora 30 gives an error
> > > > "taking address of packed member may result in an unaligned pointer
> > > > value" warnings.
> > > >
> > > > For clang builds this warning is already disabled, so disable
> > > > "-Waddress-of-packed-member" for gcc builds also.
> > > >
> > > > Snippet of build error:
> > > > ...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
> > > > ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking
> > > > address of packed member of ‘struct rte_mem_config’ may result in an
> > > > unaligned pointer value [-Werror=address-of-packed-member]
> > > >   768 |  cur_msl = &mcfg->memsegs[msl_idx];
> > > >       |            ^~~~~~~~~~~~~~~~~~~~~~~
> > > >
> > > > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > > >
> > > >
> > > Tested on rhel-7 and fedora-30.
> > > Tested-by: David Marchand <david.marchand@redhat.com>
> > 
> > Applied, thanks
> 
> Its been found that one of the armv7 toolchain treats
> -Wno-address-of-packed-member as unrecognized command line option,
> Hence armv7 build fails on dpdk.org master now. Not sure it is specific to armv7 or compiler?
> 
> Armv7 is not maintained and I don’t think, it has any use case for DPDK.
> If everyone agrees IMO it is better remove the arm 32bit support.
>    
>     arm-buildroot-linux-gnueabihf-gcc -v
>     Using built-in specs.
>     COLLECT_GCC=/opt/armv7-eabihf--glibc--stable-2018.11-1/
>     bin/arm-buildroot-linux-gnueabihf-gcc.br_real
>     COLLECT_LTO_WRAPPER=/opt/armv7-eabihf--glibc--stable-2018.11-1/
>     libexec/gcc/arm-buildroot-linux-gnueabihf/7.3.0/lto-wrapper
>     Target: arm-buildroot-linux-gnueabihf
>     Configured with: ./configure
>     --prefix=/opt/armv7-eabihf--glibc--stable-2018.11-1
>     --sysconfdir=/opt/armv7-eabihf--glibc--stable-2018.11-1/etc
>     --enable-static --target=arm-buildroot-linux-gnueabihf
>     --with-sysroot=/opt/armv7-eabihf--glibc--stable-2018.11-1/
>     arm-buildroot-linux-gnueabihf/sysroot
>     --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib
>     --with-gmp=/opt/armv7-eabihf--glibc--stable-2018.11-1
>     --with-mpc=/opt/armv7-eabihf--glibc--stable-2018.11-1
>     --with-mpfr=/opt/armv7-eabihf--glibc--stable-2018.11-1
>     --with-pkgversion='Buildroot 2018.08.1-00003-g576b333'
>     --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath
>     --enable-tls --disable-libmudflap --enable-threads --without-isl
>     --without-cloog --disable-decimal-float --with-abi=aa
>     pcs-linux --with-cpu=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard
>     --with-mode=arm --enable-languages=c,c++
>     --with-build-time-tools=/opt/armv7-eabihf--glibc--stable-2018.11-1/
>     arm-buildroot-linux-gnueabihf/bin --enable-shared --disable-libgomp
>     Thread model: posix
>     gcc version 7.3.0 (Buildroot 2018.08.1-00003-g576b333)
> 
>     error log:
> 
>     dpdk.org/lib/librte_eal/linux/eal/eal_vfio_mp_sync.c: At top level:
>     cc1: error: unrecognized command line option
>     ‘-Wno-address-of-packed-member’ [-Werror]
>     cc1: all warnings being treated as errors
> 

Are you sure there is not another error as well? GCC silently ignores flags
like this one normally, but does report them as unrecognised if-and-only-if
another error or warning is given too.

/Bruce
  
Bruce Richardson May 3, 2019, 4:28 p.m. UTC | #9
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce Richardson
> Sent: Friday, May 3, 2019 5:25 PM
> To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
> Subject: Re: [dpdk-dev] [PATCH] mk: disable warning with gcc 9 on Fedora
> 30
> 
> On Fri, May 03, 2019 at 04:01:38PM +0000, Jerin Jacob Kollanukkaran wrote:
> > > -----Original Message-----
> > > From: dev <dev-bounces@dpdk.org> On Behalf Of Thomas Monjalon
> > > Sent: Thursday, May 2, 2019 9:27 PM
> > > To: Reshma Pattan <reshma.pattan@intel.com>
> > > Cc: dev@dpdk.org; David Marchand <david.marchand@redhat.com>
> > > Subject: Re: [dpdk-dev] [PATCH] mk: disable warning with gcc 9 on
> > > Fedora 30
> > >
> > > 02/05/2019 17:00, David Marchand:
> > > > On Thu, May 2, 2019 at 11:33 AM Reshma Pattan
> > > > <reshma.pattan@intel.com>
> > > > wrote:
> > > >
> > > > > gcc 9 on Fedora 30 gives an error "taking address of packed
> > > > > member may result in an unaligned pointer value" warnings.
> > > > >
> > > > > For clang builds this warning is already disabled, so disable
> > > > > "-Waddress-of-packed-member" for gcc builds also.
> > > > >
> > > > > Snippet of build error:
> > > > > ...lib/librte_eal/linux/eal/eal_memalloc.c: In function
> ‘alloc_seg_walk’:
> > > > > ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking
> > > > > address of packed member of ‘struct rte_mem_config’ may result
> > > > > in an unaligned pointer value [-Werror=address-of-packed-member]
> > > > >   768 |  cur_msl = &mcfg->memsegs[msl_idx];
> > > > >       |            ^~~~~~~~~~~~~~~~~~~~~~~
> > > > >
> > > > > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > > > >
> > > > >
> > > > Tested on rhel-7 and fedora-30.
> > > > Tested-by: David Marchand <david.marchand@redhat.com>
> > >
> > > Applied, thanks
> >
> > Its been found that one of the armv7 toolchain treats
> > -Wno-address-of-packed-member as unrecognized command line option,
> > Hence armv7 build fails on dpdk.org master now. Not sure it is specific
> to armv7 or compiler?
> >
> > Armv7 is not maintained and I don’t think, it has any use case for DPDK.
> > If everyone agrees IMO it is better remove the arm 32bit support.
> >
> >     arm-buildroot-linux-gnueabihf-gcc -v
> >     Using built-in specs.
> >     COLLECT_GCC=/opt/armv7-eabihf--glibc--stable-2018.11-1/
> >     bin/arm-buildroot-linux-gnueabihf-gcc.br_real
> >     COLLECT_LTO_WRAPPER=/opt/armv7-eabihf--glibc--stable-2018.11-1/
> >     libexec/gcc/arm-buildroot-linux-gnueabihf/7.3.0/lto-wrapper
> >     Target: arm-buildroot-linux-gnueabihf
> >     Configured with: ./configure
> >     --prefix=/opt/armv7-eabihf--glibc--stable-2018.11-1
> >     --sysconfdir=/opt/armv7-eabihf--glibc--stable-2018.11-1/etc
> >     --enable-static --target=arm-buildroot-linux-gnueabihf
> >     --with-sysroot=/opt/armv7-eabihf--glibc--stable-2018.11-1/
> >     arm-buildroot-linux-gnueabihf/sysroot
> >     --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-
> multilib
> >     --with-gmp=/opt/armv7-eabihf--glibc--stable-2018.11-1
> >     --with-mpc=/opt/armv7-eabihf--glibc--stable-2018.11-1
> >     --with-mpfr=/opt/armv7-eabihf--glibc--stable-2018.11-1
> >     --with-pkgversion='Buildroot 2018.08.1-00003-g576b333'
> >     --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath
> >     --enable-tls --disable-libmudflap --enable-threads --without-isl
> >     --without-cloog --disable-decimal-float --with-abi=aa
> >     pcs-linux --with-cpu=cortex-a9 --with-fpu=vfpv3-d16 --with-
> float=hard
> >     --with-mode=arm --enable-languages=c,c++
> >     --with-build-time-tools=/opt/armv7-eabihf--glibc--stable-2018.11-1/
> >     arm-buildroot-linux-gnueabihf/bin --enable-shared --disable-libgomp
> >     Thread model: posix
> >     gcc version 7.3.0 (Buildroot 2018.08.1-00003-g576b333)
> >
> >     error log:
> >
> >     dpdk.org/lib/librte_eal/linux/eal/eal_vfio_mp_sync.c: At top level:
> >     cc1: error: unrecognized command line option
> >     ‘-Wno-address-of-packed-member’ [-Werror]
> >     cc1: all warnings being treated as errors
> >
> 
> Are you sure there is not another error as well? GCC silently ignores
> flags like this one normally, but does report them as unrecognised if-and-
> only-if another error or warning is given too.
> 
> /Bruce

For completeness, ref: https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html

"When an unrecognized warning option is requested (e.g., -Wunknown-warning), GCC emits a diagnostic stating that the option is not recognized. However, if the -Wno- form is used, the behavior is slightly different: no diagnostic is produced for -Wno-unknown-warning unless other diagnostics are being produced. This allows the use of new -Wno- options with old compilers, but if something goes wrong, the compiler warns that an unrecognized option is present."
  
Jerin Jacob Kollanukkaran May 3, 2019, 5:24 p.m. UTC | #10
> -----Original Message-----
> From: Bruce Richardson <bruce.richardson@intel.com>
> Sent: Friday, May 3, 2019 9:55 PM
> To: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
> Cc: Thomas Monjalon <thomas@monjalon.net>; Reshma Pattan
> <reshma.pattan@intel.com>; dev@dpdk.org; David Marchand
> <david.marchand@redhat.com>; viktorin@rehivetech.com; Gavin Hu (Arm
> Technology China) <Gavin.Hu@arm.com>
> Subject: [EXT] Re: [dpdk-dev] [PATCH] mk: disable warning with gcc 9 on Fedora
> On Fri, May 03, 2019 at 04:01:38PM +0000, Jerin Jacob Kollanukkaran wrote:
> > > -----Original Message-----
> > > From: dev <dev-bounces@dpdk.org> On Behalf Of Thomas Monjalon
> > > Sent: Thursday, May 2, 2019 9:27 PM
> > > To: Reshma Pattan <reshma.pattan@intel.com>
> > > Cc: dev@dpdk.org; David Marchand <david.marchand@redhat.com>
> > > Subject: Re: [dpdk-dev] [PATCH] mk: disable warning with gcc 9 on
> > > Fedora 30
> > >
> > > 02/05/2019 17:00, David Marchand:
> > > > On Thu, May 2, 2019 at 11:33 AM Reshma Pattan
> > > > <reshma.pattan@intel.com>
> > > > wrote:
> > > >
> > > > > gcc 9 on Fedora 30 gives an error "taking address of packed
> > > > > member may result in an unaligned pointer value" warnings.
> > > > >
> > > > > For clang builds this warning is already disabled, so disable
> > > > > "-Waddress-of-packed-member" for gcc builds also.
> > > > >
> > > > > Snippet of build error:
> > > > > ...lib/librte_eal/linux/eal/eal_memalloc.c: In function ‘alloc_seg_walk’:
> > > > > ...lib/librte_eal/linux/eal/eal_memalloc.c:768:12: error: taking
> > > > > address of packed member of ‘struct rte_mem_config’ may result
> > > > > in an unaligned pointer value [-Werror=address-of-packed-member]
> > > > >   768 |  cur_msl = &mcfg->memsegs[msl_idx];
> > > > >       |            ^~~~~~~~~~~~~~~~~~~~~~~
> > > > >
> > > > > Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
> > > > >
> > > > >
> > > > Tested on rhel-7 and fedora-30.
> > > > Tested-by: David Marchand <david.marchand@redhat.com>
> > >
> > > Applied, thanks
> >
> > Its been found that one of the armv7 toolchain treats
> > -Wno-address-of-packed-member as unrecognized command line option,
> > Hence armv7 build fails on dpdk.org master now. Not sure it is specific to
> armv7 or compiler?
> >
> > Armv7 is not maintained and I don’t think, it has any use case for DPDK.
> > If everyone agrees IMO it is better remove the arm 32bit support.
> >
> >     arm-buildroot-linux-gnueabihf-gcc -v
> >     Using built-in specs.
> >     COLLECT_GCC=/opt/armv7-eabihf--glibc--stable-2018.11-1/
> >     bin/arm-buildroot-linux-gnueabihf-gcc.br_real
> >     COLLECT_LTO_WRAPPER=/opt/armv7-eabihf--glibc--stable-2018.11-1/
> >     libexec/gcc/arm-buildroot-linux-gnueabihf/7.3.0/lto-wrapper
> >     Target: arm-buildroot-linux-gnueabihf
> >     Configured with: ./configure
> >     --prefix=/opt/armv7-eabihf--glibc--stable-2018.11-1
> >     --sysconfdir=/opt/armv7-eabihf--glibc--stable-2018.11-1/etc
> >     --enable-static --target=arm-buildroot-linux-gnueabihf
> >     --with-sysroot=/opt/armv7-eabihf--glibc--stable-2018.11-1/
> >     arm-buildroot-linux-gnueabihf/sysroot
> >     --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib
> >     --with-gmp=/opt/armv7-eabihf--glibc--stable-2018.11-1
> >     --with-mpc=/opt/armv7-eabihf--glibc--stable-2018.11-1
> >     --with-mpfr=/opt/armv7-eabihf--glibc--stable-2018.11-1
> >     --with-pkgversion='Buildroot 2018.08.1-00003-g576b333'
> >     --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath
> >     --enable-tls --disable-libmudflap --enable-threads --without-isl
> >     --without-cloog --disable-decimal-float --with-abi=aa
> >     pcs-linux --with-cpu=cortex-a9 --with-fpu=vfpv3-d16 --with-float=hard
> >     --with-mode=arm --enable-languages=c,c++
> >     --with-build-time-tools=/opt/armv7-eabihf--glibc--stable-2018.11-1/
> >     arm-buildroot-linux-gnueabihf/bin --enable-shared --disable-libgomp
> >     Thread model: posix
> >     gcc version 7.3.0 (Buildroot 2018.08.1-00003-g576b333)
> >
> >     error log:
> >
> >     dpdk.org/lib/librte_eal/linux/eal/eal_vfio_mp_sync.c: At top level:
> >     cc1: error: unrecognized command line option
> >     ‘-Wno-address-of-packed-member’ [-Werror]
> >     cc1: all warnings being treated as errors
> >
> 
> Are you sure there is not another error as well? GCC silently ignores flags like
> this one normally, but does report them as unrecognised if-and-only-if another
> error or warning is given too.

That’s explains reason for error for armv7(the file has other warnings). 
There are plenty of warning for armv7 port. That is the one reason why, I think, we need to remove
Armv7 port if there is no end user for it. It just  a pain to maintain it.

arm-buildroot-linux-gnueabihf-gcc -Wp,-MD,./.eal_vfio.o.d.tmp  -marm -munaligned-access -pthread -I/home/jerin/dpdk.org/lib/librte_eal/linux/eal/include  -march=armv7-a -mtune=cortex-a9 -mfpu
=neon -DRTE_MACHINE_CPUFLAG_NEON  -I/home/jerin/dpdk.org/build/include -include /home/jerin/dpdk.org/build/include/rte_config.h -D_GNU_SOURCE -DALLOW_EXPERIMENTAL_API -I/home/jerin/dpdk.org/l
ib/librte_eal/linux/eal/include -I/home/jerin/dpdk.org/lib/librte_eal/common -I/home/jerin/dpdk.org/lib/librte_eal/common/include -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-d
eclarations -Wold-style-definition -Wpointer-arith -Wcast-align -Wnested-externs -Wcast-qual -Wformat-nonliteral -Wformat-security -Wundef -Wwrite-strings -Wdeprecated -Werror -Wno-error=cast
-align -Wimplicit-fallthrough=2 -Wno-format-truncation -Wno-address-of-packed-member -O3    -o eal_vfio.o -c /home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c: In function ‘vfio_open_group_fd’:
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c:268:28: warning: cast increases required alignment of target type [-Wcast-align]
  struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
                            ^
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c:315:7: warning: cast increases required alignment of target type [-Wcast-align]
   p = (struct vfio_mp_param *)mp_rep->param;
       ^
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c: In function ‘vfio_sync_default_container’:
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c:558:28: warning: cast increases required alignment of target type [-Wcast-align]
  struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
                            ^
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c:583:7: warning: cast increases required alignment of target type [-Wcast-align]
   p = (struct vfio_mp_param *)mp_rep->param;
       ^
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c: In function ‘vfio_get_default_container_fd’:
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c:1027:28: warning: cast increases required alignment of target type [-Wcast-align]
  struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
                            ^
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c:1048:7: warning: cast increases required alignment of target type [-Wcast-align]
   p = (struct vfio_mp_param *)mp_rep->param;
       ^
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c: In function ‘rte_vfio_get_container_fd’:
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c:1133:28: warning: cast increases required alignment of target type [-Wcast-align]
  struct vfio_mp_param *p = (struct vfio_mp_param *)mp_req.param;
                            ^
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c:1179:7: warning: cast increases required alignment of target type [-Wcast-align]
   p = (struct vfio_mp_param *)mp_rep->param;
       ^
/home/jerin/dpdk.org/lib/librte_eal/linux/eal/eal_vfio.c: At top level:
cc1: error: unrecognized command line option ‘-Wno-address-of-packed-member’ [-Werror]
cc1: all warnings being treated as errors
make[5]: *** [/home/jerin/dpdk.org/mk/internal/rte.compile-pre.mk:116: eal_vfio.o] Error 1
make[4]: *** [/home/jerin/dpdk.org/mk/rte.subdir.mk:37: eal] Error 2
make[3]: *** [/home/jerin/dpdk.org/mk/rte.subdir.mk:37: linux] Error 2
make[2]: *** [/home/jerin/dpdk.org/mk/rte.subdir.mk:37: librte_eal] Error 2
make[1]: *** [/home/jerin/dpdk.org/mk/rte.sdkbuild.mk:48: lib] Error 2
make: *** [/home/jerin/dpdk.org/mk/rte.sdkroot.mk:99: all] Error 2




> 
> /Bruce
  

Patch

diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
index d8b99faf6..b852fcfd7 100644
--- a/mk/toolchain/gcc/rte.vars.mk
+++ b/mk/toolchain/gcc/rte.vars.mk
@@ -87,5 +87,8 @@  WERROR_FLAGS += -Wimplicit-fallthrough=2
 WERROR_FLAGS += -Wno-format-truncation
 endif
 
+# disable packed member unalign warnings
+WERROR_FLAGS += -Wno-address-of-packed-member
+
 export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
 export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS