On Mon, Jun 30, 2025 at 4:27 PM Bruce Richardson <bruce.richard...@intel.com> wrote: > > C++ does not allow zero-sized unions - they end up being of size 1-byte, > which leads to C/C++ compatibility issues, flagged by the compiler. > > lib/node/rte_node_mbuf_dynfield.h:78:2: error: union has size 0 in C, > size 1 in C++ [-Werror,-Wextern-c-compat] > 78 | union { > | ^ > 1 error generated. > > Fix the error by omitting the persistent_data field when it is > zero-sized, since it's unusable. Any app using the field must already > specify a size for the persistent data. > > Fixes: 746e8736da70 ("node: add global mbuf dynfield") > > Signed-off-by: Bruce Richardson <bruce.richard...@intel.com> > --- > lib/node/rte_node_mbuf_dynfield.h | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/lib/node/rte_node_mbuf_dynfield.h > b/lib/node/rte_node_mbuf_dynfield.h > index b77fdbb94f..09254c585a 100644 > --- a/lib/node/rte_node_mbuf_dynfield.h > +++ b/lib/node/rte_node_mbuf_dynfield.h > @@ -69,6 +69,7 @@ typedef struct rte_node_mbuf_overload_fields { > * 2. Overloadable fields: Fields which can be repurposed by two adjacent > nodes. > */ > typedef struct rte_node_mbuf_dynfield { > +#if RTE_NODE_MBUF_PERSISTENT_FIELDS_SIZE > 0 > /** > * Persistent mbuf region across nodes in graph walk > * > @@ -78,6 +79,7 @@ typedef struct rte_node_mbuf_dynfield { > union { > uint8_t persistent_data[RTE_NODE_MBUF_PERSISTENT_FIELDS_SIZE]; > }; > +#endif > /** > * Overloadable mbuf fields across graph walk. Fields which can > change. > * > -- > 2.48.1 >
Acked-by: Nitin Saxena <nsax...@marvell.com>