summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Alnubani <alialnu@mellanox.com>2019-12-11 06:49:25 +0000
committerThomas Monjalon <thomas@monjalon.net>2019-12-12 23:23:25 +0100
commitc3e89f69facbbfe131b6a6723665d48801ac943d (patch)
tree62eb3240b8e3bcfcc9ee47375f344567a99a2371
parent878f99d1142d861ad9e301a461ed7a05b32b7900 (diff)
downloaddpdk-master.zip
dpdk-master.tar.gz
dpdk-master.tar.xz
net/mlx: fix build with clang 9HEADmaster
This rewrites the MKSTR macro appending an empty string to its arguments to resolve build failures similar to: drivers/net/mlx4/mlx4.c:461:14: fatal error: format string is not a string literal [-Wformat-nonliteral] MKSTR(path, "%s/device/uevent", device->ibdev_path); drivers/net/mlx4/mlx4_utils.h:82:30: note: expanded from macro 'MKSTR' char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \ drivers/net/mlx5/mlx5_stats.c:144:15: fatal error: format string is not a string literal [-Wformat-nonliteral] MKSTR(path, "%s/ports/%d/hw_counters/%s", drivers/net/mlx5/mlx5_utils.h:149:30: note: expanded from macro 'MKSTR' char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \ The errors reproduce with clang version 9.0.0, and the release notes don't mention what could have caused them. Fixes: 7fae69eeff13 ("mlx4: new poll mode driver") Fixes: 771fa900b73a ("mlx5: introduce new driver for Mellanox ConnectX-4 adapters") Cc: stable@dpdk.org Signed-off-by: Ali Alnubani <alialnu@mellanox.com> Signed-off-by: Matan Azrad <matan@mellanox.com>
-rw-r--r--drivers/net/mlx4/mlx4_utils.h5
-rw-r--r--drivers/net/mlx5/mlx5_utils.h5
2 files changed, 6 insertions, 4 deletions
diff --git a/drivers/net/mlx4/mlx4_utils.h b/drivers/net/mlx4/mlx4_utils.h
index 74b9d2e..5718b9c 100644
--- a/drivers/net/mlx4/mlx4_utils.h
+++ b/drivers/net/mlx4/mlx4_utils.h
@@ -79,9 +79,10 @@ pmd_drv_log_basename(const char *s)
/** Allocate a buffer on the stack and fill it with a printf format string. */
#define MKSTR(name, ...) \
- char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \
+ int mkstr_size_##name = snprintf(NULL, 0, "" __VA_ARGS__); \
+ char name[mkstr_size_##name + 1]; \
\
- snprintf(name, sizeof(name), __VA_ARGS__)
+ snprintf(name, sizeof(name), "" __VA_ARGS__)
/** Generate a string out of the provided arguments. */
#define MLX4_STR(...) # __VA_ARGS__
diff --git a/drivers/net/mlx5/mlx5_utils.h b/drivers/net/mlx5/mlx5_utils.h
index b4ed8c6..ebf79b8 100644
--- a/drivers/net/mlx5/mlx5_utils.h
+++ b/drivers/net/mlx5/mlx5_utils.h
@@ -146,9 +146,10 @@ extern int mlx5_logtype;
/* Allocate a buffer on the stack and fill it with a printf format string. */
#define MKSTR(name, ...) \
- char name[snprintf(NULL, 0, __VA_ARGS__) + 1]; \
+ int mkstr_size_##name = snprintf(NULL, 0, "" __VA_ARGS__); \
+ char name[mkstr_size_##name + 1]; \
\
- snprintf(name, sizeof(name), __VA_ARGS__)
+ snprintf(name, sizeof(name), "" __VA_ARGS__)
/**
* Return logarithm of the nearest power of two above input value.