[dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error

Honnappa Nagarahalli Honnappa.Nagarahalli at arm.com
Mon Nov 9 18:24:20 CET 2020


<snip>

> > >
> > > Hi Honnappa,
> > >
> > > Sorry about the delayed reply.
> > No problem, thank you.
> >
> > > The build error trace is below, the build command used was: CC=gcc
> > > meson
> > --
> > > optimization=1 --werror build1; ninja -C build1 I am not sure how I
> > > could fix this issue without initialising zcd.
> > >

<snip>

> > > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > > ../app/test/test_ring_stress_impl.h: In function 'test_worker':
> > > ../app/test/test_ring.h:82:3: error: 'zcd.n1' may be used
> > > uninitialized in this function [-Werror=maybe-uninitialized]
> > >    test_ring_mem_copy(zcd->ptr2, src,
> > >    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >       esize, num - zcd->n1);
> > >       ~~~~~~~~~~~~~~~~~~~~~
> > > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd.n1' was
> > declared
> > > here
> > >   struct rte_ring_zc_data zcd;
> > >                           ^~~
> > > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > > ../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used
> > > uninitialized in this function [-Werror=maybe-uninitialized]
> > >   memcpy(dst, src, sz);
> > >   ^~~~~~~~~~~~~~~~~~~~
> > > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: '*((void
> > *)&zcd+8)'
> > > was declared here
> > I remember seeing a similar error in test_ring_st_peek_stress_zc.c.
> > In the file test_ring_mt_peek_stress_zc.c, after the call to
> > enqueue/dequeue API calls, we have:
> > "n = (m == n) ? n : 0;"
> >
> > This is present as the code was copied from existing code. I do not
> > see why this line is required. Can you please try to remove this line
> > and see if it works?
> 
> I commented out all occurrences of that line in test_ring_mt_peek_stess_zc.c
> and the build is still failing.
> Trace at end of email.
Thanks for checking the suggestion. Can you provide your setup details? OS and gcc version would be good. I would like to try it.

<snip>

> 
> [2339/2407] Compiling C object app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o
> FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
> gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl -
> I../lib/librte_acl -I. -I.. -Iconfig -I../config -Ilib/librte_eal/include -
> I../lib/librte_eal/include -Ilib/librte_eal/linux/include -
> I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -
> I../lib/librte_eal/x86/include -Ilib/librte_eal/common -
> I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -Ilib/librte_kvargs -
> I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -
> Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -
> I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci -I../lib/librte_pci -
> Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -
> I../lib/librte_bitratestats -Ilib/librte_ethdev -I../lib/librte_ethdev -
> Ilib/librte_net -I../lib/librte_net -Ilib/librte_mbuf -I../lib/librte_mbuf -
> Ilib/librte_mempool -I../lib/librte_mempool -Ilib/librte_ring -I../lib/librte_ring
> -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf -I../lib/librte_bpf -
> Ilib/librte_cfgfile -I../lib/librte_cfgfile -Ilib/librte_cmdline -I../lib/librte_cmdline
> -Ilib/librte_cryptodev -I../lib/librte_cryptodev -Ilib/librte_distributor -
> I../lib/librte_distributor -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -
> I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu -Ilib/librte_eventdev -
> I../lib/librte_eventdev -Ilib/librte_timer -I../lib/librte_timer -Ilib/librte_fib -
> I../lib/librte_fib -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -
> I../lib/librte_flow_classify -Ilib/librte_table -I../lib/librte_table -Ilib/librte_port
> -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched -Ilib/librte_ip_frag -
> I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni -Ilib/librte_lpm -
> I../lib/librte_lpm -Ilib/librte_graph -I../lib/librte_graph -Ilib/librte_ipsec -
> I../lib/librte_ipsec -Ilib/librte_security -I../lib/librte_security -
> Ilib/librte_latencystats -I../lib/librte_latencystats -Ilib/librte_member -
> I../lib/librte_member -Ilib/librte_node -I../lib/librte_node -Ilib/librte_pipeline
> -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev -
> Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -I../lib/librte_stack -
> Idrivers/mempool/ring -I../drivers/mempool/ring -Idrivers/mempool/stack -
> I../drivers/mempool/stack -Idrivers/event/skeleton -
> I../drivers/event/skeleton -Idrivers/net/bonding -I../drivers/net/bonding -
> Idrivers/net/ring -I../drivers/net/ring -Ilib/librte_power -I../lib/librte_power -
> Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -
> I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -
> D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include
> rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -
> Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-
> externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-
> prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-missing-
> field-initializers -march=native -mno-avx512f -DALLOW_EXPERIMENTAL_API -
> Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -
> DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o -c
> ../app/test/test_ring_mt_peek_stress_zc.c
> ../app/test/test_ring_mt_peek_stress_zc.c: In function
> '_st_ring_dequeue_bulk':
> ../app/test/test_ring_mt_peek_stress_zc.c:13:11: error: variable 'm' set but
> not used [-Werror=unused-but-set-variable]
>   uint32_t m;
>            ^
> ../app/test/test_ring_mt_peek_stress_zc.c: In function
> '_st_ring_enqueue_bulk':
> ../app/test/test_ring_mt_peek_stress_zc.c:31:11: error: variable 'm' set but
> not used [-Werror=unused-but-set-variable]
>   uint32_t m;
>            ^
I am not sure why you are seeing the above error.

<snip>


More information about the dev mailing list