examples: compilation fix for GCC-12

Message ID 20220901082343.3074804-1-amitprakashs@marvell.com (mailing list archive)
State Superseded, archived
Delegated to: Thomas Monjalon
Headers
Series examples: compilation fix for GCC-12 |

Checks

Context Check Description
ci/checkpatch warning coding style issues
ci/Intel-compilation success Compilation OK
ci/github-robot: build success github build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/intel-Testing success Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS

Commit Message

Amit Prakash Shukla Sept. 1, 2022, 8:23 a.m. UTC
  GCC-12 warns when a pointer of type union points to an array of same
defined size, as union internally gets paded with pad bytes.

../examples/common/neon/port_group.h:42:21: error: array subscript
	'union <anonymous>[0]' is partly outside array bounds of
	'uint16_t[5]' {aka 'short unsigned int[5]'}
	[-Werror=array-bounds]
   42 |                 pnum->u64 = gptbl[v].pnum;
      |                     ^~
../examples/common/neon/port_group.h:21:23: note: object 'pn' of
	size [0, 10]
   21 | port_groupx4(uint16_t pn[FWDSTEP + 1], uint16_t *lp, uint16x8_t dp1
      |              ~~~~~~~~~^~~~~~~~~~~~~~~
../examples/common/neon/port_group.h:43:21: error: array subscript
	'union <anonymous>[0]' is partly outside array bounds of
	'uint16_t[5]' {aka 'short unsigned int[5]'} [-Werror=array-bounds]
   43 |                 pnum->u16[FWDSTEP] = 1;
      |                     ^~

Fixes: bdfc3816fbfc ("examples: common packet group functionality")
Cc: stable@dpdk.org

Signed-off-by: Amit Prakash Shukla <amitprakashs@marvell.com>
---
 examples/common/neon/port_group.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Stephen Hemminger Sept. 1, 2022, 3:24 p.m. UTC | #1
On Thu, 1 Sep 2022 13:53:43 +0530
Amit Prakash Shukla <amitprakashs@marvell.com> wrote:

> diff --git a/examples/common/neon/port_group.h b/examples/common/neon/port_group.h
> index 82c6ed6d73..97da604583 100644
> --- a/examples/common/neon/port_group.h
> +++ b/examples/common/neon/port_group.h
> @@ -24,7 +24,7 @@ port_groupx4(uint16_t pn[FWDSTEP + 1], uint16_t *lp, uint16x8_t dp1,
>  	union {
>  		uint16_t u16[FWDSTEP + 1];
>  		uint64_t u64;
> -	} *pnum = (void *)pn;
> +	} __attribute__((__packed__)) *pnum = (void *)pn;

Use __rte_packed instead of direct attribute
  
Amit Prakash Shukla Sept. 2, 2022, 7:19 a.m. UTC | #2
Thanks Stephen for feedback. I will make the change in v2.

> -----Original Message-----
> From: Stephen Hemminger <stephen@networkplumber.org>
> Sent: Thursday, September 1, 2022 8:54 PM
> To: Amit Prakash Shukla <amitprakashs@marvell.com>
> Cc: Ruifeng Wang <ruifeng.wang@arm.com>; dev@dpdk.org; Jerin Jacob
> Kollanukkaran <jerinj@marvell.com>; stable@dpdk.org; Akhil Goyal
> <gakhil@marvell.com>
> Subject: [EXT] Re: [PATCH] examples: compilation fix for GCC-12
> 
> External Email
> 
> ----------------------------------------------------------------------
> On Thu, 1 Sep 2022 13:53:43 +0530
> Amit Prakash Shukla <amitprakashs@marvell.com> wrote:
> 
> > diff --git a/examples/common/neon/port_group.h
> b/examples/common/neon/port_group.h
> > index 82c6ed6d73..97da604583 100644
> > --- a/examples/common/neon/port_group.h
> > +++ b/examples/common/neon/port_group.h
> > @@ -24,7 +24,7 @@ port_groupx4(uint16_t pn[FWDSTEP + 1], uint16_t *lp,
> uint16x8_t dp1,
> >  	union {
> >  		uint16_t u16[FWDSTEP + 1];
> >  		uint64_t u64;
> > -	} *pnum = (void *)pn;
> > +	} __attribute__((__packed__)) *pnum = (void *)pn;
> 
> Use __rte_packed instead of direct attribute
  

Patch

diff --git a/examples/common/neon/port_group.h b/examples/common/neon/port_group.h
index 82c6ed6d73..97da604583 100644
--- a/examples/common/neon/port_group.h
+++ b/examples/common/neon/port_group.h
@@ -24,7 +24,7 @@  port_groupx4(uint16_t pn[FWDSTEP + 1], uint16_t *lp, uint16x8_t dp1,
 	union {
 		uint16_t u16[FWDSTEP + 1];
 		uint64_t u64;
-	} *pnum = (void *)pn;
+	} __attribute__((__packed__)) *pnum = (void *)pn;
 
 	uint16x8_t mask = {1, 2, 4, 8, 0, 0, 0, 0};
 	int32_t v;