On 1/19/24 02:05, Morten Brørup wrote:
From: Stephen Hemminger [mailto:step...@networkplumber.org]
Sent: Thursday, 18 January 2024 21.18

The sfc base code had its own definition of static assertions
using the out of bound array access hack. Replace it with a
static_assert like rte_common.h.

Fixes: f67e4719147d ("net/sfc/base: fix coding style")
Signed-off-by: Stephen Hemminger <step...@networkplumber.org>
---
  drivers/common/sfc_efx/base/efx.h | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/common/sfc_efx/base/efx.h
b/drivers/common/sfc_efx/base/efx.h
index 3312c2fa8f81..9ce266c43610 100644
--- a/drivers/common/sfc_efx/base/efx.h
+++ b/drivers/common/sfc_efx/base/efx.h
@@ -17,8 +17,8 @@
  extern "C" {
  #endif

-#define        EFX_STATIC_ASSERT(_cond)                \
-       ((void)sizeof (char[(_cond) ? 1 : -1]))
+#define        EFX_STATIC_ASSERT(_cond) \
+       do { static_assert((_cond), "assert failed" #_cond); } while (0)

This probably works for the DPDK project.

For other projects using the same file, it might also need "#include 
<assert.h>" (containing the static_assert convenience macro for C), and possibly 
your workaround for toolchain issues with missing C11 macro in FreeBSD. Maybe not in this file, 
but somewhere.

Acked-by: Morten Brørup <m...@smartsharesystems.com>


Acked-by: Andrew Rybchenko <andrew.rybche...@oktetlabs.ru>

Reply via email to