DPDK patches and discussions
 help / color / mirror / Atom feed
* [RFC] eal: use _Static_assert() for RTE_BUILD_BUG_ON
@ 2023-11-11 17:21 Stephen Hemminger
  2023-11-11 17:52 ` Morten Brørup
                   ` (6 more replies)
  0 siblings, 7 replies; 83+ messages in thread
From: Stephen Hemminger @ 2023-11-11 17:21 UTC (permalink / raw)
  To: dev; +Cc: Stephen Hemminger

The method of doing sizeof a bad array element was an interesting
hack but it has a couple of problems. First, it won't work if
VLA checking is enabled. It doesn't enforce that the expression
is constant.

Replace that with the _Static_assert builtin available in
Gcc, Clang, and MSVC.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 lib/eal/include/rte_common.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lib/eal/include/rte_common.h b/lib/eal/include/rte_common.h
index c1ba32d00e47..2c63206223b8 100644
--- a/lib/eal/include/rte_common.h
+++ b/lib/eal/include/rte_common.h
@@ -495,7 +495,7 @@ rte_is_aligned(const void * const __rte_restrict ptr, const unsigned int align)
 /**
  * Triggers an error at compilation time if the condition is true.
  */
-#define RTE_BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
+#define RTE_BUILD_BUG_ON(e) _Static_assert(!(e),  #e)
 
 /*********** Cache line related macros ********/
 
-- 
2.39.2


^ permalink raw reply	[flat|nested] 83+ messages in thread

end of thread, other threads:[~2024-02-16 20:30 UTC | newest]

Thread overview: 83+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-11 17:21 [RFC] eal: use _Static_assert() for RTE_BUILD_BUG_ON Stephen Hemminger
2023-11-11 17:52 ` Morten Brørup
2023-11-13 16:30   ` Tyler Retzlaff
2023-11-13 16:28 ` Tyler Retzlaff
2023-11-13 17:06 ` [PATCH v2 0/3] use static_assertion for build errors Stephen Hemminger
2023-11-13 17:06   ` [PATCH v2 1/3] event/opdl: fix non-constant compile time assertion Stephen Hemminger
2023-11-13 17:10     ` Bruce Richardson
2023-11-13 17:54     ` Tyler Retzlaff
2023-11-13 17:06   ` [PATCH v2 2/3] net/sfc: fix non-constant expression inr RTE_BUILD_BUG_ON() Stephen Hemminger
2023-11-13 17:55     ` Tyler Retzlaff
2023-11-13 22:13     ` Stephen Hemminger
2023-11-13 22:28       ` Tyler Retzlaff
2023-11-14  0:00         ` Stephen Hemminger
2023-11-14  0:16         ` Stephen Hemminger
2023-11-14  0:22           ` Stephen Hemminger
2023-11-14  5:50             ` Morten Brørup
2023-11-13 17:06   ` [PATCH v2 3/3] eal: replace out of bounds VLA with static_assert Stephen Hemminger
2023-11-13 17:12     ` Bruce Richardson
2023-11-13 17:57       ` Tyler Retzlaff
2024-02-16  0:33     ` Tyler Retzlaff
2024-02-16  7:48       ` Morten Brørup
2024-02-16  8:02       ` David Marchand
2024-02-16 20:30         ` Tyler Retzlaff
2023-11-13 18:13   ` [PATCH v2 0/3] use static_assertion for build errors Ferruh Yigit
2023-11-13 18:28     ` Morten Brørup
2023-11-13 18:57     ` Tyler Retzlaff
2023-11-17 16:18 ` [PATCH v3 00/10] replace uses of zero length array Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 01/10] member: replace zero length array with flex array Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 02/10] cryptodev: " Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 03/10] security: " Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 04/10] pipeline: " Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 05/10] net/nfp: " Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 06/10] net/enic: " Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 07/10] net/mlx5: " Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 08/10] pdcp: " Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 09/10] net/cpfl: " Stephen Hemminger
2023-11-17 16:18   ` [PATCH v3 10/10] common/dpaxx: remove zero length array Stephen Hemminger
2024-01-16 18:41 ` [PATCH v3 0/5] use static_assert to catch build errors Stephen Hemminger
2024-01-16 18:41   ` [PATCH v3 1/5] event/opdl: fix non-constant compile time assertion Stephen Hemminger
2024-01-17  7:58     ` Andrew Rybchenko
2024-01-17  9:26       ` Bruce Richardson
2024-01-17  9:57         ` Morten Brørup
2024-01-16 18:41   ` [PATCH v3 2/5] net/sfc: fix non-constant expression in RTE_BUILD_BUG_ON() Stephen Hemminger
2024-01-17  7:57     ` Andrew Rybchenko
2024-01-16 18:41   ` [PATCH v3 3/5] net/i40e: avoid using const variable in assertion Stephen Hemminger
2024-01-16 18:41   ` [PATCH v3 4/5] mempool: avoid floating point expression in static assertion Stephen Hemminger
2024-01-17  8:06     ` Andrew Rybchenko
2024-01-16 18:41   ` [PATCH v3 5/5] eal: replace out of bounds VLA with static_assert Stephen Hemminger
2024-01-17  7:52     ` Andrew Rybchenko
2024-01-17 17:12       ` Stephen Hemminger
2024-01-17  7:53     ` Mattias Rönnblom
2024-01-17 17:11       ` Stephen Hemminger
2024-01-17 18:19 ` [PATCH v4 0/6] use static assert to cathc build errors Stephen Hemminger
2024-01-17 18:19   ` [PATCH v4 1/6] eal: introduce RTE_MIN_T() and RTE_MAX_T() macros Stephen Hemminger
2024-01-18  9:35     ` Konstantin Ananyev
2024-01-18  9:44     ` Andrew Rybchenko
2024-01-19 20:58     ` Tyler Retzlaff
2024-01-19 22:39       ` Stephen Hemminger
2024-01-17 18:19   ` [PATCH v4 2/6] event/opdl: fix non-constant compile time assertion Stephen Hemminger
2024-01-18  9:43     ` Andrew Rybchenko
2024-01-17 18:19   ` [PATCH v4 3/6] net/sfc: fix non-constant expression in RTE_BUILD_BUG_ON() Stephen Hemminger
2024-01-18  9:40     ` Andrew Rybchenko
2024-01-17 18:19   ` [PATCH v4 4/6] net/i40e: avoid using const variable in assertion Stephen Hemminger
2024-01-18  8:57     ` Bruce Richardson
2024-01-18  9:34     ` Konstantin Ananyev
2024-01-17 18:19   ` [PATCH v4 5/6] mempool: avoid floating point expression in static assertion Stephen Hemminger
2024-01-17 18:32     ` Morten Brørup
2024-01-18  9:41       ` Andrew Rybchenko
2024-01-18  9:32     ` Konstantin Ananyev
2024-01-17 18:20   ` [PATCH v4 6/6] eal: replace out of bounds VLA with static_assert Stephen Hemminger
2024-01-18 16:50 ` [PATCH v5 0/6] use static_assert for build error reports Stephen Hemminger
2024-01-18 16:50   ` [PATCH v5 1/6] eal: introduce RTE_MIN_T() and RTE_MAX_T() macros Stephen Hemminger
2024-01-19  1:30     ` fengchengwen
2024-01-18 16:50   ` [PATCH v5 2/6] event/opdl: fix non-constant compile time assertion Stephen Hemminger
2024-01-18 16:50   ` [PATCH v5 3/6] net/sfc: fix non-constant expression in RTE_BUILD_BUG_ON() Stephen Hemminger
2024-01-18 16:50   ` [PATCH v5 4/6] net/i40e: avoid using const variable in assertion Stephen Hemminger
2024-01-18 16:51   ` [PATCH v5 5/6] mempool: avoid floating point expression in static assertion Stephen Hemminger
2024-01-18 18:46     ` Morten Brørup
2024-01-19 10:07     ` Slava Ovsiienko
2024-01-18 16:51   ` [PATCH v5 6/6] eal: replace out of bounds VLA with static_assert Stephen Hemminger
2024-01-18 18:42     ` Morten Brørup
2024-01-19 13:10       ` Ferruh Yigit
2024-02-16  9:14   ` [PATCH v5 0/6] use static_assert for build error reports David Marchand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).