From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <thomas.monjalon@6wind.com>
Received: from mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43])
 by dpdk.org (Postfix) with ESMTP id 226819A8A
 for <dev@dpdk.org>; Fri, 17 Apr 2015 00:11:30 +0200 (CEST)
Received: by wgso17 with SMTP id o17so95747121wgs.1
 for <dev@dpdk.org>; Thu, 16 Apr 2015 15:11:30 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
 :references;
 bh=HEEp3HZ0K/r5nLpiuXXdUIxyyisBxabJIgDKOWYGPV8=;
 b=MghTxpycVlVIvN5I/xCBypZIHmkwHSMCwoiffJ3b6iX8iSAC3rqaOytL5xg64oKfOC
 h9kdNTuFFNASxYxIh9Obki3LIagOWbtufVoIHQWtuOstR2nuudLywXqDOqfFY4vbBJvC
 +f6X15DglAm/H2I2U36iQYhUMUfs2gVb1RJbSgv3146GgwuJaFpQNYdYzE9SFLch6w2s
 kqD29qlL/XhpnYoG9EdXfn2HtDAdRZu0Qg9tF1amKMWabteCf99T9l7Tck0brQE46Biv
 LXTcX3rFL3J0LwFfj8Ez6aHN6gXF/eHYVkbNGJFhxGQHrDIqwxgnYSUWVSqTPbpMuC4v
 VcvQ==
X-Gm-Message-State: ALoCoQkWrD4Mfccogt5R2zE4iLQQ84aDuUWx44V3RZTVGxjpaIA9k7qLupmJazGs1hevMAo6NLt3
X-Received: by 10.194.24.35 with SMTP id r3mr63422593wjf.125.1429222290006;
 Thu, 16 Apr 2015 15:11:30 -0700 (PDT)
Received: from localhost.localdomain (136-92-190-109.dsl.ovh.fr.
 [109.190.92.136])
 by mx.google.com with ESMTPSA id jh1sm83811wid.9.2015.04.16.15.11.28
 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
 Thu, 16 Apr 2015 15:11:29 -0700 (PDT)
From: Thomas Monjalon <thomas.monjalon@6wind.com>
To: dev@dpdk.org
Date: Fri, 17 Apr 2015 00:10:36 +0200
Message-Id: <1429222237-8002-1-git-send-email-thomas.monjalon@6wind.com>
X-Mailer: git-send-email 2.2.2
In-Reply-To: <1429130956-17828-1-git-send-email-thomas.monjalon@6wind.com>
References: <1429130956-17828-1-git-send-email-thomas.monjalon@6wind.com>
Subject: [dpdk-dev] [PATCH v3 1/2] mk: fix build with gcc 4.4 and clang
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 16 Apr 2015 22:11:30 -0000

With GCC 4.4.7 from CentOS 6.5, the following errors arise:

lib/librte_pmd_ixgbe/ixgbe_rxtx.c: In function 'ixgbe_dev_rx_queue_setup':
lib/librte_pmd_ixgbe/ixgbe_rxtx.c:2509: error: missing initializer
lib/librte_pmd_ixgbe/ixgbe_rxtx.c:2509: error: (near initialization for 'dev_info.driver_name')

lib/librte_pmd_ixgbe/ixgbe_rxtx.c: In function 'ixgbe_set_rsc':
lib/librte_pmd_ixgbe/ixgbe_rxtx.c:4072: error: missing initializer
lib/librte_pmd_ixgbe/ixgbe_rxtx.c:4072: error: (near initialization for 'dev_info.driver_name')

lib/librte_pmd_ixgbe/ixgbe_rxtx.c: In function 'ixgbe_recv_pkts_lro_single_alloc':
lib/librte_pmd_ixgbe/ixgbe_rxtx.c:1479: error: 'next_rsc_entry' may be used uninitialized in this function
lib/librte_pmd_ixgbe/ixgbe_rxtx.c:1480: error: 'next_rxe' may be used uninitialized in this function

The "missing initializer" warning is a GCC bug which seems fixed in 4.7.
The same warning is thrown by clang.
The "may be used uninitialized" warning is another GCC bug which seems fixed in 4.7.

Fixes: 8eecb3295aed ("ixgbe: add LRO support")

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
---
changes in v2:
- option -Wno-missing-field-initializers for old GCC instead of code workaround
changes in v3:
- option -Wno-missing-field-initializers for clang
- option -Wno-uninitialized for old GCC instead of code workaround (=NULL)
- remove redundants -Wno-uninitialized from ixgbe Makefile

 lib/librte_pmd_ixgbe/Makefile  | 4 ----
 mk/toolchain/clang/rte.vars.mk | 3 +++
 mk/toolchain/gcc/rte.vars.mk   | 9 +++++++++
 3 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/librte_pmd_ixgbe/Makefile b/lib/librte_pmd_ixgbe/Makefile
index ae36202..fbf6966 100644
--- a/lib/librte_pmd_ixgbe/Makefile
+++ b/lib/librte_pmd_ixgbe/Makefile
@@ -76,10 +76,6 @@ ifeq ($(shell test $(GCC_VERSION) -ge 50 && echo 1), 1)
 CFLAGS_ixgbe_common.o += -Wno-logical-not-parentheses
 endif
 
-ifeq ($(shell test $(GCC_VERSION) -le 46 && echo 1), 1)
-CFLAGS_ixgbe_x550.o += -Wno-uninitialized
-CFLAGS_ixgbe_phy.o += -Wno-uninitialized
-endif
 endif
 
 #
diff --git a/mk/toolchain/clang/rte.vars.mk b/mk/toolchain/clang/rte.vars.mk
index 40cb389..245ea7e 100644
--- a/mk/toolchain/clang/rte.vars.mk
+++ b/mk/toolchain/clang/rte.vars.mk
@@ -72,5 +72,8 @@ WERROR_FLAGS += -Wundef -Wwrite-strings
 # process cpu flags
 include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
 
+# workaround clang bug with warning "missing field initializer" for "= {0}"
+WERROR_FLAGS += -Wno-missing-field-initializers
+
 export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
 export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
index 88f235c..0f51c66 100644
--- a/mk/toolchain/gcc/rte.vars.mk
+++ b/mk/toolchain/gcc/rte.vars.mk
@@ -80,5 +80,14 @@ WERROR_FLAGS += -Wundef -Wwrite-strings
 # process cpu flags
 include $(RTE_SDK)/mk/toolchain/$(RTE_TOOLCHAIN)/rte.toolchain-compat.mk
 
+# workaround GCC bug with warning "missing initializer" for "= {0}"
+ifeq ($(shell test $(GCC_VERSION) -lt 47 && echo 1), 1)
+WERROR_FLAGS += -Wno-missing-field-initializers
+endif
+# workaround GCC bug with warning "may be used uninitialized"
+ifeq ($(shell test $(GCC_VERSION) -lt 47 && echo 1), 1)
+WERROR_FLAGS += -Wno-uninitialized
+endif
+
 export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
 export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
-- 
2.2.2