* [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error @ 2020-11-04 17:03 Conor Walsh 2020-11-04 18:48 ` Honnappa Nagarahalli 2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh 0 siblings, 2 replies; 13+ messages in thread From: Conor Walsh @ 2020-11-04 17:03 UTC (permalink / raw) To: honnappa.nagarahalli, konstantin.ananyev; +Cc: dev, linglix.chen, Conor Walsh When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc sees zcd in test_ring.h as possibly being uninitialised. To correct this error zcd has been initialised to {0} in test_ring_mt_peek_stress_zc.c. Signed-off-by: Conor Walsh <conor.walsh@intel.com> --- app/test/test_ring_mt_peek_stress_zc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/test/test_ring_mt_peek_stress_zc.c b/app/test/test_ring_mt_peek_stress_zc.c index 7e0bd511a7..ba0acf237c 100644 --- a/app/test/test_ring_mt_peek_stress_zc.c +++ b/app/test/test_ring_mt_peek_stress_zc.c @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, uint32_t *avail) { uint32_t m; - struct rte_ring_zc_data zcd; + struct rte_ring_zc_data zcd = {0}; m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); n = (m == n) ? n : 0; @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const *obj, uint32_t n, uint32_t *free) { uint32_t m; - struct rte_ring_zc_data zcd; + struct rte_ring_zc_data zcd = {0}; m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); n = (m == n) ? n : 0; -- 2.25.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error 2020-11-04 17:03 [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error Conor Walsh @ 2020-11-04 18:48 ` Honnappa Nagarahalli 2020-11-09 16:20 ` Walsh, Conor 2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh 1 sibling, 1 reply; 13+ messages in thread From: Honnappa Nagarahalli @ 2020-11-04 18:48 UTC (permalink / raw) To: Conor Walsh, konstantin.ananyev Cc: dev, linglix.chen, nd, Honnappa Nagarahalli, nd Hi Conor, Thanks for the patch. <snip> > > When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc > sees zcd in test_ring.h as possibly being uninitialised. To correct this error zcd > has been initialised to {0} in test_ring_mt_peek_stress_zc.c. > > Signed-off-by: Conor Walsh <conor.walsh@intel.com> > --- > app/test/test_ring_mt_peek_stress_zc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/app/test/test_ring_mt_peek_stress_zc.c > b/app/test/test_ring_mt_peek_stress_zc.c > index 7e0bd511a7..ba0acf237c 100644 > --- a/app/test/test_ring_mt_peek_stress_zc.c > +++ b/app/test/test_ring_mt_peek_stress_zc.c > @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, > uint32_t n, > uint32_t *avail) > { > uint32_t m; > - struct rte_ring_zc_data zcd; > + struct rte_ring_zc_data zcd = {0}; I faced similar problems when I created this test case. I refrained from doing this initialization as it might mask the problems in the library. Is it possible to identify which path in the library is actually resulting in this error? I would prefer to fix that instead. > > m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); > n = (m == n) ? n : 0; > @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const > *obj, uint32_t n, > uint32_t *free) > { > uint32_t m; > - struct rte_ring_zc_data zcd; > + struct rte_ring_zc_data zcd = {0}; > > m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); > n = (m == n) ? n : 0; > -- > 2.25.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error 2020-11-04 18:48 ` Honnappa Nagarahalli @ 2020-11-09 16:20 ` Walsh, Conor 2020-11-09 16:44 ` Honnappa Nagarahalli 0 siblings, 1 reply; 13+ messages in thread From: Walsh, Conor @ 2020-11-09 16:20 UTC (permalink / raw) To: Honnappa Nagarahalli, Ananyev, Konstantin; +Cc: dev, Chen, LingliX, nd Hi Honnappa, Sorry about the delayed reply. 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. [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 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 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: 'zcd' 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: 'zcd' 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:63:11: error: 'zcd.n1' may be used uninitialized in this function [-Werror=maybe-uninitialized] sz = num * sizeof(void *); ~~~~^~~~~~~~~~~~~~~~ ../app/test/test_ring_mt_peek_stress_zc.c:14: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:14:26: note: '*((void *)&zcd+8)' 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: 'zcd' may be used uninitialized in this function [-Werror=maybe-uninitialized] memcpy(dst, src, sz); ^~~~~~~~~~~~~~~~~~~~ ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd' was declared here struct rte_ring_zc_data zcd; ^~~ cc1: all warnings being treated as errors [2340/2407] Compiling C object drivers/libtmp_...ontx2.a.p/event_octeontx2_otx2_worker_dual.c.o ninja: build stopped: subcommand failed. Thanks, Conor. > From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> > Sent: Wednesday 4 November 2020 18:48 > To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin > <konstantin.ananyev@intel.com> > Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd > <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; > nd <nd@arm.com> > Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile > error > > Hi Conor, > Thanks for the patch. > > <snip> > > > > > When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc > > sees zcd in test_ring.h as possibly being uninitialised. To correct this error > zcd > > has been initialised to {0} in test_ring_mt_peek_stress_zc.c. > > > > Signed-off-by: Conor Walsh <conor.walsh@intel.com> > > --- > > app/test/test_ring_mt_peek_stress_zc.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/app/test/test_ring_mt_peek_stress_zc.c > > b/app/test/test_ring_mt_peek_stress_zc.c > > index 7e0bd511a7..ba0acf237c 100644 > > --- a/app/test/test_ring_mt_peek_stress_zc.c > > +++ b/app/test/test_ring_mt_peek_stress_zc.c > > @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, > > uint32_t n, > > uint32_t *avail) > > { > > uint32_t m; > > - struct rte_ring_zc_data zcd; > > + struct rte_ring_zc_data zcd = {0}; > I faced similar problems when I created this test case. I refrained from doing > this initialization as it might mask the problems in the library. Is it possible to > identify which path in the library is actually resulting in this error? I would > prefer to fix that instead. > > > > > m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); > > n = (m == n) ? n : 0; > > @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * > const > > *obj, uint32_t n, > > uint32_t *free) > > { > > uint32_t m; > > - struct rte_ring_zc_data zcd; > > + struct rte_ring_zc_data zcd = {0}; > > > > m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); > > n = (m == n) ? n : 0; > > -- > > 2.25.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error 2020-11-09 16:20 ` Walsh, Conor @ 2020-11-09 16:44 ` Honnappa Nagarahalli 2020-11-09 17:03 ` Walsh, Conor 0 siblings, 1 reply; 13+ messages in thread From: Honnappa Nagarahalli @ 2020-11-09 16:44 UTC (permalink / raw) To: Walsh, Conor, Ananyev, Konstantin Cc: dev, Chen, LingliX, nd, Honnappa Nagarahalli, nd <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. > > [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 > 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? > 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: 'zcd' 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: 'zcd' 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:63:11: error: 'zcd.n1' may be used uninitialized in this > function [-Werror=maybe-uninitialized] > sz = num * sizeof(void *); > ~~~~^~~~~~~~~~~~~~~~ > ../app/test/test_ring_mt_peek_stress_zc.c:14: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:14:26: note: '*((void *)&zcd+8)' > 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: 'zcd' may be used uninitialized in this > function [-Werror=maybe-uninitialized] > memcpy(dst, src, sz); > ^~~~~~~~~~~~~~~~~~~~ > ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd' was declared > here > struct rte_ring_zc_data zcd; > ^~~ > cc1: all warnings being treated as errors [2340/2407] Compiling C object > drivers/libtmp_...ontx2.a.p/event_octeontx2_otx2_worker_dual.c.o > ninja: build stopped: subcommand failed. > > Thanks, > Conor. > > > From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> > > Sent: Wednesday 4 November 2020 18:48 > > To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin > > <konstantin.ananyev@intel.com> > > Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd > > <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; > nd > > <nd@arm.com> > > Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix > > gcc compile error > > > > Hi Conor, > > Thanks for the patch. > > > > <snip> > > > > > > > > When DPDK is compiled with gcc < 9 with the optimization level set > > > to 1 gcc sees zcd in test_ring.h as possibly being uninitialised. To > > > correct this error > > zcd > > > has been initialised to {0} in test_ring_mt_peek_stress_zc.c. > > > > > > Signed-off-by: Conor Walsh <conor.walsh@intel.com> > > > --- > > > app/test/test_ring_mt_peek_stress_zc.c | 4 ++-- > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > diff --git a/app/test/test_ring_mt_peek_stress_zc.c > > > b/app/test/test_ring_mt_peek_stress_zc.c > > > index 7e0bd511a7..ba0acf237c 100644 > > > --- a/app/test/test_ring_mt_peek_stress_zc.c > > > +++ b/app/test/test_ring_mt_peek_stress_zc.c > > > @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void > > > **obj, uint32_t n, > > > uint32_t *avail) > > > { > > > uint32_t m; > > > - struct rte_ring_zc_data zcd; > > > + struct rte_ring_zc_data zcd = {0}; > > I faced similar problems when I created this test case. I refrained > > from doing this initialization as it might mask the problems in the > > library. Is it possible to identify which path in the library is > > actually resulting in this error? I would prefer to fix that instead. > > > > > > > > m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); > > > n = (m == n) ? n : 0; > > > @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * > > const > > > *obj, uint32_t n, > > > uint32_t *free) > > > { > > > uint32_t m; > > > - struct rte_ring_zc_data zcd; > > > + struct rte_ring_zc_data zcd = {0}; > > > > > > m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); > > > n = (m == n) ? n : 0; > > > -- > > > 2.25.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error 2020-11-09 16:44 ` Honnappa Nagarahalli @ 2020-11-09 17:03 ` Walsh, Conor 2020-11-09 17:24 ` Honnappa Nagarahalli 0 siblings, 1 reply; 13+ messages in thread From: Walsh, Conor @ 2020-11-09 17:03 UTC (permalink / raw) To: Honnappa Nagarahalli, Ananyev, Konstantin; +Cc: dev, Chen, LingliX, nd, nd Hi Honnappa, > From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> > Sent: Monday 9 November 2020 16:45 > To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin > <konstantin.ananyev@intel.com> > Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd > <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; > nd <nd@arm.com> > Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile > error > > <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. > > > > [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 > > 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. > > > 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: 'zcd' 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: 'zcd' 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:63:11: error: 'zcd.n1' may be used uninitialized in > this > > function [-Werror=maybe-uninitialized] > > sz = num * sizeof(void *); > > ~~~~^~~~~~~~~~~~~~~~ > > ../app/test/test_ring_mt_peek_stress_zc.c:14: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:14:26: note: '*((void > *)&zcd+8)' > > 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: 'zcd' may be used uninitialized in this > > function [-Werror=maybe-uninitialized] > > memcpy(dst, src, sz); > > ^~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd' was declared > > here > > struct rte_ring_zc_data zcd; > > ^~~ > > cc1: all warnings being treated as errors [2340/2407] Compiling C object > > drivers/libtmp_...ontx2.a.p/event_octeontx2_otx2_worker_dual.c.o > > ninja: build stopped: subcommand failed. > > > > Thanks, > > Conor. > > > > > From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> > > > Sent: Wednesday 4 November 2020 18:48 > > > To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin > > > <konstantin.ananyev@intel.com> > > > Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd > > > <nd@arm.com>; Honnappa Nagarahalli > <Honnappa.Nagarahalli@arm.com>; > > nd > > > <nd@arm.com> > > > Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix > > > gcc compile error > > > > > > Hi Conor, > > > Thanks for the patch. > > > > > > <snip> > > > > > > > > > > > When DPDK is compiled with gcc < 9 with the optimization level set > > > > to 1 gcc sees zcd in test_ring.h as possibly being uninitialised. To > > > > correct this error > > > zcd > > > > has been initialised to {0} in test_ring_mt_peek_stress_zc.c. > > > > > > > > Signed-off-by: Conor Walsh <conor.walsh@intel.com> > > > > --- > > > > app/test/test_ring_mt_peek_stress_zc.c | 4 ++-- > > > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/app/test/test_ring_mt_peek_stress_zc.c > > > > b/app/test/test_ring_mt_peek_stress_zc.c > > > > index 7e0bd511a7..ba0acf237c 100644 > > > > --- a/app/test/test_ring_mt_peek_stress_zc.c > > > > +++ b/app/test/test_ring_mt_peek_stress_zc.c > > > > @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void > > > > **obj, uint32_t n, > > > > uint32_t *avail) > > > > { > > > > uint32_t m; > > > > - struct rte_ring_zc_data zcd; > > > > + struct rte_ring_zc_data zcd = {0}; > > > I faced similar problems when I created this test case. I refrained > > > from doing this initialization as it might mask the problems in the > > > library. Is it possible to identify which path in the library is > > > actually resulting in this error? I would prefer to fix that instead. > > > > > > > > > > > m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); > > > > n = (m == n) ? n : 0; > > > > @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * > > > const > > > > *obj, uint32_t n, > > > > uint32_t *free) > > > > { > > > > uint32_t m; > > > > - struct rte_ring_zc_data zcd; > > > > + struct rte_ring_zc_data zcd = {0}; > > > > > > > > m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); > > > > n = (m == n) ? n : 0; > > > > -- > > > > 2.25.1 Thanks, Conor. [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; ^ In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5: ../app/test/test_ring_stress_impl.h: In function 'test_mt1': ../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 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: 'zcd' 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: 'zcd' 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_stress_impl.h: In function 'test_worker': ../app/test/test_ring.h:63:11: error: 'zcd.n1' may be used uninitialized in this function [-Werror=maybe-uninitialized] sz = num * sizeof(void *); ~~~~^~~~~~~~~~~~~~~~ ../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 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: 'zcd' 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: 'zcd' 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:63:11: error: 'zcd.n1' may be used uninitialized in this function [-Werror=maybe-uninitialized] sz = num * sizeof(void *); ~~~~^~~~~~~~~~~~~~~~ ../app/test/test_ring_mt_peek_stress_zc.c:14: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:14:26: note: '*((void *)&zcd+8)' 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: 'zcd' may be used uninitialized in this function [-Werror=maybe-uninitialized] memcpy(dst, src, sz); ^~~~~~~~~~~~~~~~~~~~ ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd' was declared here struct rte_ring_zc_data zcd; ^~~ cc1: all warnings being treated as errors [2340/2407] Compiling C object drivers/libtmp_rte_event_octeontx2.a.p/event_octeontx2_otx2_worker_dual.c.o ninja: build stopped: subcommand failed. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error 2020-11-09 17:03 ` Walsh, Conor @ 2020-11-09 17:24 ` Honnappa Nagarahalli 2020-11-09 17:37 ` Walsh, Conor 0 siblings, 1 reply; 13+ messages in thread From: Honnappa Nagarahalli @ 2020-11-09 17:24 UTC (permalink / raw) To: Walsh, Conor, Ananyev, Konstantin Cc: dev, Chen, LingliX, nd, Honnappa Nagarahalli, nd <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> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error 2020-11-09 17:24 ` Honnappa Nagarahalli @ 2020-11-09 17:37 ` Walsh, Conor 2020-11-09 22:43 ` Honnappa Nagarahalli 0 siblings, 1 reply; 13+ messages in thread From: Walsh, Conor @ 2020-11-09 17:37 UTC (permalink / raw) To: Honnappa Nagarahalli, Ananyev, Konstantin; +Cc: dev, Chen, LingliX, nd, nd > From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> > Sent: Monday 9 November 2020 17:24 > To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin > <konstantin.ananyev@intel.com> > Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd > <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; > nd <nd@arm.com> > Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile > error > > <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. Sure no problem, the error doesn't seem to affect gcc versions > 8. My setup is CentOS8.2 with kernel 4.18.0-193.28.1.el8_2.x86_64 and gcc 8.3.1. > > <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. m is being set but is only being used in the line that I commented out, if that line needs to be removed then m doesn't need to be set or declared. E.g. below. test_ring_mt_peek_stress_zc.c:9 static inline uint32_t _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, uint32_t *avail) { uint32_t m; struct rte_ring_zc_data zcd; m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); //n = (m == n) ? n : 0; if (n != 0) { /* Copy the data from the ring */ test_ring_copy_from(&zcd, obj, -1, n); rte_ring_dequeue_zc_finish(r, n); } return n; } Thanks for looking into this. > > <snip> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error 2020-11-09 17:37 ` Walsh, Conor @ 2020-11-09 22:43 ` Honnappa Nagarahalli 2020-11-10 10:04 ` Walsh, Conor 0 siblings, 1 reply; 13+ messages in thread From: Honnappa Nagarahalli @ 2020-11-09 22:43 UTC (permalink / raw) To: Walsh, Conor, Ananyev, Konstantin Cc: dev, Chen, LingliX, nd, Honnappa Nagarahalli, nd <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. > > m is being set but is only being used in the line that I commented out, if that > line needs to be removed then m doesn't need to be set or declared. > E.g. below. > > test_ring_mt_peek_stress_zc.c:9 > static inline uint32_t > _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, > uint32_t *avail) > { > uint32_t m; > struct rte_ring_zc_data zcd; > > m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); > //n = (m == n) ? n : 0; > if (n != 0) { Sorry, the above 'if' statement should be as follows: if (m != 0) { > /* Copy the data from the ring */ > test_ring_copy_from(&zcd, obj, -1, n); > rte_ring_dequeue_zc_finish(r, n); > } > > return n; > } > > Thanks for looking into this. > > > > > <snip> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error 2020-11-09 22:43 ` Honnappa Nagarahalli @ 2020-11-10 10:04 ` Walsh, Conor 0 siblings, 0 replies; 13+ messages in thread From: Walsh, Conor @ 2020-11-10 10:04 UTC (permalink / raw) To: Honnappa Nagarahalli, Ananyev, Konstantin; +Cc: dev, Chen, LingliX, nd, nd > From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> > Sent: Monday 9 November 2020 22:44 > To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin > <konstantin.ananyev@intel.com> > Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd > <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; > nd <nd@arm.com> > Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile > error > > <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. > > > > m is being set but is only being used in the line that I commented out, if > that > > line needs to be removed then m doesn't need to be set or declared. > > E.g. below. > > > > test_ring_mt_peek_stress_zc.c:9 > > static inline uint32_t > > _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, > > uint32_t *avail) > > { > > uint32_t m; > > struct rte_ring_zc_data zcd; > > > > m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); > > //n = (m == n) ? n : 0; > > if (n != 0) { > Sorry, the above 'if' statement should be as follows: > if (m != 0) { Thanks Honnappa, those two changes fix the issue for me. I will send a V2 of the patch with these changes. Thanks, Conor. > > > /* Copy the data from the ring */ > > test_ring_copy_from(&zcd, obj, -1, n); > > rte_ring_dequeue_zc_finish(r, n); > > } > > > > return n; > > } > > > > Thanks for looking into this. > > > > > > > > <snip> ^ permalink raw reply [flat|nested] 13+ messages in thread
* [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd gcc compile error 2020-11-04 17:03 [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error Conor Walsh 2020-11-04 18:48 ` Honnappa Nagarahalli @ 2020-11-10 11:03 ` Conor Walsh 2020-11-10 14:57 ` Honnappa Nagarahalli 2020-11-11 16:18 ` Honnappa Nagarahalli 1 sibling, 2 replies; 13+ messages in thread From: Conor Walsh @ 2020-11-10 11:03 UTC (permalink / raw) To: honnappa.nagarahalli, konstantin.ananyev; +Cc: dev, linglix.chen, Conor Walsh When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc sees zcd in test_ring.h as possibly being uninitialised. To correct this error if statements from _st_ring_dequeue_bulk and _st_ring_enqueue_bulk were corrected within test_ring_mt_peek_stress_zc.c Signed-off-by: Conor Walsh <conor.walsh@intel.com> --- v2: Moved from initialising zcd to changing if statements within test_ring_mt_peek_stress_zc.c following list feedback as the original method used may have masked errors within the library. --- app/test/test_ring_mt_peek_stress_zc.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/app/test/test_ring_mt_peek_stress_zc.c b/app/test/test_ring_mt_peek_stress_zc.c index 7e0bd511a7..85f0262ba0 100644 --- a/app/test/test_ring_mt_peek_stress_zc.c +++ b/app/test/test_ring_mt_peek_stress_zc.c @@ -14,8 +14,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, struct rte_ring_zc_data zcd; m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); - n = (m == n) ? n : 0; - if (n != 0) { + if (m != 0) { /* Copy the data from the ring */ test_ring_copy_from(&zcd, obj, -1, n); rte_ring_dequeue_zc_finish(r, n); @@ -32,8 +31,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const *obj, uint32_t n, struct rte_ring_zc_data zcd; m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); - n = (m == n) ? n : 0; - if (n != 0) { + if (m != 0) { /* Copy the data from the ring */ test_ring_copy_to(&zcd, obj, -1, n); rte_ring_enqueue_zc_finish(r, n); -- 2.25.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd gcc compile error 2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh @ 2020-11-10 14:57 ` Honnappa Nagarahalli 2020-11-11 16:18 ` Honnappa Nagarahalli 1 sibling, 0 replies; 13+ messages in thread From: Honnappa Nagarahalli @ 2020-11-10 14:57 UTC (permalink / raw) To: Conor Walsh, konstantin.ananyev Cc: dev, linglix.chen, nd, Honnappa Nagarahalli, nd <snip> > > When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc > sees zcd in test_ring.h as possibly being uninitialised. To correct this error if > statements from _st_ring_dequeue_bulk and _st_ring_enqueue_bulk were > corrected within test_ring_mt_peek_stress_zc.c > > Signed-off-by: Conor Walsh <conor.walsh@intel.com> Thank you Conor, looks good. Review-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> > > --- > > v2: Moved from initialising zcd to changing if statements within > test_ring_mt_peek_stress_zc.c following list feedback as the > original method used may have masked errors within the library. > --- > app/test/test_ring_mt_peek_stress_zc.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/app/test/test_ring_mt_peek_stress_zc.c > b/app/test/test_ring_mt_peek_stress_zc.c > index 7e0bd511a7..85f0262ba0 100644 > --- a/app/test/test_ring_mt_peek_stress_zc.c > +++ b/app/test/test_ring_mt_peek_stress_zc.c > @@ -14,8 +14,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, > uint32_t n, > struct rte_ring_zc_data zcd; > > m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); > - n = (m == n) ? n : 0; > - if (n != 0) { > + if (m != 0) { > /* Copy the data from the ring */ > test_ring_copy_from(&zcd, obj, -1, n); > rte_ring_dequeue_zc_finish(r, n); > @@ -32,8 +31,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const > *obj, uint32_t n, > struct rte_ring_zc_data zcd; > > m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); > - n = (m == n) ? n : 0; > - if (n != 0) { > + if (m != 0) { > /* Copy the data from the ring */ > test_ring_copy_to(&zcd, obj, -1, n); > rte_ring_enqueue_zc_finish(r, n); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd gcc compile error 2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh 2020-11-10 14:57 ` Honnappa Nagarahalli @ 2020-11-11 16:18 ` Honnappa Nagarahalli 2020-11-15 15:56 ` David Marchand 1 sibling, 1 reply; 13+ messages in thread From: Honnappa Nagarahalli @ 2020-11-11 16:18 UTC (permalink / raw) To: Conor Walsh, konstantin.ananyev Cc: dev, linglix.chen, nd, Honnappa Nagarahalli, nd > -----Original Message----- > From: Conor Walsh <conor.walsh@intel.com> > Sent: Tuesday, November 10, 2020 5:03 AM > To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; > konstantin.ananyev@intel.com > Cc: dev@dpdk.org; linglix.chen@intel.com; Conor Walsh > <conor.walsh@intel.com> > Subject: [PATCH v2] app/test: fix to prevent zcd gcc compile error > > When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc > sees zcd in test_ring.h as possibly being uninitialised. To correct this error if > statements from _st_ring_dequeue_bulk and _st_ring_enqueue_bulk were > corrected within test_ring_mt_peek_stress_zc.c > > Signed-off-by: Conor Walsh <conor.walsh@intel.com> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> > > --- > > v2: Moved from initialising zcd to changing if statements within > test_ring_mt_peek_stress_zc.c following list feedback as the > original method used may have masked errors within the library. > --- > app/test/test_ring_mt_peek_stress_zc.c | 6 ++---- > 1 file changed, 2 insertions(+), 4 deletions(-) > > diff --git a/app/test/test_ring_mt_peek_stress_zc.c > b/app/test/test_ring_mt_peek_stress_zc.c > index 7e0bd511a7..85f0262ba0 100644 > --- a/app/test/test_ring_mt_peek_stress_zc.c > +++ b/app/test/test_ring_mt_peek_stress_zc.c > @@ -14,8 +14,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, > uint32_t n, > struct rte_ring_zc_data zcd; > > m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail); > - n = (m == n) ? n : 0; > - if (n != 0) { > + if (m != 0) { > /* Copy the data from the ring */ > test_ring_copy_from(&zcd, obj, -1, n); > rte_ring_dequeue_zc_finish(r, n); > @@ -32,8 +31,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const > *obj, uint32_t n, > struct rte_ring_zc_data zcd; > > m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free); > - n = (m == n) ? n : 0; > - if (n != 0) { > + if (m != 0) { > /* Copy the data from the ring */ > test_ring_copy_to(&zcd, obj, -1, n); > rte_ring_enqueue_zc_finish(r, n); > -- > 2.25.1 ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd gcc compile error 2020-11-11 16:18 ` Honnappa Nagarahalli @ 2020-11-15 15:56 ` David Marchand 0 siblings, 0 replies; 13+ messages in thread From: David Marchand @ 2020-11-15 15:56 UTC (permalink / raw) To: Conor Walsh Cc: konstantin.ananyev, dev, linglix.chen, nd, Honnappa Nagarahalli On Wed, Nov 11, 2020 at 5:18 PM Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com> wrote: > > -----Original Message----- > > From: Conor Walsh <conor.walsh@intel.com> > > Sent: Tuesday, November 10, 2020 5:03 AM > > To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>; > > konstantin.ananyev@intel.com > > Cc: dev@dpdk.org; linglix.chen@intel.com; Conor Walsh > > <conor.walsh@intel.com> > > Subject: [PATCH v2] app/test: fix to prevent zcd gcc compile error > > > > When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc > > sees zcd in test_ring.h as possibly being uninitialised. To correct this error if > > statements from _st_ring_dequeue_bulk and _st_ring_enqueue_bulk were > > corrected within test_ring_mt_peek_stress_zc.c Fixes: f72299fd157d ("test/ring: add stress tests for zero copy API") > > > > Signed-off-by: Conor Walsh <conor.walsh@intel.com> > Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com> Updated title, and applied, thanks. -- David Marchand ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2020-11-15 15:57 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-11-04 17:03 [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error Conor Walsh 2020-11-04 18:48 ` Honnappa Nagarahalli 2020-11-09 16:20 ` Walsh, Conor 2020-11-09 16:44 ` Honnappa Nagarahalli 2020-11-09 17:03 ` Walsh, Conor 2020-11-09 17:24 ` Honnappa Nagarahalli 2020-11-09 17:37 ` Walsh, Conor 2020-11-09 22:43 ` Honnappa Nagarahalli 2020-11-10 10:04 ` Walsh, Conor 2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh 2020-11-10 14:57 ` Honnappa Nagarahalli 2020-11-11 16:18 ` Honnappa Nagarahalli 2020-11-15 15:56 ` David Marchand
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).