[dpdk-dev] [PATCH v1 1/1] test: fix build with GCC 4.8.5

Carrillo, Erik G erik.g.carrillo at intel.com
Mon May 7 20:15:18 CEST 2018


> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen at networkplumber.org]
> Sent: Friday, May 4, 2018 11:55 PM
> To: Carrillo, Erik G <erik.g.carrillo at intel.com>
> Cc: jerin.jacob at caviumnetworks.com; dev at dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v1 1/1] test: fix build with GCC 4.8.5
> 
> On Fri,  4 May 2018 16:38:03 -0500
> Erik Gabriel Carrillo <erik.g.carrillo at intel.com> wrote:
> 
> > Build errors occur on CentOS 7 with GCC 4.8.5 20150623 in the
> > event_timer_adapter_test autotest; the
> > -Werror=missing-field-initializers option causes the compiler to emit
> > messages like "error: missing initializer for field ‘priority’ of
> > ‘struct <anonymous>’" in several places.
> >
> > Add -Wno-missing-field-initializers to the test's CFLAGS to allow the
> > current syntax if we are using GCC 5.0 or lower.
> >
> > Signed-off-by: Erik Gabriel Carrillo <erik.g.carrillo at intel.com>
> > ---
> >  test/test/Makefile | 1 +
> >  1 file changed, 1 insertion(+)
> >
> > diff --git a/test/test/Makefile b/test/test/Makefile index
> > 2630ab4..2011857 100644
> > --- a/test/test/Makefile
> > +++ b/test/test/Makefile
> > @@ -211,6 +211,7 @@ CFLAGS_test_memcpy_perf.o +=
> > -fno-var-tracking-assignments  # designated initializers.
> >  ifeq ($(shell test $(GCC_VERSION) -le 50 && echo 1), 1)
> > CFLAGS_test_eventdev_sw.o += -Wno-missing-field-initializers
> > +CFLAGS_test_event_timer_adapter.o += -Wno-missing-field-initializers
> >  endif
> >  endif
> >  endif
> 
> Why not fix the code rather than supressing the warning??

The -Wmissing-field-initializers option is supposed to not warn about designated initializers:

https://gcc.gnu.org/onlinedocs/gcc-4.8.5/gcc/Warning-Options.html#index-Wmissing-field-initializers-473

The code being flagged uses designated initializers, but the structures being initialized contain anonymous structs, and -Wmissing-field-initializers seems to not handle this properly in GCC 4.8.5.   In fact, it emits false positives about members that were explicitly initialized, and omits warnings about some that weren't.

Since designated initializers should be allowed, and the proposed fix only suppresses the one warning in few cases, I think it makes sense.


More information about the dev mailing list