DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5
@ 2014-12-17 12:55 Olivier Matz
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 1/5] test-devargs: fix misplaced braces in strncmp call Olivier Matz
                   ` (6 more replies)
  0 siblings, 7 replies; 10+ messages in thread
From: Olivier Matz @ 2014-12-17 12:55 UTC (permalink / raw)
  To: dev

This series are compilation fixes seen with clang-3.5 on linux.

Olivier Matz (5):
  test-devargs: fix misplaced braces in strncmp call
  examples/l3fwd: fix compilation with clang 3.5
  examples/netmap: fix overflow in ioctl operation
  examples/vm_power_manager: move -lvirt in LDLIBS
  examples/vm_power_manager: fix initialization of cmdline token

 app/test/test_devargs.c                    | 2 +-
 examples/l3fwd/main.c                      | 4 +++-
 examples/netmap_compat/lib/compat_netmap.c | 2 +-
 examples/netmap_compat/lib/compat_netmap.h | 2 +-
 examples/vm_power_manager/Makefile         | 4 +++-
 examples/vm_power_manager/vm_power_cli.c   | 2 +-
 6 files changed, 10 insertions(+), 6 deletions(-)

-- 
2.1.3

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH 1/5] test-devargs: fix misplaced braces in strncmp call
  2014-12-17 12:55 [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Olivier Matz
@ 2014-12-17 12:55 ` Olivier Matz
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 2/5] examples/l3fwd: fix compilation with clang 3.5 Olivier Matz
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Olivier Matz @ 2014-12-17 12:55 UTC (permalink / raw)
  To: dev

One occurrence call to strncmp had the closing brace in the wrong
place. Changing this form:
	if (strncmp(X, Y, sizeof(X) != 0))
which does a comparison of length 1, to
	if (strncmp(X, Y, sizeof(X)) != 0)
which does the correct length comparison and then compares the result
to zero in the "if" part.

Seen with clang-3.5:
  "error: size argument in 'strncmp' call is a comparison"

This patch is similar to 261386248 but it looks that one occurence
was forgotten.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 app/test/test_devargs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/test/test_devargs.c b/app/test/test_devargs.c
index dcbdd09..3d9f7bc 100644
--- a/app/test/test_devargs.c
+++ b/app/test/test_devargs.c
@@ -105,7 +105,7 @@ test_devargs(void)
 		devargs->pci.addr.devid != 0 ||
 		devargs->pci.addr.function != 1)
 		goto fail;
-	if (strncmp(devargs->args, "", sizeof(devargs->args) != 0))
+	if (strncmp(devargs->args, "", sizeof(devargs->args)) != 0)
 		goto fail;
 	free_devargs_list();
 
-- 
2.1.3

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH 2/5] examples/l3fwd: fix compilation with clang 3.5
  2014-12-17 12:55 [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Olivier Matz
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 1/5] test-devargs: fix misplaced braces in strncmp call Olivier Matz
@ 2014-12-17 12:55 ` Olivier Matz
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 3/5] examples/netmap: fix overflow in ioctl operation Olivier Matz
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Olivier Matz @ 2014-12-17 12:55 UTC (permalink / raw)
  To: dev

Fix the following error:
  error: unused function 'l3fwd_simple_forward'

The l3fwd_simple_forward() is maybe unused, due to compilation options
(APP_LOOKUP_METHOD, ENABLE_MULTI_BUFFER_OPTIMIZE). As the combinatorial
is quite big, it looks simpler to add the __attribute__((unused)) on
this function, so that the compiler does not complain.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 examples/l3fwd/main.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index bf0fcdb..918f2cb 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -724,9 +724,11 @@ get_ipv6_dst_port(void *ipv6_hdr,  uint8_t portid, lookup6_struct_t * ipv6_l3fwd
 }
 #endif
 
+static inline void l3fwd_simple_forward(struct rte_mbuf *m, uint8_t portid,
+	struct lcore_conf *qconf)  __attribute__((unused));
+
 #if ((APP_LOOKUP_METHOD == APP_LOOKUP_EXACT_MATCH) && \
 	(ENABLE_MULTI_BUFFER_OPTIMIZE == 1))
-static inline void l3fwd_simple_forward(struct rte_mbuf *m, uint8_t portid, struct lcore_conf *qconf);
 
 #define MASK_ALL_PKTS    0xf
 #define EXECLUDE_1ST_PKT 0xe
-- 
2.1.3

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH 3/5] examples/netmap: fix overflow in ioctl operation
  2014-12-17 12:55 [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Olivier Matz
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 1/5] test-devargs: fix misplaced braces in strncmp call Olivier Matz
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 2/5] examples/l3fwd: fix compilation with clang 3.5 Olivier Matz
@ 2014-12-17 12:55 ` Olivier Matz
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 4/5] examples/vm_power_manager: move -lvirt in LDLIBS Olivier Matz
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Olivier Matz @ 2014-12-17 12:55 UTC (permalink / raw)
  To: dev

Compiling the netmap example with clang-3.5 triggered the following
warning:

  compat_netmap.c:783:11: error: overflow converting case value to
    switch condition type (3225184658 to 18446744072639768978)
    [-Werror,-Wswitch]
              case NIOCREGIF:
                 ^
Indeed, an ioctl value should be an unsigned 32 bits, not an int.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 examples/netmap_compat/lib/compat_netmap.c | 2 +-
 examples/netmap_compat/lib/compat_netmap.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/examples/netmap_compat/lib/compat_netmap.c b/examples/netmap_compat/lib/compat_netmap.c
index 6a4737a..1d86ef0 100644
--- a/examples/netmap_compat/lib/compat_netmap.c
+++ b/examples/netmap_compat/lib/compat_netmap.c
@@ -765,7 +765,7 @@ rte_netmap_close(__rte_unused int fd)
 	return (rc);
 }
 
-int rte_netmap_ioctl(int fd, int op, void *param)
+int rte_netmap_ioctl(int fd, uint32_t op, void *param)
 {
 	int ret;
 
diff --git a/examples/netmap_compat/lib/compat_netmap.h b/examples/netmap_compat/lib/compat_netmap.h
index f8a7812..3dc7a2f 100644
--- a/examples/netmap_compat/lib/compat_netmap.h
+++ b/examples/netmap_compat/lib/compat_netmap.h
@@ -71,7 +71,7 @@ int rte_netmap_init_port(uint8_t portid,
 	const struct rte_netmap_port_conf *conf);
 
 int rte_netmap_close(int fd);
-int rte_netmap_ioctl(int fd, int op, void *param);
+int rte_netmap_ioctl(int fd, uint32_t op, void *param);
 int rte_netmap_open(const char *pathname, int flags);
 int rte_netmap_poll(struct pollfd *fds, nfds_t nfds, int timeout);
 void *rte_netmap_mmap(void *addr, size_t length, int prot, int flags, int fd,
-- 
2.1.3

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH 4/5] examples/vm_power_manager: move -lvirt in LDLIBS
  2014-12-17 12:55 [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Olivier Matz
                   ` (2 preceding siblings ...)
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 3/5] examples/netmap: fix overflow in ioctl operation Olivier Matz
@ 2014-12-17 12:55 ` Olivier Matz
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 5/5] examples/vm_power_manager: fix initialization of cmdline token Olivier Matz
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 10+ messages in thread
From: Olivier Matz @ 2014-12-17 12:55 UTC (permalink / raw)
  To: dev

The argument -lvirt is a linker parameter, not a CFLAG.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 examples/vm_power_manager/Makefile | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/examples/vm_power_manager/Makefile b/examples/vm_power_manager/Makefile
index b0a1037..113dbc4 100644
--- a/examples/vm_power_manager/Makefile
+++ b/examples/vm_power_manager/Makefile
@@ -45,9 +45,11 @@ APP = vm_power_mgr
 SRCS-y := main.c vm_power_cli.c power_manager.c channel_manager.c
 SRCS-y += channel_monitor.c
 
-CFLAGS += -O3 -lvirt -I$(RTE_SDK)/lib/librte_power/
+CFLAGS += -O3 -I$(RTE_SDK)/lib/librte_power/
 CFLAGS += $(WERROR_FLAGS)
 
+LDLIBS += -lvirt
+
 # workaround for a gcc bug with noreturn attribute
 # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
 ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
-- 
2.1.3

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [dpdk-dev] [PATCH 5/5] examples/vm_power_manager: fix initialization of cmdline token
  2014-12-17 12:55 [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Olivier Matz
                   ` (3 preceding siblings ...)
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 4/5] examples/vm_power_manager: move -lvirt in LDLIBS Olivier Matz
@ 2014-12-17 12:55 ` Olivier Matz
  2014-12-17 14:08 ` [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Bruce Richardson
  2014-12-17 23:44 ` Thomas Monjalon
  6 siblings, 0 replies; 10+ messages in thread
From: Olivier Matz @ 2014-12-17 12:55 UTC (permalink / raw)
  To: dev

Fix a typo: cmdline_parse_token_string_t was used in place of
cmdline_parse_num_string_t.

Seen with clang-3.5.

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
---
 examples/vm_power_manager/vm_power_cli.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/examples/vm_power_manager/vm_power_cli.c b/examples/vm_power_manager/vm_power_cli.c
index bd685fd..7690d14 100644
--- a/examples/vm_power_manager/vm_power_cli.c
+++ b/examples/vm_power_manager/vm_power_cli.c
@@ -624,7 +624,7 @@ cmd_set_cpu_freq_parsed(void *parsed_result, struct cmdline *cl,
 cmdline_parse_token_string_t cmd_set_cpu_freq =
 	TOKEN_STRING_INITIALIZER(struct cmd_set_cpu_freq_result,
 			set_cpu_freq, "set_cpu_freq");
-cmdline_parse_token_string_t cmd_set_cpu_freq_core_num =
+cmdline_parse_token_num_t cmd_set_cpu_freq_core_num =
 	TOKEN_NUM_INITIALIZER(struct cmd_set_cpu_freq_result,
 			core_num, UINT8);
 cmdline_parse_token_string_t cmd_set_cpu_freq_cmd_cmd =
-- 
2.1.3

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5
  2014-12-17 12:55 [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Olivier Matz
                   ` (4 preceding siblings ...)
  2014-12-17 12:55 ` [dpdk-dev] [PATCH 5/5] examples/vm_power_manager: fix initialization of cmdline token Olivier Matz
@ 2014-12-17 14:08 ` Bruce Richardson
  2014-12-17 14:24   ` Bruce Richardson
  2014-12-17 23:44 ` Thomas Monjalon
  6 siblings, 1 reply; 10+ messages in thread
From: Bruce Richardson @ 2014-12-17 14:08 UTC (permalink / raw)
  To: Olivier Matz; +Cc: dev

On Wed, Dec 17, 2014 at 01:55:20PM +0100, Olivier Matz wrote:
> This series are compilation fixes seen with clang-3.5 on linux.
> 
> Olivier Matz (5):
>   test-devargs: fix misplaced braces in strncmp call
>   examples/l3fwd: fix compilation with clang 3.5
>   examples/netmap: fix overflow in ioctl operation
>   examples/vm_power_manager: move -lvirt in LDLIBS
>   examples/vm_power_manager: fix initialization of cmdline token
> 
>  app/test/test_devargs.c                    | 2 +-
>  examples/l3fwd/main.c                      | 4 +++-
>  examples/netmap_compat/lib/compat_netmap.c | 2 +-
>  examples/netmap_compat/lib/compat_netmap.h | 2 +-
>  examples/vm_power_manager/Makefile         | 4 +++-
>  examples/vm_power_manager/vm_power_cli.c   | 2 +-
>  6 files changed, 10 insertions(+), 6 deletions(-)
> 
> -- 
> 2.1.3
> 

Interesting. I've just upgraded to Fedora 21, and I'm getting a lot of other,
different errors on compilation using its version of clang (3.4.2). Patches soon
to follow, but I'm surprised that they don't show up in clang 3.5. Perhaps they
are just compiler bugs in the Fedora version.
Examples of the errors are shown below.

/Bruce

  CC cmdline_rdline.o
/home/bruce/dpdk.org/lib/librte_cmdline/cmdline_rdline.c:249:27: fatal error: equality comparison with extraneous parentheses [-Wparentheses-equality]
   if (((&rdl->left)->len == 0))
        ~~~~~~~~~~~~~~~~~~^~~~
/home/bruce/dpdk.org/lib/librte_cmdline/cmdline_rdline.c:249:27: note: remove extraneous parentheses around the comparison to silence this warning
   if (((&rdl->left)->len == 0))
       ~                  ^   ~
/home/bruce/dpdk.org/lib/librte_cmdline/cmdline_rdline.c:249:27: note: use '=' to turn this equality comparison into an assignment
   if (((&rdl->left)->len == 0))
                          ^~
                          =
1 error generated.

  CC eal.o
clang: fatal error: argument unused during compilation: '-I /home/bruce/dpdk.org/x86_64-native-linuxap
/home/bruce/dpdk.org/mk/internal/rte.compile-pre.mk:126: recipe for target 'eal.o' failed
gmake[7]: *** [eal.o] Error 1

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5
  2014-12-17 14:08 ` [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Bruce Richardson
@ 2014-12-17 14:24   ` Bruce Richardson
  2014-12-19 18:00     ` Bruce Richardson
  0 siblings, 1 reply; 10+ messages in thread
From: Bruce Richardson @ 2014-12-17 14:24 UTC (permalink / raw)
  To: Olivier Matz; +Cc: dev

On Wed, Dec 17, 2014 at 02:08:27PM +0000, Bruce Richardson wrote:
> On Wed, Dec 17, 2014 at 01:55:20PM +0100, Olivier Matz wrote:
> > This series are compilation fixes seen with clang-3.5 on linux.
> > 
> > Olivier Matz (5):
> >   test-devargs: fix misplaced braces in strncmp call
> >   examples/l3fwd: fix compilation with clang 3.5
> >   examples/netmap: fix overflow in ioctl operation
> >   examples/vm_power_manager: move -lvirt in LDLIBS
> >   examples/vm_power_manager: fix initialization of cmdline token
> > 
> >  app/test/test_devargs.c                    | 2 +-
> >  examples/l3fwd/main.c                      | 4 +++-
> >  examples/netmap_compat/lib/compat_netmap.c | 2 +-
> >  examples/netmap_compat/lib/compat_netmap.h | 2 +-
> >  examples/vm_power_manager/Makefile         | 4 +++-
> >  examples/vm_power_manager/vm_power_cli.c   | 2 +-
> >  6 files changed, 10 insertions(+), 6 deletions(-)
> > 
> > -- 
> > 2.1.3
> > 
> 
> Interesting. I've just upgraded to Fedora 21, and I'm getting a lot of other,
> different errors on compilation using its version of clang (3.4.2). Patches soon
> to follow, but I'm surprised that they don't show up in clang 3.5. Perhaps they
> are just compiler bugs in the Fedora version.
> Examples of the errors are shown below.
> 
> /Bruce
> 

This is the latest compile problem I see on Fedora 21 with clang. Anyone care
to suggest a suitable fix?

  CC rte_eth_bond_args.o
  /home/bruce/dpdk.org/lib/librte_pmd_bond/rte_eth_bond_args.c:237:1201: fatal error: array index 3 is past the end of the array (which contains 3 elements) [-Warray-bounds]
   if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (("l2")) && __builtin_constant_p (value) && (__s1_len = strlen (("l2")), __s2_len = strlen (value), (!((size_t)(const void *)((("l2")) + 1) - (size_t)(const void *)(("l2")) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((value) + 1) - (size_t)(const void *)(value) == 1) || __s2_len >= 4)) ? __builtin_strcmp (("l2"), value) : (__builtin_constant_p (("l2")) && ((size_t)(const void *)((("l2")) + 1) - (size_t)(const void *)(("l2")) == 1) && (__s1_len = strlen (("l2")), __s1_len < 4) ? (__builtin_constant_p (value) && ((size_t)(const void *)((value) + 1) - (size_t)(const void *)(value) == 1) ? __builtin_strcmp (("l2"), value) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (value); int __result = (((const unsigned char *) (const char *) (("l2")))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (("l2")))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (("l2")))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (("l2")))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (value) && ((size_t)(const void *)((value) + 1) - (size_t)(const void *)(value) == 1) && (__s2_len = strlen (value), __s2_len < 4) ? (__builtin_constant_p (("l2")) && ((size_t)(const void *)((("l2")) + 1) - (size_t)(const void *)(("l2")) == 1) ? __builtin_strcmp (("l2"), value) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (("l2")); int __result = (((const unsigned char *) (const char *) (value))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (value))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (value))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (value))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (("l2"), value)))); }) == 0)

The offending line is the seemingly innoculous:
	237 	if (strcmp(PMD_BOND_XMIT_POLICY_LAYER2_KVARG, value) == 0)

where the first parameter is the constant value "12".

Any thoughts in the community?

/Bruce

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5
  2014-12-17 12:55 [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Olivier Matz
                   ` (5 preceding siblings ...)
  2014-12-17 14:08 ` [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Bruce Richardson
@ 2014-12-17 23:44 ` Thomas Monjalon
  6 siblings, 0 replies; 10+ messages in thread
From: Thomas Monjalon @ 2014-12-17 23:44 UTC (permalink / raw)
  To: Olivier Matz; +Cc: dev

> This series are compilation fixes seen with clang-3.5 on linux.
> 
> Olivier Matz (5):
>   test-devargs: fix misplaced braces in strncmp call
>   examples/l3fwd: fix compilation with clang 3.5
>   examples/netmap: fix overflow in ioctl operation
>   examples/vm_power_manager: move -lvirt in LDLIBS
>   examples/vm_power_manager: fix initialization of cmdline token

Applied

Thanks
-- 
Thomas

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5
  2014-12-17 14:24   ` Bruce Richardson
@ 2014-12-19 18:00     ` Bruce Richardson
  0 siblings, 0 replies; 10+ messages in thread
From: Bruce Richardson @ 2014-12-19 18:00 UTC (permalink / raw)
  To: Olivier Matz; +Cc: dev

On Wed, Dec 17, 2014 at 02:24:38PM +0000, Bruce Richardson wrote:
> On Wed, Dec 17, 2014 at 02:08:27PM +0000, Bruce Richardson wrote:
> > On Wed, Dec 17, 2014 at 01:55:20PM +0100, Olivier Matz wrote:
> > > This series are compilation fixes seen with clang-3.5 on linux.
> > > 
> > > Olivier Matz (5):
> > >   test-devargs: fix misplaced braces in strncmp call
> > >   examples/l3fwd: fix compilation with clang 3.5
> > >   examples/netmap: fix overflow in ioctl operation
> > >   examples/vm_power_manager: move -lvirt in LDLIBS
> > >   examples/vm_power_manager: fix initialization of cmdline token
> > > 
> > >  app/test/test_devargs.c                    | 2 +-
> > >  examples/l3fwd/main.c                      | 4 +++-
> > >  examples/netmap_compat/lib/compat_netmap.c | 2 +-
> > >  examples/netmap_compat/lib/compat_netmap.h | 2 +-
> > >  examples/vm_power_manager/Makefile         | 4 +++-
> > >  examples/vm_power_manager/vm_power_cli.c   | 2 +-
> > >  6 files changed, 10 insertions(+), 6 deletions(-)
> > > 
> > > -- 
> > > 2.1.3
> > > 
> > 
> > Interesting. I've just upgraded to Fedora 21, and I'm getting a lot of other,
> > different errors on compilation using its version of clang (3.4.2). Patches soon
> > to follow, but I'm surprised that they don't show up in clang 3.5. Perhaps they
> > are just compiler bugs in the Fedora version.
> > Examples of the errors are shown below.
> > 
> > /Bruce
> > 
> 
> This is the latest compile problem I see on Fedora 21 with clang. Anyone care
> to suggest a suitable fix?
> 
>   CC rte_eth_bond_args.o
>   /home/bruce/dpdk.org/lib/librte_pmd_bond/rte_eth_bond_args.c:237:1201: fatal error: array index 3 is past the end of the array (which contains 3 elements) [-Warray-bounds]
>    if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (("l2")) && __builtin_constant_p (value) && (__s1_len = strlen (("l2")), __s2_len = strlen (value), (!((size_t)(const void *)((("l2")) + 1) - (size_t)(const void *)(("l2")) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((value) + 1) - (size_t)(const void *)(value) == 1) || __s2_len >= 4)) ? __builtin_strcmp (("l2"), value) : (__builtin_constant_p (("l2")) && ((size_t)(const void *)((("l2")) + 1) - (size_t)(const void *)(("l2")) == 1) && (__s1_len = strlen (("l2")), __s1_len < 4) ? (__builtin_constant_p (value) && ((size_t)(const void *)((value) + 1) - (size_t)(const void *)(value) == 1) ? __builtin_strcmp (("l2"), value) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (value); int __result = (((const unsigned char *) (const char *) (("l2")))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (("l2")))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (("l2")))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (("l2")))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (value) && ((size_t)(const void *)((value) + 1) - (size_t)(const void *)(value) == 1) && (__s2_len = strlen (value), __s2_len < 4) ? (__builtin_constant_p (("l2")) && ((size_t)(const void *)((("l2")) + 1) - (size_t)(const void *)(("l2")) == 1) ? __builtin_strcmp (("l2"), value) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (("l2")); int __result = (((const unsigned char *) (const char *) (value))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (value))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (value))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (value))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (("l2"), value)))); }) == 0)
> 
> The offending line is the seemingly innoculous:
> 	237 	if (strcmp(PMD_BOND_XMIT_POLICY_LAYER2_KVARG, value) == 0)
> 
> where the first parameter is the constant value "12".
> 
> Any thoughts in the community?
> 
> /Bruce

Is anyone else seeing issues with clang on Fedora 21? I have tried a number of
systems here, and on two of them (one board upgraded from Fedora 20, and another
VM freshly installed from an iso image), I get the errors referred to in the last
two mails on this thread. However, on two other systems (again one upgraded, one
freshly installed), I see no compilation issues at all.

It very much looks to me like a clang or system setup issue, rather than a DPDK
one, but I'm just curious if anyone else has seen any problems?

/Bruce

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-12-19 18:01 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-17 12:55 [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Olivier Matz
2014-12-17 12:55 ` [dpdk-dev] [PATCH 1/5] test-devargs: fix misplaced braces in strncmp call Olivier Matz
2014-12-17 12:55 ` [dpdk-dev] [PATCH 2/5] examples/l3fwd: fix compilation with clang 3.5 Olivier Matz
2014-12-17 12:55 ` [dpdk-dev] [PATCH 3/5] examples/netmap: fix overflow in ioctl operation Olivier Matz
2014-12-17 12:55 ` [dpdk-dev] [PATCH 4/5] examples/vm_power_manager: move -lvirt in LDLIBS Olivier Matz
2014-12-17 12:55 ` [dpdk-dev] [PATCH 5/5] examples/vm_power_manager: fix initialization of cmdline token Olivier Matz
2014-12-17 14:08 ` [dpdk-dev] [PATCH 0/5] fix compilation issues seen with clang-3.5 Bruce Richardson
2014-12-17 14:24   ` Bruce Richardson
2014-12-19 18:00     ` Bruce Richardson
2014-12-17 23:44 ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).