summaryrefslogtreecommitdiffstats
path: root/recipes-extended/dpdk/dpdk/0001-fix-build-with-gcc-7.1.patch
blob: 399510aabe79ccdfc9faa85a6dfdecc7c57faccd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
From 03ee26cd708971a51f056e3f53482367aa38fcb1 Mon Sep 17 00:00:00 2001
From: Chunrong Guo <chunrong.guo@nxp.com>
Date: Wed, 12 Jul 2017 12:03:38 +0800
Subject: [PATCH] fix build with gcc 7.1

Signed-off-by: Chunrong Guo <chunrong.guo@nxp.com>
---
 lib/librte_cmdline/cmdline_parse_num.c        |  4 ++--
 lib/librte_eal/linuxapp/kni/ethtool/igb/igb.h |  2 +-
 lib/librte_hash/rte_crc_arm64.h               |  2 ++
 lib/librte_ring/rte_ring.h                    | 18 ++++++++++++------
 mk/toolchain/gcc/rte.vars.mk                  |  6 ++++++
 5 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/lib/librte_cmdline/cmdline_parse_num.c b/lib/librte_cmdline/cmdline_parse_num.c
index b0f9a35..e507ec4 100644
--- a/lib/librte_cmdline/cmdline_parse_num.c
+++ b/lib/librte_cmdline/cmdline_parse_num.c
@@ -250,7 +250,7 @@ cmdline_parse_num(cmdline_parse_token_hdr_t *tk, const char *srcbuf, void *res,
 
 		case HEX:
 			st = HEX_OK;
-			/* no break */
+			/* fall-through no break */
 		case HEX_OK:
 			if (c >= '0' && c <= '9') {
 				if (add_to_res(c - '0', &res1, 16) < 0)
@@ -282,7 +282,7 @@ cmdline_parse_num(cmdline_parse_token_hdr_t *tk, const char *srcbuf, void *res,
 
 		case BIN:
 			st = BIN_OK;
-			/* no break */
+			/* fall-through */
 		case BIN_OK:
 			if (c >= '0' && c <= '1') {
 				if (add_to_res(c - '0', &res1, 2) < 0)
diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb.h b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb.h
index e5554ca..8d76f32 100644
--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/igb.h
+++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/igb.h
@@ -607,7 +607,7 @@ struct igb_adapter {
 	int int_mode;
 	u32 rss_queues;
 	u32 vmdq_pools;
-	char fw_version[32];
+	char fw_version[43];
 	u32 wvbr;
 	struct igb_mac_addr *mac_table;
 #ifdef CONFIG_IGB_VMDQ_NETDEV
diff --git a/lib/librte_hash/rte_crc_arm64.h b/lib/librte_hash/rte_crc_arm64.h
index 7dd6334..a17c0e4 100644
--- a/lib/librte_hash/rte_crc_arm64.h
+++ b/lib/librte_hash/rte_crc_arm64.h
@@ -110,8 +110,10 @@ rte_hash_crc_set_alg(uint8_t alg)
 	case CRC32_ARM64:
 		if (!rte_cpu_get_flag_enabled(RTE_CPUFLAG_CRC32))
 			alg = CRC32_SW;
+                /* fall-through */
 	case CRC32_SW:
 		crc32_alg = alg;
+                /* fall-through */
 	default:
 		break;
 	}
diff --git a/lib/librte_ring/rte_ring.h b/lib/librte_ring/rte_ring.h
index 0e22e69..085f3fe 100644
--- a/lib/librte_ring/rte_ring.h
+++ b/lib/librte_ring/rte_ring.h
@@ -364,9 +364,12 @@ void rte_ring_dump(FILE *f, const struct rte_ring *r);
 			r->ring[idx+3] = obj_table[i+3]; \
 		} \
 		switch (n & 0x3) { \
-			case 3: r->ring[idx++] = obj_table[i++]; \
-			case 2: r->ring[idx++] = obj_table[i++]; \
-			case 1: r->ring[idx++] = obj_table[i++]; \
+		case 3: \
+			r->ring[idx++] = obj_table[i++]; /* fallthrough */ \
+		case 2: \
+			r->ring[idx++] = obj_table[i++]; /* fallthrough */ \
+		case 1: \
+			r->ring[idx++] = obj_table[i++]; /* fallthrough */  \
 		} \
 	} else { \
 		for (i = 0; idx < size; i++, idx++)\
@@ -390,9 +393,12 @@ void rte_ring_dump(FILE *f, const struct rte_ring *r);
 			obj_table[i+3] = r->ring[idx+3]; \
 		} \
 		switch (n & 0x3) { \
-			case 3: obj_table[i++] = r->ring[idx++]; \
-			case 2: obj_table[i++] = r->ring[idx++]; \
-			case 1: obj_table[i++] = r->ring[idx++]; \
+		case 3: \
+			obj_table[i++] = r->ring[idx++]; /* fallthrough */ \
+		case 2: \
+			obj_table[i++] = r->ring[idx++]; /* fallthrough */ \
+		case 1: \
+			obj_table[i++] = r->ring[idx++]; /* fallthrough */ \
 		} \
 	} else { \
 		for (i = 0; idx < size; i++, idx++) \
diff --git a/mk/toolchain/gcc/rte.vars.mk b/mk/toolchain/gcc/rte.vars.mk
index 94f6412..350c8bc 100644
--- a/mk/toolchain/gcc/rte.vars.mk
+++ b/mk/toolchain/gcc/rte.vars.mk
@@ -101,5 +101,11 @@ ifeq ($(shell test $(GCC_VERSION) -lt 47 && echo 1), 1)
 WERROR_FLAGS += -Wno-uninitialized
 endif
 
+ifeq ($(shell test $(GCC_VERSION) -gt 70 && echo 1), 1)
+# Tell GCC only to error for switch fallthroughs without a suitable comment
+# Ignore errors for snprintf truncation
+WERROR_FLAGS += -Wno-format-truncation
+endif
+
 export CC AS AR LD OBJCOPY OBJDUMP STRIP READELF
 export TOOLCHAIN_CFLAGS TOOLCHAIN_LDFLAGS TOOLCHAIN_ASFLAGS
-- 
2.7.4