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

Bruce Richardson bruce.richardson at intel.com
Fri Nov 7 16:49:56 CET 2025


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



More information about the dev mailing list