This series fixes all warnings produced by GCC when building DPDK with
Link Time Optimization (LTO) enabled. LTO performs aggressive cross-
compilation-unit inlining and interprocedural analysis, which exposes
issues that are not visible during normal compilation.

The problems were diagnosed using AI but the fixes all look
very reasonable and consistent with other code.

The fixes fall into three categories:

1. Buffer sizing for static analysis (patches 1, 6)

   When LTO inlines functions across compilation units, GCC's static
   analyzer gains visibility into buffer sizes and all code paths.
   This causes warnings when the analyzer cannot prove that runtime-
   selected code paths stay within buffer bounds. The fixes provide
   either larger buffers or explicit bounds checks to satisfy the
   analyzer.

2. Variable Length Array (VLA) elimination (patches 2, 3, 4)

   VLAs cause -Wvla-larger-than warnings with LTO because the compiler
   cannot determine array bounds at compile time. These patches replace
   VLAs with fixed-size arrays using existing defines, then remove the
   warning suppression flag that was masking the issue.

3. Genuine bug fix (patch 5)

   The LTO analysis uncovered an actual buffer overflow bug where a
   1-byte allocation was being used for an 808-byte structure. This
   is a real memory corruption issue, not just a false positive.

The patches have been tested with GCC 14 using -flto=auto and produce
a clean build with no warnings.

v3 - add all the other stuff necessary to fix all the LTO warnings

Stephen Hemminger (6):
  test/soring: fix buffer overflow warnings with LTO
  common/cnxk: replace variable length state array
  common/cnxk: replace variable length array
  common/cnxk: re-enable vla warnings
  common/cnxk: fix buffer overflow in reassembly SA setup
  net/mlx5/hws: fix LTO false positive stringop-overflow warning

 app/test/test_soring.c               | 29 +++++++++++++++++++++-------
 drivers/common/cnxk/meson.build      |  2 --
 drivers/common/cnxk/roc_aes.c        |  3 ++-
 drivers/common/cnxk/roc_nix_inl.c    |  2 +-
 drivers/common/cnxk/roc_platform.c   |  4 ++--
 drivers/net/mlx5/hws/mlx5dr_action.c | 14 ++++++++++++++
 6 files changed, 41 insertions(+), 13 deletions(-)

-- 
2.51.0

Reply via email to