All of lore.kernel.org
 help / color / mirror / Atom feed
* [DPDK/core Bug 2101] soring: stringop warnings on LTO build
@ 2026-11-10  1:10 bugzilla
  0 siblings, 0 replies; only message in thread
From: bugzilla @ 2026-11-10  1:10 UTC (permalink / raw)
  To: dev

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: dev@dpdk.org
          Reporter: stephen@networkplumber.org
  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.

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-11-10  1:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-10  1:10 [DPDK/core Bug 2101] soring: stringop warnings on LTO build bugzilla

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.