* Re: Meson buildtype for ci jobs? [not found] ` <CAJvnSUB+JH1UW8bUe0Nv5w-7eTnmDtb7anrSFLmXsgHFGYbFWQ@mail.gmail.com> @ 2023-03-16 8:49 ` David Marchand 2023-03-16 9:08 ` David Marchand 0 siblings, 1 reply; 3+ messages in thread From: David Marchand @ 2023-03-16 8:49 UTC (permalink / raw) To: Patrick Robb, Honnappa Nagarahalli, Konstantin Ananyev Cc: Richardson, Bruce, ci, Aaron Conole, Thomas Monjalon, dev Adding dev@ mailing list and ring maintainers, On Wed, Mar 15, 2023 at 8:13 PM Patrick Robb <probb@iol.unh.edu> wrote: >> >> Would passing "-Ddebug=true" be better than changing the default buildtype? >> It's possible to have a release build (i.e. O3 optimized) with debug info. > > > Strangely, even with -Ddebug true if I'm running buildtype "release" it returns the same warnings. I'm inferring from your comment that release optimization == debugoptimized optimization and debug behavior from -Ddebug=true == debug behavior from debugoptimized, so release buildtype + debug "should" have the same behavior as just setting buildtype debugoptimized, and yet... > > I'll have to look into this a little more. Hopefully by the end I'll be like David and understand the relations between these flags better, hah. As for how buildtype, optimizations and debug params are concerned, the summary is here: https://mesonbuild.com/Builtin-options.html#details-for-buildtype In my tests this morning with a Alpine container, I noticed that setting -Dplatform to native makes the issue disappear... So an additional factor is building with platform=generic. ~/dpdk # meson configure build | awk '{if ($1 ~ /^(buildtype|platform|debug|optimization)$/) { print $0; }}' buildtype debug [plain, debug, debugoptimized, release, minsize, custom] Build type to use debug true [true, false] Debug optimization 0 [0, g, 1, 2, 3, s] Optimization level platform generic Platform to build, either "native", "generic" or a SoC. Please refer to the Linux build guide for more information. ... In file included from ../lib/ring/rte_ring_elem.h:24, from ../lib/ring/rte_ring.h:43, from ../lib/mempool/rte_mempool.h:47, from ../lib/mbuf/rte_mbuf.h:38, from ../lib/net/rte_ether.h:22, from ../lib/ethdev/rte_eth_ctrl.h:10, from ../lib/ethdev/rte_ethdev.h:1421, from ../app/test/test_event_timer_adapter.c:14: In function '__rte_ring_enqueue_elems_128', inlined from '__rte_ring_enqueue_elems' at ../lib/ring/rte_ring_elem_pvt.h:132:3, inlined from '__rte_ring_do_enqueue_elem' at ../lib/ring/rte_ring_elem_pvt.h:328:2, inlined from 'rte_ring_mp_enqueue_bulk_elem' at ../lib/ring/rte_ring_elem.h:134:9, inlined from 'rte_ring_enqueue_bulk_elem' at ../lib/ring/rte_ring_elem.h:199:10, inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, inlined from '_cancel_producer' at ../app/test/test_event_timer_adapter.c:834:10: ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 bytes from a region of size 8 [-Werror=stringop-overread] 100 | memcpy((void *)(ring + idx), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 101 | (const void *)(obj + i), 32); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': ../app/test/test_event_timer_adapter.c:805:1: note: source object 'obj' of size 8 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) | ^~~~~~~~~~~~~~~~ In function '__rte_ring_enqueue_elems_128', inlined from '__rte_ring_enqueue_elems' at ../lib/ring/rte_ring_elem_pvt.h:132:3, inlined from '__rte_ring_do_enqueue_elem' at ../lib/ring/rte_ring_elem_pvt.h:328:2, inlined from 'rte_ring_sp_enqueue_bulk_elem' at ../lib/ring/rte_ring_elem.h:163:9, inlined from 'rte_ring_enqueue_bulk_elem' at ../lib/ring/rte_ring_elem.h:202:10, inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, inlined from '_cancel_producer' at ../app/test/test_event_timer_adapter.c:834:10: ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 bytes from a region of size 8 [-Werror=stringop-overread] 100 | memcpy((void *)(ring + idx), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 101 | (const void *)(obj + i), 32); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': ../app/test/test_event_timer_adapter.c:805:1: note: source object 'obj' of size 8 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) | ^~~~~~~~~~~~~~~~ In function '__rte_ring_enqueue_elems_128', inlined from '__rte_ring_enqueue_elems' at ../lib/ring/rte_ring_elem_pvt.h:132:3, inlined from '__rte_ring_do_rts_enqueue_elem' at ../lib/ring/rte_ring_rts_elem_pvt.h:211:3, inlined from 'rte_ring_mp_rts_enqueue_bulk_elem' at ../lib/ring/rte_ring_rts.h:83:9, inlined from 'rte_ring_enqueue_bulk_elem' at ../lib/ring/rte_ring_elem.h:205:10, inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, inlined from '_cancel_producer' at ../app/test/test_event_timer_adapter.c:834:10: ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 bytes from a region of size 8 [-Werror=stringop-overread] 100 | memcpy((void *)(ring + idx), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 101 | (const void *)(obj + i), 32); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': ../app/test/test_event_timer_adapter.c:805:1: note: source object 'obj' of size 8 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) | ^~~~~~~~~~~~~~~~ In function '__rte_ring_enqueue_elems_128', inlined from '__rte_ring_enqueue_elems' at ../lib/ring/rte_ring_elem_pvt.h:132:3, inlined from '__rte_ring_do_hts_enqueue_elem' at ../lib/ring/rte_ring_hts_elem_pvt.h:196:3, inlined from 'rte_ring_mp_hts_enqueue_bulk_elem' at ../lib/ring/rte_ring_hts.h:56:9, inlined from 'rte_ring_enqueue_bulk_elem' at ../lib/ring/rte_ring_elem.h:208:10, inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, inlined from '_cancel_producer' at ../app/test/test_event_timer_adapter.c:834:10: ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 bytes from a region of size 8 [-Werror=stringop-overread] 100 | memcpy((void *)(ring + idx), | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ 101 | (const void *)(obj + i), 32); | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': ../app/test/test_event_timer_adapter.c:805:1: note: source object 'obj' of size 8 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) | ^~~~~~~~~~~~~~~~ In function '__rte_ring_dequeue_elems_128', inlined from '__rte_ring_dequeue_elems' at ../lib/ring/rte_ring_elem_pvt.h:262:3, inlined from '__rte_ring_do_dequeue_elem' at ../lib/ring/rte_ring_elem_pvt.h:375:2, inlined from 'rte_ring_mc_dequeue_bulk_elem' at ../lib/ring/rte_ring_elem.h:320:9, inlined from 'rte_ring_dequeue_bulk_elem' at ../lib/ring/rte_ring_elem.h:381:10, inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, inlined from '_cancel_thread' at ../app/test/test_event_timer_adapter.c:917:7: ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 bytes into a region of size 8 overflows the destination [-Werror=stringop-overflow=] 234 | memcpy((void *)(obj + i), (void *)(ring + idx), 32); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': ../app/test/test_event_timer_adapter.c:913:33: note: destination object 'ev_tim' of size 8 913 | struct rte_event_timer *ev_tim = NULL; | ^~~~~~ In function '__rte_ring_dequeue_elems_128', inlined from '__rte_ring_dequeue_elems' at ../lib/ring/rte_ring_elem_pvt.h:262:3, inlined from '__rte_ring_do_dequeue_elem' at ../lib/ring/rte_ring_elem_pvt.h:375:2, inlined from 'rte_ring_sc_dequeue_bulk_elem' at ../lib/ring/rte_ring_elem.h:348:9, inlined from 'rte_ring_dequeue_bulk_elem' at ../lib/ring/rte_ring_elem.h:384:10, inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, inlined from '_cancel_thread' at ../app/test/test_event_timer_adapter.c:917:7: ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 bytes into a region of size 8 overflows the destination [-Werror=stringop-overflow=] 234 | memcpy((void *)(obj + i), (void *)(ring + idx), 32); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': ../app/test/test_event_timer_adapter.c:913:33: note: destination object 'ev_tim' of size 8 913 | struct rte_event_timer *ev_tim = NULL; | ^~~~~~ In function '__rte_ring_dequeue_elems_128', inlined from '__rte_ring_dequeue_elems' at ../lib/ring/rte_ring_elem_pvt.h:262:3, inlined from '__rte_ring_do_rts_dequeue_elem' at ../lib/ring/rte_ring_rts_elem_pvt.h:252:3, inlined from 'rte_ring_mc_rts_dequeue_bulk_elem' at ../lib/ring/rte_ring_rts.h:110:9, inlined from 'rte_ring_dequeue_bulk_elem' at ../lib/ring/rte_ring_elem.h:387:10, inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, inlined from '_cancel_thread' at ../app/test/test_event_timer_adapter.c:917:7: ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 bytes into a region of size 8 overflows the destination [-Werror=stringop-overflow=] 234 | memcpy((void *)(obj + i), (void *)(ring + idx), 32); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': ../app/test/test_event_timer_adapter.c:913:33: note: destination object 'ev_tim' of size 8 913 | struct rte_event_timer *ev_tim = NULL; | ^~~~~~ In function '__rte_ring_dequeue_elems_128', inlined from '__rte_ring_dequeue_elems' at ../lib/ring/rte_ring_elem_pvt.h:262:3, inlined from '__rte_ring_do_hts_dequeue_elem' at ../lib/ring/rte_ring_hts_elem_pvt.h:237:3, inlined from 'rte_ring_mc_hts_dequeue_bulk_elem' at ../lib/ring/rte_ring_hts.h:83:9, inlined from 'rte_ring_dequeue_bulk_elem' at ../lib/ring/rte_ring_elem.h:390:10, inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, inlined from '_cancel_thread' at ../app/test/test_event_timer_adapter.c:917:7: ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 bytes into a region of size 8 overflows the destination [-Werror=stringop-overflow=] 234 | memcpy((void *)(obj + i), (void *)(ring + idx), 32); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': ../app/test/test_event_timer_adapter.c:913:33: note: destination object 'ev_tim' of size 8 913 | struct rte_event_timer *ev_tim = NULL; | ^~~~~~ cc1: all warnings being treated as errors ninja: subcommands failed This is gcc (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924. The compiler seems unhappy about the rte_int128_t type. The below hunk seems to (confuse?) help the compiler. diff --git a/lib/ring/rte_ring_elem_pvt.h b/lib/ring/rte_ring_elem_pvt.h index 83788c56e6..ece937f8e1 100644 --- a/lib/ring/rte_ring_elem_pvt.h +++ b/lib/ring/rte_ring_elem_pvt.h @@ -98,7 +98,7 @@ __rte_ring_enqueue_elems_128(struct rte_ring *r, uint32_t prod_head, if (likely(idx + n <= size)) { for (i = 0; i < (n & ~0x1); i += 2, idx += 2) memcpy((void *)(ring + idx), - (const void *)(obj + i), 32); + (const void *)((uintptr_t)obj + i), 32); switch (n & 0x1) { case 1: memcpy((void *)(ring + idx), @@ -231,7 +231,7 @@ __rte_ring_dequeue_elems_128(struct rte_ring *r, uint32_t prod_head, rte_int128_t *obj = (rte_int128_t *)obj_table; if (likely(idx + n <= size)) { for (i = 0; i < (n & ~0x1); i += 2, idx += 2) - memcpy((void *)(obj + i), (void *)(ring + idx), 32); + memcpy((void *)((uintptr_t)obj + i), (void *)(ring + idx), 32); switch (n & 0x1) { case 1: memcpy((void *)(obj + i), (void *)(ring + idx), 16); RTE_PTR_ADD has the same effect. -- David Marchand ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Meson buildtype for ci jobs? 2023-03-16 8:49 ` Meson buildtype for ci jobs? David Marchand @ 2023-03-16 9:08 ` David Marchand 2023-03-16 10:06 ` Bruce Richardson 0 siblings, 1 reply; 3+ messages in thread From: David Marchand @ 2023-03-16 9:08 UTC (permalink / raw) To: Honnappa Nagarahalli, Konstantin Ananyev, Thomas Monjalon, Richardson, Bruce Cc: ci, Aaron Conole, dev, Patrick Robb, Kevin Traynor On Thu, Mar 16, 2023 at 9:49 AM David Marchand <david.marchand@redhat.com> wrote: > > Adding dev@ mailing list and ring maintainers, > > On Wed, Mar 15, 2023 at 8:13 PM Patrick Robb <probb@iol.unh.edu> wrote: > >> > >> Would passing "-Ddebug=true" be better than changing the default buildtype? > >> It's possible to have a release build (i.e. O3 optimized) with debug info. > > > > > > Strangely, even with -Ddebug true if I'm running buildtype "release" it returns the same warnings. I'm inferring from your comment that release optimization == debugoptimized optimization and debug behavior from -Ddebug=true == debug behavior from debugoptimized, so release buildtype + debug "should" have the same behavior as just setting buildtype debugoptimized, and yet... > > > > I'll have to look into this a little more. Hopefully by the end I'll be like David and understand the relations between these flags better, hah. > > As for how buildtype, optimizations and debug params are concerned, > the summary is here: > https://mesonbuild.com/Builtin-options.html#details-for-buildtype > > > In my tests this morning with a Alpine container, I noticed that > setting -Dplatform to native makes the issue disappear... > So an additional factor is building with platform=generic. > > ~/dpdk # meson configure build | awk '{if ($1 ~ > /^(buildtype|platform|debug|optimization)$/) { print $0; }}' > buildtype debug [plain, debug, > debugoptimized, release, minsize, custom] Build type to use > debug true [true, false] > Debug > optimization 0 [0, g, 1, 2, 3, s] > Optimization level > platform generic > Platform to build, either > "native", "generic" or a SoC. Please refer to the Linux build guide > for more information. > > ... > > In file included from ../lib/ring/rte_ring_elem.h:24, > from ../lib/ring/rte_ring.h:43, > from ../lib/mempool/rte_mempool.h:47, > from ../lib/mbuf/rte_mbuf.h:38, > from ../lib/net/rte_ether.h:22, > from ../lib/ethdev/rte_eth_ctrl.h:10, > from ../lib/ethdev/rte_ethdev.h:1421, > from ../app/test/test_event_timer_adapter.c:14: > In function '__rte_ring_enqueue_elems_128', > inlined from '__rte_ring_enqueue_elems' at > ../lib/ring/rte_ring_elem_pvt.h:132:3, > inlined from '__rte_ring_do_enqueue_elem' at > ../lib/ring/rte_ring_elem_pvt.h:328:2, > inlined from 'rte_ring_mp_enqueue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:134:9, > inlined from 'rte_ring_enqueue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:199:10, > inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, > inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, > inlined from '_cancel_producer' at > ../app/test/test_event_timer_adapter.c:834:10: > ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 > bytes from a region of size 8 [-Werror=stringop-overread] > 100 | memcpy((void *)(ring + idx), > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 101 | (const void *)(obj + i), 32); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': > ../app/test/test_event_timer_adapter.c:805:1: note: source object > 'obj' of size 8 > 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) > | ^~~~~~~~~~~~~~~~ > In function '__rte_ring_enqueue_elems_128', > inlined from '__rte_ring_enqueue_elems' at > ../lib/ring/rte_ring_elem_pvt.h:132:3, > inlined from '__rte_ring_do_enqueue_elem' at > ../lib/ring/rte_ring_elem_pvt.h:328:2, > inlined from 'rte_ring_sp_enqueue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:163:9, > inlined from 'rte_ring_enqueue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:202:10, > inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, > inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, > inlined from '_cancel_producer' at > ../app/test/test_event_timer_adapter.c:834:10: > ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 > bytes from a region of size 8 [-Werror=stringop-overread] > 100 | memcpy((void *)(ring + idx), > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 101 | (const void *)(obj + i), 32); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': > ../app/test/test_event_timer_adapter.c:805:1: note: source object > 'obj' of size 8 > 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) > | ^~~~~~~~~~~~~~~~ > In function '__rte_ring_enqueue_elems_128', > inlined from '__rte_ring_enqueue_elems' at > ../lib/ring/rte_ring_elem_pvt.h:132:3, > inlined from '__rte_ring_do_rts_enqueue_elem' at > ../lib/ring/rte_ring_rts_elem_pvt.h:211:3, > inlined from 'rte_ring_mp_rts_enqueue_bulk_elem' at > ../lib/ring/rte_ring_rts.h:83:9, > inlined from 'rte_ring_enqueue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:205:10, > inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, > inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, > inlined from '_cancel_producer' at > ../app/test/test_event_timer_adapter.c:834:10: > ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 > bytes from a region of size 8 [-Werror=stringop-overread] > 100 | memcpy((void *)(ring + idx), > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 101 | (const void *)(obj + i), 32); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': > ../app/test/test_event_timer_adapter.c:805:1: note: source object > 'obj' of size 8 > 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) > | ^~~~~~~~~~~~~~~~ > In function '__rte_ring_enqueue_elems_128', > inlined from '__rte_ring_enqueue_elems' at > ../lib/ring/rte_ring_elem_pvt.h:132:3, > inlined from '__rte_ring_do_hts_enqueue_elem' at > ../lib/ring/rte_ring_hts_elem_pvt.h:196:3, > inlined from 'rte_ring_mp_hts_enqueue_bulk_elem' at > ../lib/ring/rte_ring_hts.h:56:9, > inlined from 'rte_ring_enqueue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:208:10, > inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, > inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, > inlined from '_cancel_producer' at > ../app/test/test_event_timer_adapter.c:834:10: > ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 > bytes from a region of size 8 [-Werror=stringop-overread] > 100 | memcpy((void *)(ring + idx), > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 101 | (const void *)(obj + i), 32); > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': > ../app/test/test_event_timer_adapter.c:805:1: note: source object > 'obj' of size 8 > 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) > | ^~~~~~~~~~~~~~~~ > In function '__rte_ring_dequeue_elems_128', > inlined from '__rte_ring_dequeue_elems' at > ../lib/ring/rte_ring_elem_pvt.h:262:3, > inlined from '__rte_ring_do_dequeue_elem' at > ../lib/ring/rte_ring_elem_pvt.h:375:2, > inlined from 'rte_ring_mc_dequeue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:320:9, > inlined from 'rte_ring_dequeue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:381:10, > inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, > inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, > inlined from '_cancel_thread' at > ../app/test/test_event_timer_adapter.c:917:7: > ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 > bytes into a region of size 8 overflows the destination > [-Werror=stringop-overflow=] > 234 | memcpy((void *)(obj + i), (void > *)(ring + idx), 32); > | > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': > ../app/test/test_event_timer_adapter.c:913:33: note: destination > object 'ev_tim' of size 8 > 913 | struct rte_event_timer *ev_tim = NULL; > | ^~~~~~ > In function '__rte_ring_dequeue_elems_128', > inlined from '__rte_ring_dequeue_elems' at > ../lib/ring/rte_ring_elem_pvt.h:262:3, > inlined from '__rte_ring_do_dequeue_elem' at > ../lib/ring/rte_ring_elem_pvt.h:375:2, > inlined from 'rte_ring_sc_dequeue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:348:9, > inlined from 'rte_ring_dequeue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:384:10, > inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, > inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, > inlined from '_cancel_thread' at > ../app/test/test_event_timer_adapter.c:917:7: > ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 > bytes into a region of size 8 overflows the destination > [-Werror=stringop-overflow=] > 234 | memcpy((void *)(obj + i), (void > *)(ring + idx), 32); > | > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': > ../app/test/test_event_timer_adapter.c:913:33: note: destination > object 'ev_tim' of size 8 > 913 | struct rte_event_timer *ev_tim = NULL; > | ^~~~~~ > In function '__rte_ring_dequeue_elems_128', > inlined from '__rte_ring_dequeue_elems' at > ../lib/ring/rte_ring_elem_pvt.h:262:3, > inlined from '__rte_ring_do_rts_dequeue_elem' at > ../lib/ring/rte_ring_rts_elem_pvt.h:252:3, > inlined from 'rte_ring_mc_rts_dequeue_bulk_elem' at > ../lib/ring/rte_ring_rts.h:110:9, > inlined from 'rte_ring_dequeue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:387:10, > inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, > inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, > inlined from '_cancel_thread' at > ../app/test/test_event_timer_adapter.c:917:7: > ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 > bytes into a region of size 8 overflows the destination > [-Werror=stringop-overflow=] > 234 | memcpy((void *)(obj + i), (void > *)(ring + idx), 32); > | > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': > ../app/test/test_event_timer_adapter.c:913:33: note: destination > object 'ev_tim' of size 8 > 913 | struct rte_event_timer *ev_tim = NULL; > | ^~~~~~ > In function '__rte_ring_dequeue_elems_128', > inlined from '__rte_ring_dequeue_elems' at > ../lib/ring/rte_ring_elem_pvt.h:262:3, > inlined from '__rte_ring_do_hts_dequeue_elem' at > ../lib/ring/rte_ring_hts_elem_pvt.h:237:3, > inlined from 'rte_ring_mc_hts_dequeue_bulk_elem' at > ../lib/ring/rte_ring_hts.h:83:9, > inlined from 'rte_ring_dequeue_bulk_elem' at > ../lib/ring/rte_ring_elem.h:390:10, > inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, > inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, > inlined from '_cancel_thread' at > ../app/test/test_event_timer_adapter.c:917:7: > ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 > bytes into a region of size 8 overflows the destination > [-Werror=stringop-overflow=] > 234 | memcpy((void *)(obj + i), (void > *)(ring + idx), 32); > | > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': > ../app/test/test_event_timer_adapter.c:913:33: note: destination > object 'ev_tim' of size 8 > 913 | struct rte_event_timer *ev_tim = NULL; > | ^~~~~~ > cc1: all warnings being treated as errors > ninja: subcommands failed > > > This is gcc (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924. > > The compiler seems unhappy about the rte_int128_t type. > The below hunk seems to (confuse?) help the compiler. > > diff --git a/lib/ring/rte_ring_elem_pvt.h b/lib/ring/rte_ring_elem_pvt.h > index 83788c56e6..ece937f8e1 100644 > --- a/lib/ring/rte_ring_elem_pvt.h > +++ b/lib/ring/rte_ring_elem_pvt.h > @@ -98,7 +98,7 @@ __rte_ring_enqueue_elems_128(struct rte_ring *r, > uint32_t prod_head, > if (likely(idx + n <= size)) { > for (i = 0; i < (n & ~0x1); i += 2, idx += 2) > memcpy((void *)(ring + idx), > - (const void *)(obj + i), 32); > + (const void *)((uintptr_t)obj + i), 32); > switch (n & 0x1) { > case 1: > memcpy((void *)(ring + idx), > @@ -231,7 +231,7 @@ __rte_ring_dequeue_elems_128(struct rte_ring *r, > uint32_t prod_head, > rte_int128_t *obj = (rte_int128_t *)obj_table; > if (likely(idx + n <= size)) { > for (i = 0; i < (n & ~0x1); i += 2, idx += 2) > - memcpy((void *)(obj + i), (void *)(ring + idx), 32); > + memcpy((void *)((uintptr_t)obj + i), (void *)(ring + idx), 32); > switch (n & 0x1) { > case 1: > memcpy((void *)(obj + i), (void *)(ring + idx), 16); > > > RTE_PTR_ADD has the same effect. > This seems what Kevin had worked around for 21.11 release: https://inbox.dpdk.org/stable/20221220123754.239802-1-ktraynor@redhat.com/ I would tend to do the same and disable this warning for rc3 at least, and have stable branches and the main repository aligned. We can have a better fix later. Opinions? -- David Marchand ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Meson buildtype for ci jobs? 2023-03-16 9:08 ` David Marchand @ 2023-03-16 10:06 ` Bruce Richardson 0 siblings, 0 replies; 3+ messages in thread From: Bruce Richardson @ 2023-03-16 10:06 UTC (permalink / raw) To: David Marchand Cc: Honnappa Nagarahalli, Konstantin Ananyev, Thomas Monjalon, ci, Aaron Conole, dev, Patrick Robb, Kevin Traynor On Thu, Mar 16, 2023 at 10:08:47AM +0100, David Marchand wrote: > On Thu, Mar 16, 2023 at 9:49 AM David Marchand > <david.marchand@redhat.com> wrote: > > > > Adding dev@ mailing list and ring maintainers, > > > > On Wed, Mar 15, 2023 at 8:13 PM Patrick Robb <probb@iol.unh.edu> wrote: > > >> > > >> Would passing "-Ddebug=true" be better than changing the default buildtype? > > >> It's possible to have a release build (i.e. O3 optimized) with debug info. > > > > > > > > > Strangely, even with -Ddebug true if I'm running buildtype "release" it returns the same warnings. I'm inferring from your comment that release optimization == debugoptimized optimization and debug behavior from -Ddebug=true == debug behavior from debugoptimized, so release buildtype + debug "should" have the same behavior as just setting buildtype debugoptimized, and yet... > > > > > > I'll have to look into this a little more. Hopefully by the end I'll be like David and understand the relations between these flags better, hah. > > > > As for how buildtype, optimizations and debug params are concerned, > > the summary is here: > > https://mesonbuild.com/Builtin-options.html#details-for-buildtype > > > > > > In my tests this morning with a Alpine container, I noticed that > > setting -Dplatform to native makes the issue disappear... > > So an additional factor is building with platform=generic. > > > > ~/dpdk # meson configure build | awk '{if ($1 ~ > > /^(buildtype|platform|debug|optimization)$/) { print $0; }}' > > buildtype debug [plain, debug, > > debugoptimized, release, minsize, custom] Build type to use > > debug true [true, false] > > Debug > > optimization 0 [0, g, 1, 2, 3, s] > > Optimization level > > platform generic > > Platform to build, either > > "native", "generic" or a SoC. Please refer to the Linux build guide > > for more information. > > > > ... > > > > In file included from ../lib/ring/rte_ring_elem.h:24, > > from ../lib/ring/rte_ring.h:43, > > from ../lib/mempool/rte_mempool.h:47, > > from ../lib/mbuf/rte_mbuf.h:38, > > from ../lib/net/rte_ether.h:22, > > from ../lib/ethdev/rte_eth_ctrl.h:10, > > from ../lib/ethdev/rte_ethdev.h:1421, > > from ../app/test/test_event_timer_adapter.c:14: > > In function '__rte_ring_enqueue_elems_128', > > inlined from '__rte_ring_enqueue_elems' at > > ../lib/ring/rte_ring_elem_pvt.h:132:3, > > inlined from '__rte_ring_do_enqueue_elem' at > > ../lib/ring/rte_ring_elem_pvt.h:328:2, > > inlined from 'rte_ring_mp_enqueue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:134:9, > > inlined from 'rte_ring_enqueue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:199:10, > > inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, > > inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, > > inlined from '_cancel_producer' at > > ../app/test/test_event_timer_adapter.c:834:10: > > ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 > > bytes from a region of size 8 [-Werror=stringop-overread] > > 100 | memcpy((void *)(ring + idx), > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > 101 | (const void *)(obj + i), 32); > > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': > > ../app/test/test_event_timer_adapter.c:805:1: note: source object > > 'obj' of size 8 > > 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) > > | ^~~~~~~~~~~~~~~~ > > In function '__rte_ring_enqueue_elems_128', > > inlined from '__rte_ring_enqueue_elems' at > > ../lib/ring/rte_ring_elem_pvt.h:132:3, > > inlined from '__rte_ring_do_enqueue_elem' at > > ../lib/ring/rte_ring_elem_pvt.h:328:2, > > inlined from 'rte_ring_sp_enqueue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:163:9, > > inlined from 'rte_ring_enqueue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:202:10, > > inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, > > inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, > > inlined from '_cancel_producer' at > > ../app/test/test_event_timer_adapter.c:834:10: > > ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 > > bytes from a region of size 8 [-Werror=stringop-overread] > > 100 | memcpy((void *)(ring + idx), > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > 101 | (const void *)(obj + i), 32); > > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': > > ../app/test/test_event_timer_adapter.c:805:1: note: source object > > 'obj' of size 8 > > 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) > > | ^~~~~~~~~~~~~~~~ > > In function '__rte_ring_enqueue_elems_128', > > inlined from '__rte_ring_enqueue_elems' at > > ../lib/ring/rte_ring_elem_pvt.h:132:3, > > inlined from '__rte_ring_do_rts_enqueue_elem' at > > ../lib/ring/rte_ring_rts_elem_pvt.h:211:3, > > inlined from 'rte_ring_mp_rts_enqueue_bulk_elem' at > > ../lib/ring/rte_ring_rts.h:83:9, > > inlined from 'rte_ring_enqueue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:205:10, > > inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, > > inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, > > inlined from '_cancel_producer' at > > ../app/test/test_event_timer_adapter.c:834:10: > > ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 > > bytes from a region of size 8 [-Werror=stringop-overread] > > 100 | memcpy((void *)(ring + idx), > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > 101 | (const void *)(obj + i), 32); > > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': > > ../app/test/test_event_timer_adapter.c:805:1: note: source object > > 'obj' of size 8 > > 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) > > | ^~~~~~~~~~~~~~~~ > > In function '__rte_ring_enqueue_elems_128', > > inlined from '__rte_ring_enqueue_elems' at > > ../lib/ring/rte_ring_elem_pvt.h:132:3, > > inlined from '__rte_ring_do_hts_enqueue_elem' at > > ../lib/ring/rte_ring_hts_elem_pvt.h:196:3, > > inlined from 'rte_ring_mp_hts_enqueue_bulk_elem' at > > ../lib/ring/rte_ring_hts.h:56:9, > > inlined from 'rte_ring_enqueue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:208:10, > > inlined from 'rte_ring_enqueue_elem' at ../lib/ring/rte_ring_elem.h:290:9, > > inlined from 'rte_ring_enqueue' at ../lib/ring/rte_ring.h:339:9, > > inlined from '_cancel_producer' at > > ../app/test/test_event_timer_adapter.c:834:10: > > ../lib/ring/rte_ring_elem_pvt.h:100:25: error: 'memcpy' reading 32 > > bytes from a region of size 8 [-Werror=stringop-overread] > > 100 | memcpy((void *)(ring + idx), > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > 101 | (const void *)(obj + i), 32); > > | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_event_timer_adapter.c: In function '_cancel_producer': > > ../app/test/test_event_timer_adapter.c:805:1: note: source object > > 'obj' of size 8 > > 805 | _cancel_producer(uint64_t timeout_tcks, uint64_t timers) > > | ^~~~~~~~~~~~~~~~ > > In function '__rte_ring_dequeue_elems_128', > > inlined from '__rte_ring_dequeue_elems' at > > ../lib/ring/rte_ring_elem_pvt.h:262:3, > > inlined from '__rte_ring_do_dequeue_elem' at > > ../lib/ring/rte_ring_elem_pvt.h:375:2, > > inlined from 'rte_ring_mc_dequeue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:320:9, > > inlined from 'rte_ring_dequeue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:381:10, > > inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, > > inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, > > inlined from '_cancel_thread' at > > ../app/test/test_event_timer_adapter.c:917:7: > > ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 > > bytes into a region of size 8 overflows the destination > > [-Werror=stringop-overflow=] > > 234 | memcpy((void *)(obj + i), (void > > *)(ring + idx), 32); > > | > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': > > ../app/test/test_event_timer_adapter.c:913:33: note: destination > > object 'ev_tim' of size 8 > > 913 | struct rte_event_timer *ev_tim = NULL; > > | ^~~~~~ > > In function '__rte_ring_dequeue_elems_128', > > inlined from '__rte_ring_dequeue_elems' at > > ../lib/ring/rte_ring_elem_pvt.h:262:3, > > inlined from '__rte_ring_do_dequeue_elem' at > > ../lib/ring/rte_ring_elem_pvt.h:375:2, > > inlined from 'rte_ring_sc_dequeue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:348:9, > > inlined from 'rte_ring_dequeue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:384:10, > > inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, > > inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, > > inlined from '_cancel_thread' at > > ../app/test/test_event_timer_adapter.c:917:7: > > ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 > > bytes into a region of size 8 overflows the destination > > [-Werror=stringop-overflow=] > > 234 | memcpy((void *)(obj + i), (void > > *)(ring + idx), 32); > > | > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': > > ../app/test/test_event_timer_adapter.c:913:33: note: destination > > object 'ev_tim' of size 8 > > 913 | struct rte_event_timer *ev_tim = NULL; > > | ^~~~~~ > > In function '__rte_ring_dequeue_elems_128', > > inlined from '__rte_ring_dequeue_elems' at > > ../lib/ring/rte_ring_elem_pvt.h:262:3, > > inlined from '__rte_ring_do_rts_dequeue_elem' at > > ../lib/ring/rte_ring_rts_elem_pvt.h:252:3, > > inlined from 'rte_ring_mc_rts_dequeue_bulk_elem' at > > ../lib/ring/rte_ring_rts.h:110:9, > > inlined from 'rte_ring_dequeue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:387:10, > > inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, > > inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, > > inlined from '_cancel_thread' at > > ../app/test/test_event_timer_adapter.c:917:7: > > ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 > > bytes into a region of size 8 overflows the destination > > [-Werror=stringop-overflow=] > > 234 | memcpy((void *)(obj + i), (void > > *)(ring + idx), 32); > > | > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': > > ../app/test/test_event_timer_adapter.c:913:33: note: destination > > object 'ev_tim' of size 8 > > 913 | struct rte_event_timer *ev_tim = NULL; > > | ^~~~~~ > > In function '__rte_ring_dequeue_elems_128', > > inlined from '__rte_ring_dequeue_elems' at > > ../lib/ring/rte_ring_elem_pvt.h:262:3, > > inlined from '__rte_ring_do_hts_dequeue_elem' at > > ../lib/ring/rte_ring_hts_elem_pvt.h:237:3, > > inlined from 'rte_ring_mc_hts_dequeue_bulk_elem' at > > ../lib/ring/rte_ring_hts.h:83:9, > > inlined from 'rte_ring_dequeue_bulk_elem' at > > ../lib/ring/rte_ring_elem.h:390:10, > > inlined from 'rte_ring_dequeue_elem' at ../lib/ring/rte_ring_elem.h:475:9, > > inlined from 'rte_ring_dequeue' at ../lib/ring/rte_ring.h:477:9, > > inlined from '_cancel_thread' at > > ../app/test/test_event_timer_adapter.c:917:7: > > ../lib/ring/rte_ring_elem_pvt.h:234:25: error: 'memcpy' writing 32 > > bytes into a region of size 8 overflows the destination > > [-Werror=stringop-overflow=] > > 234 | memcpy((void *)(obj + i), (void > > *)(ring + idx), 32); > > | > > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > ../app/test/test_event_timer_adapter.c: In function '_cancel_thread': > > ../app/test/test_event_timer_adapter.c:913:33: note: destination > > object 'ev_tim' of size 8 > > 913 | struct rte_event_timer *ev_tim = NULL; > > | ^~~~~~ > > cc1: all warnings being treated as errors > > ninja: subcommands failed > > > > > > This is gcc (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924. > > > > The compiler seems unhappy about the rte_int128_t type. > > The below hunk seems to (confuse?) help the compiler. > > > > diff --git a/lib/ring/rte_ring_elem_pvt.h b/lib/ring/rte_ring_elem_pvt.h > > index 83788c56e6..ece937f8e1 100644 > > --- a/lib/ring/rte_ring_elem_pvt.h > > +++ b/lib/ring/rte_ring_elem_pvt.h > > @@ -98,7 +98,7 @@ __rte_ring_enqueue_elems_128(struct rte_ring *r, > > uint32_t prod_head, > > if (likely(idx + n <= size)) { > > for (i = 0; i < (n & ~0x1); i += 2, idx += 2) > > memcpy((void *)(ring + idx), > > - (const void *)(obj + i), 32); > > + (const void *)((uintptr_t)obj + i), 32); > > switch (n & 0x1) { > > case 1: > > memcpy((void *)(ring + idx), > > @@ -231,7 +231,7 @@ __rte_ring_dequeue_elems_128(struct rte_ring *r, > > uint32_t prod_head, > > rte_int128_t *obj = (rte_int128_t *)obj_table; > > if (likely(idx + n <= size)) { > > for (i = 0; i < (n & ~0x1); i += 2, idx += 2) > > - memcpy((void *)(obj + i), (void *)(ring + idx), 32); > > + memcpy((void *)((uintptr_t)obj + i), (void *)(ring + idx), 32); > > switch (n & 0x1) { > > case 1: > > memcpy((void *)(obj + i), (void *)(ring + idx), 16); > > > > > > RTE_PTR_ADD has the same effect. > > > > This seems what Kevin had worked around for 21.11 release: > https://inbox.dpdk.org/stable/20221220123754.239802-1-ktraynor@redhat.com/ > > I would tend to do the same and disable this warning for rc3 at least, > and have stable branches and the main repository aligned. > We can have a better fix later. > > Opinions? > No objections. ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-03-16 10:06 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CAJvnSUDGnYveF8Ss9vzz40WC4=XLdyOtL3W3A-_tAsLd5e-ScA@mail.gmail.com> [not found] ` <CAJFAV8whvEU77oou=4QHjZyT8pn_LDg0WGNHMnaUX56h6d9viQ@mail.gmail.com> [not found] ` <DS0PR11MB730955EC70691C25045A839397BF9@DS0PR11MB7309.namprd11.prod.outlook.com> [not found] ` <CAJvnSUB+JH1UW8bUe0Nv5w-7eTnmDtb7anrSFLmXsgHFGYbFWQ@mail.gmail.com> 2023-03-16 8:49 ` Meson buildtype for ci jobs? David Marchand 2023-03-16 9:08 ` David Marchand 2023-03-16 10:06 ` Bruce Richardson
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).