Re: [RFC PATCH v2 00/33] build DPDK with -Wshadow

Bruce Richardson
2025-11-07T16:13:56Z

On Fri, Nov 07, 2025 at 08:02:50AM -0800, Stephen Hemminger wrote:
> On Fri, 7 Nov 2025 15:49:56 +0000
> Bruce Richardson <bruce.richardson@intel.com> wrote:
>
> > As flagged in bugs #1742, #1743 and others, much of DPDK fails to build
> > when -Wshadow flag is passed to the build. This patchset fixes many issues
> > of this nature, but not all, in the hopes we can move towards enabling that
> > warning flag for all components for DPDK in future. This patchset fixes the
> > following components in DPDK:
> >
> > * all libraries
> > * Intel net drivers
> > * all apps in the "app" folder
> >
> > For the rest of the drivers and example applications, any component which
> > does not build successfully with the shadow warning enabled has it
> > explicitly disabled via cflags. Then the last patch adds -Wshadow to the
> > global DPDK build, which should prevent any regressions in components which
> > are already working.
> >
> > At that point, we should not have any regressions and we can, over time,
> > reduce the number of components needing the -Wno-shadow flag.
> >
> > RFC v2:
> > * take patch from Stephen for RTE_MIN/MAX fixes
> > * add additional fixes to clear clang warnings - it's a lot stricter than
> > gcc in this regard, and flags more issues.
> > * extend app cleanup to all apps, not just testpmd
> > * add per-component disabling, and add global enable flag at the end.
> >
> >
> > Bruce Richardson (32):
> > eal: fix variable shadowing
> > ethdev: fix variable shadowing issues
> > eventdev: fix variable shadowing issues
> > net: remove shadowed variable
> > pipeline: fix variable shadowing
> > table: fix issues with variable shadowing
> > power: rename variable to eliminate shadowing
> > pcapng: rename variable to fix shadowing
> > telemetry: make socket handler typedef private
> > bbdev: fix variable shadowing
> > bus/pci: remove shadowed variables
> > net/intel: rename function param to avoid shadow warnings
> > net/e1000: fix build with shadow warnings enabled
> > net/i40e: fix build with shadow warnings enabled
> > net/ice: fix build with shadow warnings enabled
> > net/cpfl: fix build with shadow warnings enabled
> > net/ixgbe: fix build with shadow warnings enabled
> > app/test-pmd: fix build with shadow warnings enabled
> > app/graph: fix build with shadow warnings enabled
> > app/pdump: fix warning about shadowed variable
> > app/test-bbdev: use RTE_MAX3 to remove variable shadowing
> > app/test-compress-perf: fix variable shadowing
> > app/test-crypto-perf: fix shadowed variable
> > app/test-dma-perf: renamed shadowed variable
> > app/test-eventdev: fix build with shadow warnings enabled
> > app/test-flow-perf: remove unneeded variable
> > app/test-security-perf: fix build with shadow warnings
> > app/test-pipeline: remove unnecessary variable
> > drivers: disable variable shadowing warnings for drivers
> > app/test: disable shadowing warnings for unit tests
> > examples: ignore variable shadowing warnings
> > build: enable shadowed variable warnings
> >
> > Stephen Hemminger (1):
> > eal: add more min/max helpers
> >
> > app/graph/conn.c | 134 +++++++++---------
> > app/pdump/main.c | 12 +-
> > app/test-bbdev/test_bbdev_perf.c | 7 +-
> > app/test-compress-perf/main.c | 122 ++++++++--------
> > .../cperf_test_pmd_cyclecount.c | 6 +-
> > app/test-dma-perf/main.c | 8 +-
> > app/test-eventdev/evt_main.c | 6 +-
> > app/test-eventdev/test_atomic_queue.c | 6 +-
> > app/test-eventdev/test_perf_common.c | 4 +-
> > app/test-flow-perf/main.c | 1 -
> > app/test-pipeline/main.c | 1 -
> > app/test-pmd/cmdline_flow.c | 42 +++---
> > app/test-pmd/config.c | 15 +-
> > app/test-pmd/parameters.c | 38 +++--
> > app/test-pmd/testpmd.c | 2 +-
> > app/test-security-perf/test_security_perf.c | 42 +++---
> > app/test/meson.build | 1 +
> > app/test/test_cryptodev_security_ipsec.c | 13 +-
> > config/meson.build | 6 +
> > drivers/baseband/fpga_5gnr_fec/meson.build | 2 +
> > drivers/bus/fslmc/meson.build | 2 +
> > drivers/bus/pci/linux/pci.c | 1 -
> > drivers/bus/pci/linux/pci_vfio.c | 2 +-
> > drivers/bus/pci/windows/pci.c | 1 -
> > drivers/common/cnxk/meson.build | 1 +
> > drivers/common/qat/meson.build | 1 +
> > drivers/compress/nitrox/meson.build | 2 +
> > drivers/crypto/cnxk/meson.build | 1 +
> > drivers/crypto/octeontx/meson.build | 1 +
> > drivers/crypto/openssl/meson.build | 1 +
> > drivers/crypto/scheduler/meson.build | 1 +
> > drivers/dma/dpaa2/meson.build | 2 +
> > drivers/event/cnxk/meson.build | 1 +
> > drivers/event/dlb2/meson.build | 2 +
> > drivers/event/sw/meson.build | 1 +
> > drivers/net/axgbe/meson.build | 2 +-
> > drivers/net/bnxt/meson.build | 1 +
> > drivers/net/bonding/meson.build | 1 +
> > drivers/net/cnxk/meson.build | 1 +
> > drivers/net/cxgbe/meson.build | 1 +
> > drivers/net/dpaa/meson.build | 1 +
> > drivers/net/dpaa2/meson.build | 1 +
> > drivers/net/ena/meson.build | 2 +
> > drivers/net/enetfec/meson.build | 2 +
> > drivers/net/enic/meson.build | 2 +
> > drivers/net/failsafe/meson.build | 1 +
> > drivers/net/intel/common/rx.h | 6 +-
> > drivers/net/intel/cpfl/cpfl_flow_engine_fxp.c | 2 -
> > drivers/net/intel/cpfl/cpfl_flow_parser.c | 6 +-
> > drivers/net/intel/cpfl/cpfl_fxp_rule.h | 2 -
> > drivers/net/intel/cpfl/cpfl_representor.h | 2 +-
> > drivers/net/intel/e1000/igc_ethdev.c | 6 +-
> > drivers/net/intel/i40e/i40e_ethdev.h | 10 +-
> > drivers/net/intel/ice/ice_ethdev.c | 6 +-
> > drivers/net/intel/ixgbe/ixgbe_fdir.c | 7 +-
> > drivers/net/mlx5/meson.build | 1 +
> > drivers/net/ntnic/meson.build | 3 +
> > drivers/net/pfe/meson.build | 3 +
> > drivers/net/qede/meson.build | 3 +
> > drivers/net/txgbe/meson.build | 1 +
> > drivers/net/zxdh/meson.build | 3 +
> > drivers/raw/ifpga/meson.build | 2 +
> > drivers/vdpa/mlx5/meson.build | 1 +
> > examples/bbdev_app/meson.build | 1 +
> > examples/bond/meson.build | 1 +
> > examples/dma/meson.build | 1 +
> > examples/ethtool/meson.build | 1 +
> > examples/eventdev_pipeline/meson.build | 1 +
> > examples/flow_filtering/meson.build | 1 +
> > examples/ip_pipeline/meson.build | 1 +
> > examples/ipsec-secgw/meson.build | 1 +
> > examples/l2fwd-crypto/meson.build | 1 +
> > examples/l2fwd-event/meson.build | 1 +
> > examples/l2fwd-jobstats/meson.build | 1 +
> > examples/l2fwd-keepalive/meson.build | 1 +
> > examples/l3fwd-graph/meson.build | 1 +
> > examples/l3fwd-power/meson.build | 1 +
> > examples/l3fwd/meson.build | 1 +
> > .../client_server_mp/mp_server/meson.build | 1 +
> > examples/packet_ordering/meson.build | 1 +
> > examples/ptpclient/meson.build | 1 +
> > examples/qos_sched/meson.build | 1 +
> > .../server_node_efd/efd_server/meson.build | 1 +
> > examples/vhost/meson.build | 1 +
> > .../vm_power_manager/guest_cli/meson.build | 1 +
> > examples/vm_power_manager/meson.build | 1 +
> > examples/vmdq/meson.build | 1 +
> > lib/bbdev/rte_bbdev.c | 2 +-
> > lib/eal/common/eal_common_options.c | 22 +--
> > lib/eal/common/eal_common_trace.c | 89 ++++++------
> > lib/eal/common/malloc_heap.c | 2 +-
> > lib/eal/include/rte_common.h | 31 +++-
> > lib/ethdev/ethdev_driver.c | 6 +-
> > lib/ethdev/rte_ethdev.c | 1 -
> > lib/eventdev/rte_event_eth_rx_adapter.c | 5 +-
> > lib/eventdev/rte_event_eth_tx_adapter.c | 8 +-
> > lib/net/net_crc_avx512.c | 4 +-
> > lib/pcapng/rte_pcapng.c | 7 +-
> > lib/pipeline/rte_swx_ctl.c | 11 +-
> > lib/pipeline/rte_swx_pipeline.c | 21 ++-
> > lib/pipeline/rte_swx_pipeline_internal.h | 10 +-
> > lib/power/rte_power_pmd_mgmt.c | 6 +-
> > lib/table/rte_lru.h | 38 ++---
> > lib/table/rte_lru_arm64.h | 14 +-
> > lib/table/rte_lru_x86.h | 4 +-
> > lib/table/rte_swx_table_em.c | 2 -
> > lib/table/rte_swx_table_learner.c | 4 +-
> > lib/table/rte_table_hash_key16.c | 4 +-
> > lib/table/rte_table_hash_key32.c | 4 +-
> > lib/table/rte_table_hash_key8.c | 4 +-
> > lib/telemetry/rte_telemetry.h | 11 --
> > lib/telemetry/telemetry.c | 2 +-
> > lib/telemetry/telemetry_internal.h | 11 ++
> > 113 files changed, 489 insertions(+), 425 deletions(-)
> >
> > --
> > 2.48.1
> >
>
> Thanks we may want to wait this series until 26.03 release
> Series-Acked-by: Stephen Hemminger <stephen@networkplumber.org>

Yes, absolutely, which is why it's still down as an RFC. I've also already
marked it as deferred in patchwork.

However, I also wanted to get it out early so that it can be considered for
early merge in 26.03 to avoid later problems with new shadowing issues being
introduced in 26.03, and also to get build checks from the CI, since I
can't test the build of every single driver on my system (thankfully there
are only about a half a dozen which I can't build).

/Bruce