[dpdk-dev] ixgbe: fix build with gcc 5

Message ID a90ae275e7fc4bac15fcef89119accdf1821b552.1424341431.git.pmatilai@redhat.com (mailing list archive)
State Changes Requested, archived
Headers

Commit Message

Panu Matilainen Feb. 19, 2015, 10:25 a.m. UTC
  Add extra parenthesis to remove ambiguity on what we want to compare,
otherwise gcc 5 issues a "logical not is only applied to the left hand
side of comparison" warning which with -Werror fails the build.

Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
---
 lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Ananyev, Konstantin Feb. 19, 2015, 12:02 p.m. UTC | #1
Hi Panu,

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Panu Matilainen
> Sent: Thursday, February 19, 2015 10:25 AM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH] ixgbe: fix build with gcc 5
> 
> Add extra parenthesis to remove ambiguity on what we want to compare,
> otherwise gcc 5 issues a "logical not is only applied to the left hand
> side of comparison" warning which with -Werror fails the build.
> 
> Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
> ---
>  lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
> index 37e5bae..93a6a00 100644
> --- a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
> +++ b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
> @@ -2898,8 +2898,8 @@ STATIC s32 ixgbe_fc_autoneg_fiber(struct ixgbe_hw *hw)
>  	 */
> 
>  	linkstat = IXGBE_READ_REG(hw, IXGBE_PCS1GLSTA);
> -	if ((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE) == 0) ||
> -	    (!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT) == 1)) {
> +	if (((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE)) == 0) ||
> +	    ((!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT)) == 1)) {
>  		ERROR_REPORT1(IXGBE_ERROR_POLLING,
>  			     "Auto-Negotiation did not complete or timed out");
>  		goto out;

Unfortunately we are not supposed to change files under ixgbe subfirectory (except ixgbe_osdep.*).
Usually we deal with it just by:
If GCC_VERSION...
CFLAGS_ixgbe_common.o += -Wno...

You can have a look at lib/librte_pmd_ixgbe/Makefile, there are plenty of such things.
Konstantin


> --
> 2.1.0
  
Panu Matilainen Feb. 19, 2015, 12:37 p.m. UTC | #2
On 02/19/2015 02:02 PM, Ananyev, Konstantin wrote:
> Hi Panu,
>
>> -----Original Message-----
>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Panu Matilainen
>> Sent: Thursday, February 19, 2015 10:25 AM
>> To: dev@dpdk.org
>> Subject: [dpdk-dev] [PATCH] ixgbe: fix build with gcc 5
>>
>> Add extra parenthesis to remove ambiguity on what we want to compare,
>> otherwise gcc 5 issues a "logical not is only applied to the left hand
>> side of comparison" warning which with -Werror fails the build.
>>
>> Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
>> ---
>>   lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
>> index 37e5bae..93a6a00 100644
>> --- a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
>> +++ b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
>> @@ -2898,8 +2898,8 @@ STATIC s32 ixgbe_fc_autoneg_fiber(struct ixgbe_hw *hw)
>>   	 */
>>
>>   	linkstat = IXGBE_READ_REG(hw, IXGBE_PCS1GLSTA);
>> -	if ((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE) == 0) ||
>> -	    (!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT) == 1)) {
>> +	if (((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE)) == 0) ||
>> +	    ((!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT)) == 1)) {
>>   		ERROR_REPORT1(IXGBE_ERROR_POLLING,
>>   			     "Auto-Negotiation did not complete or timed out");
>>   		goto out;
>
> Unfortunately we are not supposed to change files under ixgbe subfirectory (except ixgbe_osdep.*).

Oh, sorry about that, I didn't realize there were untouchable files in 
the repo. Its not a very common setup :)

> Usually we deal with it just by:
> If GCC_VERSION...
> CFLAGS_ixgbe_common.o += -Wno...
>
> You can have a look at lib/librte_pmd_ixgbe/Makefile, there are plenty of such things.

Yup, noticed that but assumed the warning disablers were mainly for 
things that are not trivial to fix.

This one can be worked around just as easily with 
-Wlogical-not-parentheses, but since this flag is new to gcc 5 it can't 
really be added until gcc 5 is recognized as a supported version by the 
makefiles:
http://dpdk.org/dev/patchwork/patch/3452/

I'll send an updated version using warning disabler once other gcc-5 
support goes in.

	- Panu -
  
Neil Horman Feb. 19, 2015, 1:07 p.m. UTC | #3
On Thu, Feb 19, 2015 at 12:02:06PM +0000, Ananyev, Konstantin wrote:
> Hi Panu,
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Panu Matilainen
> > Sent: Thursday, February 19, 2015 10:25 AM
> > To: dev@dpdk.org
> > Subject: [dpdk-dev] [PATCH] ixgbe: fix build with gcc 5
> > 
> > Add extra parenthesis to remove ambiguity on what we want to compare,
> > otherwise gcc 5 issues a "logical not is only applied to the left hand
> > side of comparison" warning which with -Werror fails the build.
> > 
> > Signed-off-by: Panu Matilainen <pmatilai@redhat.com>
> > ---
> >  lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
> > index 37e5bae..93a6a00 100644
> > --- a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
> > +++ b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
> > @@ -2898,8 +2898,8 @@ STATIC s32 ixgbe_fc_autoneg_fiber(struct ixgbe_hw *hw)
> >  	 */
> > 
> >  	linkstat = IXGBE_READ_REG(hw, IXGBE_PCS1GLSTA);
> > -	if ((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE) == 0) ||
> > -	    (!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT) == 1)) {
> > +	if (((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE)) == 0) ||
> > +	    ((!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT)) == 1)) {
> >  		ERROR_REPORT1(IXGBE_ERROR_POLLING,
> >  			     "Auto-Negotiation did not complete or timed out");
> >  		goto out;
> 
> Unfortunately we are not supposed to change files under ixgbe subfirectory (except ixgbe_osdep.*).
> Usually we deal with it just by:
> If GCC_VERSION...
> CFLAGS_ixgbe_common.o += -Wno...
> 
Why don't you just send a patch to the netdev list to fix ixgbe in the linux
tree, and then apply the same patch once it gets accepted.  Then the merge will
go smoothly when it comes down.  That would be much better than doing GCC
version ifdeffery.

Neil

> You can have a look at lib/librte_pmd_ixgbe/Makefile, there are plenty of such things.
> Konstantin
> 
> 
> > --
> > 2.1.0
> 
>
  

Patch

diff --git a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
index 37e5bae..93a6a00 100644
--- a/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
+++ b/lib/librte_pmd_ixgbe/ixgbe/ixgbe_common.c
@@ -2898,8 +2898,8 @@  STATIC s32 ixgbe_fc_autoneg_fiber(struct ixgbe_hw *hw)
 	 */
 
 	linkstat = IXGBE_READ_REG(hw, IXGBE_PCS1GLSTA);
-	if ((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE) == 0) ||
-	    (!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT) == 1)) {
+	if (((!!(linkstat & IXGBE_PCS1GLSTA_AN_COMPLETE)) == 0) ||
+	    ((!!(linkstat & IXGBE_PCS1GLSTA_AN_TIMED_OUT)) == 1)) {
 		ERROR_REPORT1(IXGBE_ERROR_POLLING,
 			     "Auto-Negotiation did not complete or timed out");
 		goto out;