mk: disable warning with gcc 9 on Fedora 30
Checks
Commit Message
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
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.
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
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
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
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>
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
> -----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
>
>
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
> -----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."
> -----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
@@ -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