https://bugs.dpdk.org/show_bug.cgi?id=2101

            Bug ID: 2101
           Summary: soring: stringop warnings on LTO build
           Product: DPDK
           Version: 26.11
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: minor
          Priority: Normal
         Component: core
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

Build with LTO fails:
FAILED: [code=1] app/dpdk-test 
cc  -o app/dpdk-test app/dpdk-test.p/test_commands.c.o
app/dpdk-test.p/test_test.c.o app/dpdk-test.p/test_process.c.o
app/dpdk-test.p/test_packet_burst_generator.c.o
app/dpdk-test.p/test_sample_packet_forward.c.o
app/dpdk-test.p/test_virtual_pmd.c.o app/dpdk-test.p/test_test_acl.c.o
app/dpdk-test.p/test_test_alarm.c.o app/dpdk-test.p/test_test_argparse.c.o
app/dpdk-test.p/test_test_atomic.c.o app/dpdk-test.p/test_test_barrier.c.o
app/dpdk-test.p/test_test_bitcount.c.o app/dpdk-test.p/test_test_bitmap.c.o
app/dpdk-test.p/test_test_bitops.c.o app/dpdk-test.p/test_test_bitset.c.o
app/dpdk-test.p/test_test_bitratestats.c.o app/dpdk-test.p/test_test_bpf.c.o
app/dpdk-test.p/test_test_bpf_validate.c.o
app/dpdk-test.p/test_test_byteorder.c.o app/dpdk-test.p/test_test_cfgfile.c.o
app/dpdk-test.p/test_test_cksum.c.o app/dpdk-test.p/test_test_cksum_perf.c.o
app/dpdk-test.p/test_test_cmdline.c.o
app/dpdk-test.p/test_test_cmdline_cirbuf.c.o
app/dpdk-test.p/test_test_cmdline_etheraddr.c.o
app/dpdk-test.p/test_test_cmdline_ipaddr.c.o
app/dpdk-test.p/test_test_cmdline_lib.c.o
app/dpdk-test.p/test_test_cmdline_num.c.o
app/dpdk-test.p/test_test_cmdline_portlist.c.o
app/dpdk-test.p/test_test_cmdline_string.c.o
app/dpdk-test.p/test_test_common.c.o app/dpdk-test.p/test_test_compressdev.c.o
app/dpdk-test.p/test_test_cpuflags.c.o app/dpdk-test.p/test_test_crc.c.o
app/dpdk-test.p/test_test_cryptodev.c.o
app/dpdk-test.p/test_test_cryptodev_asym.c.o
app/dpdk-test.p/test_test_cryptodev_blockcipher.c.o
app/dpdk-test.p/test_test_cryptodev_crosscheck.c.o
app/dpdk-test.p/test_test_cryptodev_security_ipsec.c.o
app/dpdk-test.p/test_test_cryptodev_security_pdcp.c.o
app/dpdk-test.p/test_test_cryptodev_security_tls_record.c.o
app/dpdk-test.p/test_test_cycles.c.o app/dpdk-test.p/test_test_debug.c.o
app/dpdk-test.p/test_test_devargs.c.o app/dpdk-test.p/test_test_dispatcher.c.o
app/dpdk-test.p/test_test_distributor.c.o
app/dpdk-test.p/test_test_distributor_perf.c.o
app/dpdk-test.p/test_test_dmadev.c.o app/dpdk-test.p/test_test_dmadev_api.c.o
app/dpdk-test.p/test_test_eal_flags.c.o app/dpdk-test.p/test_test_eal_fs.c.o
app/dpdk-test.p/test_test_efd.c.o app/dpdk-test.p/test_test_efd_perf.c.o
app/dpdk-test.p/test_test_errno.c.o app/dpdk-test.p/test_test_ethdev_api.c.o
app/dpdk-test.p/test_test_ethdev_flow_conv.c.o
app/dpdk-test.p/test_test_ethdev_link.c.o
app/dpdk-test.p/test_test_ethdev_module_eeprom.c.o
app/dpdk-test.p/test_test_event_crypto_adapter.c.o
app/dpdk-test.p/test_test_event_dma_adapter.c.o
app/dpdk-test.p/test_test_event_eth_rx_adapter.c.o
app/dpdk-test.p/test_test_event_eth_tx_adapter.c.o
app/dpdk-test.p/test_test_event_ring.c.o
app/dpdk-test.p/test_test_event_timer_adapter.c.o
app/dpdk-test.p/test_test_event_vector_adapter.c.o
app/dpdk-test.p/test_test_eventdev.c.o
app/dpdk-test.p/test_test_external_mem.c.o
app/dpdk-test.p/test_test_fbarray.c.o app/dpdk-test.p/test_test_fib.c.o
app/dpdk-test.p/test_test_fib6.c.o app/dpdk-test.p/test_test_fib6_perf.c.o
app/dpdk-test.p/test_test_fib_perf.c.o
app/dpdk-test.p/test_test_func_reentrancy.c.o
app/dpdk-test.p/test_test_graph.c.o
app/dpdk-test.p/test_test_graph_feature_arc.c.o
app/dpdk-test.p/test_test_graph_perf.c.o app/dpdk-test.p/test_test_hash.c.o
app/dpdk-test.p/test_test_hash_functions.c.o
app/dpdk-test.p/test_test_hash_multiwriter.c.o
app/dpdk-test.p/test_test_hash_perf.c.o
app/dpdk-test.p/test_test_hash_readwrite.c.o
app/dpdk-test.p/test_test_hash_readwrite_lf_perf.c.o
app/dpdk-test.p/test_test_interrupts.c.o app/dpdk-test.p/test_test_ipfrag.c.o
app/dpdk-test.p/test_test_ipsec.c.o app/dpdk-test.p/test_test_ipsec_perf.c.o
app/dpdk-test.p/test_test_ipsec_sad.c.o app/dpdk-test.p/test_test_kvargs.c.o
app/dpdk-test.p/test_test_latencystats.c.o
app/dpdk-test.p/test_test_lcore_var.c.o
app/dpdk-test.p/test_test_lcore_var_perf.c.o
app/dpdk-test.p/test_test_lcores.c.o app/dpdk-test.p/test_test_link_bonding.c.o
app/dpdk-test.p/test_test_link_bonding_mode4.c.o
app/dpdk-test.p/test_test_link_bonding_rssconf.c.o
app/dpdk-test.p/test_test_logs.c.o app/dpdk-test.p/test_test_lpm.c.o
app/dpdk-test.p/test_test_lpm6.c.o app/dpdk-test.p/test_test_lpm6_perf.c.o
app/dpdk-test.p/test_test_lpm_perf.c.o app/dpdk-test.p/test_test_malloc.c.o
app/dpdk-test.p/test_test_malloc_perf.c.o app/dpdk-test.p/test_test_mbuf.c.o
app/dpdk-test.p/test_test_mcslock.c.o app/dpdk-test.p/test_test_member.c.o
app/dpdk-test.p/test_test_member_perf.c.o app/dpdk-test.p/test_test_memcpy.c.o
app/dpdk-test.p/test_test_memcpy_perf.c.o app/dpdk-test.p/test_test_memory.c.o
app/dpdk-test.p/test_test_mempool.c.o
app/dpdk-test.p/test_test_mempool_perf.c.o
app/dpdk-test.p/test_test_memzone.c.o app/dpdk-test.p/test_test_meter.c.o
app/dpdk-test.p/test_test_metrics.c.o
app/dpdk-test.p/test_test_mp_secondary.c.o
app/dpdk-test.p/test_test_net_ether.c.o app/dpdk-test.p/test_test_net_ip6.c.o
app/dpdk-test.p/test_test_pcapng.c.o app/dpdk-test.p/test_test_pdcp.c.o
app/dpdk-test.p/test_test_pdump.c.o app/dpdk-test.p/test_test_per_lcore.c.o
app/dpdk-test.p/test_test_pflock.c.o app/dpdk-test.p/test_test_pie.c.o
app/dpdk-test.p/test_test_pmd_af_packet.c.o
app/dpdk-test.p/test_test_pmd_memif.c.o app/dpdk-test.p/test_test_pmd_pcap.c.o
app/dpdk-test.p/test_test_pmd_perf.c.o app/dpdk-test.p/test_test_pmd_ring.c.o
app/dpdk-test.p/test_test_pmd_ring_perf.c.o
app/dpdk-test.p/test_test_pmd_tap.c.o app/dpdk-test.p/test_test_pmu.c.o
app/dpdk-test.p/test_test_power.c.o app/dpdk-test.p/test_test_power_cpufreq.c.o
app/dpdk-test.p/test_test_power_intel_uncore.c.o
app/dpdk-test.p/test_test_power_kvm_vm.c.o
app/dpdk-test.p/test_test_prefetch.c.o
app/dpdk-test.p/test_test_ptr_compress.c.o
app/dpdk-test.p/test_test_rand_perf.c.o app/dpdk-test.p/test_test_rawdev.c.o
app/dpdk-test.p/test_test_rcu_qsbr.c.o
app/dpdk-test.p/test_test_rcu_qsbr_perf.c.o
app/dpdk-test.p/test_test_reassembly.c.o
app/dpdk-test.p/test_test_reassembly_perf.c.o
app/dpdk-test.p/test_test_reciprocal_division.c.o
app/dpdk-test.p/test_test_reciprocal_division_perf.c.o
app/dpdk-test.p/test_test_red.c.o app/dpdk-test.p/test_test_reorder.c.o
app/dpdk-test.p/test_test_rib.c.o app/dpdk-test.p/test_test_rib6.c.o
app/dpdk-test.p/test_test_ring.c.o
app/dpdk-test.p/test_test_ring_hts_stress.c.o
app/dpdk-test.p/test_test_ring_mpmc_stress.c.o
app/dpdk-test.p/test_test_ring_mt_peek_stress.c.o
app/dpdk-test.p/test_test_ring_mt_peek_stress_zc.c.o
app/dpdk-test.p/test_test_ring_perf.c.o
app/dpdk-test.p/test_test_ring_rts_stress.c.o
app/dpdk-test.p/test_test_ring_st_peek_stress.c.o
app/dpdk-test.p/test_test_ring_st_peek_stress_zc.c.o
app/dpdk-test.p/test_test_ring_stress.c.o app/dpdk-test.p/test_test_rwlock.c.o
app/dpdk-test.p/test_test_sched.c.o app/dpdk-test.p/test_test_security.c.o
app/dpdk-test.p/test_test_security_inline_macsec.c.o
app/dpdk-test.p/test_test_security_inline_proto.c.o
app/dpdk-test.p/test_test_security_proto.c.o
app/dpdk-test.p/test_test_seqlock.c.o
app/dpdk-test.p/test_test_service_cores.c.o
app/dpdk-test.p/test_test_soring.c.o
app/dpdk-test.p/test_test_soring_mt_stress.c.o
app/dpdk-test.p/test_test_soring_peek_stress.c.o
app/dpdk-test.p/test_test_soring_stress.c.o
app/dpdk-test.p/test_test_spinlock.c.o app/dpdk-test.p/test_test_stack.c.o
app/dpdk-test.p/test_test_stack_perf.c.o
app/dpdk-test.p/test_test_string_fns.c.o app/dpdk-test.p/test_test_tailq.c.o
app/dpdk-test.p/test_test_telemetry_data.c.o
app/dpdk-test.p/test_test_telemetry_json.c.o
app/dpdk-test.p/test_test_thash.c.o app/dpdk-test.p/test_test_thash_perf.c.o
app/dpdk-test.p/test_test_threads.c.o app/dpdk-test.p/test_test_ticketlock.c.o
app/dpdk-test.p/test_test_timer.c.o app/dpdk-test.p/test_test_timer_perf.c.o
app/dpdk-test.p/test_test_timer_racecond.c.o
app/dpdk-test.p/test_test_timer_secondary.c.o
app/dpdk-test.p/test_test_trace.c.o app/dpdk-test.p/test_test_trace_perf.c.o
app/dpdk-test.p/test_test_trace_register.c.o app/dpdk-test.p/test_test_vdev.c.o
app/dpdk-test.p/test_test_version.c.o -Wl,--fatal-warnings -Werror -flto=auto
-Wl,--as-needed -Wl,--no-undefined -Wl,-O1 -Wl,--whole-archive
-Wl,--start-group lib/librte_node.a lib/librte_graph.a lib/librte_pipeline.a
lib/librte_table.a lib/librte_pdump.a lib/librte_port.a lib/librte_fib.a
lib/librte_pdcp.a lib/librte_ipsec.a lib/librte_vhost.a lib/librte_stack.a
lib/librte_security.a lib/librte_sched.a lib/librte_reorder.a lib/librte_rib.a
lib/librte_mldev.a lib/librte_regexdev.a lib/librte_rawdev.a lib/librte_power.a
lib/librte_pcapng.a lib/librte_member.a lib/librte_lpm.a
lib/librte_latencystats.a lib/librte_jobstats.a lib/librte_ip_frag.a
lib/librte_gso.a lib/librte_gro.a lib/librte_gpudev.a lib/librte_dispatcher.a
lib/librte_eventdev.a lib/librte_efd.a lib/librte_dmadev.a
lib/librte_distributor.a lib/librte_cryptodev.a lib/librte_compressdev.a
lib/librte_cfgfile.a lib/librte_bpf.a lib/librte_bitratestats.a
lib/librte_bbdev.a lib/librte_acl.a lib/librte_timer.a lib/librte_hash.a
lib/librte_metrics.a lib/librte_cmdline.a lib/librte_pci.a lib/librte_ethdev.a
lib/librte_meter.a lib/librte_net.a lib/librte_mbuf.a lib/librte_mempool.a
lib/librte_rcu.a lib/librte_ring.a lib/librte_eal.a lib/librte_pmu.a
lib/librte_telemetry.a lib/librte_argparse.a lib/librte_kvargs.a
lib/librte_log.a drivers/librte_common_cpt.a drivers/librte_common_dpaax.a
drivers/librte_common_ionic.a drivers/librte_common_octeontx.a
drivers/librte_bus_auxiliary.a drivers/librte_bus_cdx.a
drivers/librte_bus_dpaa.a drivers/librte_bus_fslmc.a drivers/librte_bus_ifpga.a
drivers/librte_bus_pci.a drivers/librte_bus_platform.a
drivers/librte_bus_uacce.a drivers/librte_bus_vdev.a drivers/librte_bus_vmbus.a
drivers/librte_common_cnxk.a drivers/librte_common_mlx5.a
drivers/librte_common_nfp.a drivers/librte_common_nitrox.a
drivers/librte_common_qat.a drivers/librte_common_sfc_efx.a
drivers/librte_common_sxe2.a drivers/librte_common_zsda.a
drivers/librte_mempool_bucket.a drivers/librte_mempool_cnxk.a
drivers/librte_mempool_dpaa.a drivers/librte_mempool_dpaa2.a
drivers/librte_mempool_octeontx.a drivers/librte_mempool_ring.a
drivers/librte_mempool_stack.a drivers/librte_dma_ae4dma.a
drivers/librte_dma_cnxk.a drivers/librte_dma_dpaa.a drivers/librte_dma_dpaa2.a
drivers/librte_dma_hisi_acc.a drivers/librte_dma_hisi_pciep.a
drivers/librte_dma_idxd.a drivers/librte_dma_imx_edma5.a
drivers/librte_dma_ioat.a drivers/librte_dma_odm.a
drivers/librte_dma_skeleton.a drivers/librte_net_af_packet.a
drivers/librte_net_af_xdp.a drivers/librte_net_ark.a
drivers/librte_net_atlantic.a drivers/librte_net_avp.a
drivers/librte_net_axgbe.a drivers/librte_net_bnx2x.a drivers/librte_net_bnxt.a
drivers/librte_net_bond.a drivers/librte_net_cnxk.a drivers/librte_net_cxgbe.a
drivers/librte_net_dpaa.a drivers/librte_net_dpaa2.a drivers/librte_net_ena.a
drivers/librte_net_enetc.a drivers/librte_net_enetfec.a
drivers/librte_net_enic.a drivers/librte_net_failsafe.a
drivers/librte_net_gve.a drivers/librte_net_hinic.a drivers/librte_net_hinic3.a
drivers/librte_net_hns3.a drivers/librte_net_e1000.a drivers/librte_net_fm10k.a
drivers/librte_net_i40e.a drivers/librte_net_iavf.a drivers/librte_net_ice.a
drivers/librte_net_idpf.a drivers/librte_net_ipn3ke.a
drivers/librte_net_ixgbe.a drivers/librte_net_cpfl.a drivers/librte_net_ionic.a
drivers/librte_net_mana.a drivers/librte_net_memif.a drivers/librte_net_mlx4.a
drivers/librte_net_mlx5.a drivers/librte_net_nbl.a drivers/librte_net_netvsc.a
drivers/librte_net_nfb.a drivers/librte_net_nfp.a drivers/librte_net_ngbe.a
drivers/librte_net_ntnic.a drivers/librte_net_null.a
drivers/librte_net_octeontx.a drivers/librte_net_octeon_ep.a
drivers/librte_net_pcap.a drivers/librte_net_pfe.a drivers/librte_net_qede.a
drivers/librte_net_r8169.a drivers/librte_net_ring.a drivers/librte_net_rnp.a
drivers/librte_net_sfc.a drivers/librte_net_softnic.a drivers/librte_net_sxe2.a
drivers/librte_net_tap.a drivers/librte_net_thunderx.a
drivers/librte_net_txgbe.a drivers/librte_net_vdev_netvsc.a
drivers/librte_net_vhost.a drivers/librte_net_virtio.a
drivers/librte_net_vmxnet3.a drivers/librte_net_xsc.a drivers/librte_net_zxdh.a
drivers/librte_raw_cnxk_bphy.a drivers/librte_raw_cnxk_gpio.a
drivers/librte_raw_cnxk_rvu_lf.a drivers/librte_raw_dpaa2_cmdif.a
drivers/librte_raw_gdtc.a drivers/librte_raw_ifpga.a drivers/librte_raw_ntb.a
drivers/librte_raw_skeleton.a drivers/librte_crypto_bcmfs.a
drivers/librte_crypto_caam_jr.a drivers/librte_crypto_ccp.a
drivers/librte_crypto_cnxk.a drivers/librte_crypto_dpaa_sec.a
drivers/librte_crypto_dpaa2_sec.a drivers/librte_crypto_ionic.a
drivers/librte_crypto_ipsec_mb.a drivers/librte_crypto_mlx5.a
drivers/librte_crypto_nitrox.a drivers/librte_crypto_null.a
drivers/librte_crypto_octeontx.a drivers/librte_crypto_openssl.a
drivers/librte_crypto_scheduler.a drivers/librte_crypto_virtio.a
drivers/librte_compress_isal.a drivers/librte_compress_mlx5.a
drivers/librte_compress_nitrox.a drivers/librte_compress_octeontx.a
drivers/librte_compress_zlib.a drivers/librte_regex_mlx5.a
drivers/librte_regex_cn9k.a drivers/librte_ml_cnxk.a drivers/librte_vdpa_ifc.a
drivers/librte_vdpa_mlx5.a drivers/librte_vdpa_nfp.a drivers/librte_vdpa_sfc.a
drivers/librte_event_cnxk.a drivers/librte_event_dlb2.a
drivers/librte_event_dpaa.a drivers/librte_event_dpaa2.a
drivers/librte_event_dsw.a drivers/librte_event_octeontx.a
drivers/librte_event_opdl.a drivers/librte_event_skeleton.a
drivers/librte_event_sw.a drivers/librte_baseband_acc.a
drivers/librte_baseband_fpga_5gnr_fec.a drivers/librte_baseband_fpga_lte_fec.a
drivers/librte_baseband_la12xx.a drivers/librte_baseband_null.a
drivers/librte_baseband_turbo_sw.a drivers/librte_power_acpi.a
drivers/librte_power_amd_pstate.a drivers/librte_power_amd_uncore.a
drivers/librte_power_cppc.a drivers/librte_power_intel_pstate.a
drivers/librte_power_intel_uncore.a drivers/librte_power_kvm_vm.a
-Wl,--no-whole-archive -Wl,--no-as-needed -Wl,--undefined-version -pthread -lm
-ldl -lnuma -lfdt -Wl,-rpath,XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
-Wl,--export-dynamic /usr/lib/x86_64-linux-gnu/libz.so
-Wl,-rpath,/usr/local/lib /usr/local/lib/libpcap.so
/usr/lib/x86_64-linux-gnu/libarchive.so /usr/lib/x86_64-linux-gnu/libjansson.so
/usr/lib/x86_64-linux-gnu/libelf.so /usr/lib/x86_64-linux-gnu/libbpf.so
/usr/lib/x86_64-linux-gnu/libmlx5.so /usr/lib/x86_64-linux-gnu/libibverbs.so
-lIPSec_MB /usr/lib/x86_64-linux-gnu/libcrypto.so
/usr/lib/x86_64-linux-gnu/libxdp.so /usr/lib/x86_64-linux-gnu/libmana.so
/usr/lib/x86_64-linux-gnu/libmlx4.so /usr/lib/x86_64-linux-gnu/libfdt.so -lnfb
-lrt -lIPSec_MB /usr/lib/x86_64-linux-gnu/libisal.so -le_smi64 -Wl,--end-group
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 128 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 160 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 192 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 224 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 256 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 288 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 320 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 352 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 384 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 416 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 448 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:576:3,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:154:18: note: at offset 480 into destination object
‘acquired_objs’ of size 128
  154 |         uint32_t acquired_objs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 128 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 160 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 192 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 224 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 256 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 288 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 320 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 352 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 384 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 416 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 448 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
In function ‘__rte_ring_dequeue_elems_128’,
    inlined from ‘__rte_ring_do_dequeue_elems’ at
../lib/ring/rte_ring_elem_pvt.h:273:3,
    inlined from ‘soring_acquire’ at ../lib/ring/soring.c:579:4,
    inlined from ‘rte_soring_acquirx_bulk’ at ../lib/ring/soring.c:741:9,
    inlined from ‘test_soring_stages’ at ../app/test/test_soring.c:186:14:
../lib/ring/rte_ring_elem_pvt.h:244:25: error: writing 32 bytes into a region
of size 0 [-Werror=stringop-overflow=]
  244 |                         memcpy((obj + i), (const void *)(ring + idx),
32);
      |                         ^
../app/test/test_soring.c: In function ‘test_soring_stages’:
../app/test/test_soring.c:155:18: note: at offset 480 into destination object
‘acquired_rcs’ of size 128
  155 |         uint32_t acquired_rcs[32];
      |                  ^
lto1: all warnings being treated as errors
make: *** [/tmp/ccls3Hk8.mk:120: /tmp/ccN5iSOB.ltrans59.ltrans.o] Error 1
make: *** Waiting for unfinished jobs....
lto-wrapper: fatal error: make returned 2 exit status
compilation terminated.
/usr/bin/x86_64-linux-gnu-ld.bfd: error: lto-wrapper failed
collect2: error: ld returned 1 exit status
[3942/3976] Linking target app/dpdk-testpmd


The problem is with LTO, gcc inlines rte_soring_acquirx_bulk() into
test_soring_stages(). The element copy switches on the runtime
r->esize, so the 16-byte copy path stays live and gcc reports
-Wstringop-overflow writing into the 32 x uint32_t stack arrays.
That path is never taken since the ring is created with 4 byte
elements and metadata.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to