From e74c4e0938b09dad487d7b2b067bf209e32e1398 Mon Sep 17 00:00:00 2001 From: Thomas Monjalon Date: Tue, 14 Apr 2015 11:23:36 +0200 Subject: [PATCH] mk: fix build with gcc 4.4 and clang 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 Acked-by: John McNamara Acked-by: Vlad Zolotarov --- 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 ae3620274e..fbf6966980 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 40cb389ddc..245ea7eeb1 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 88f235cc99..0f51c66633 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.20.1