Without an explicit type, all parameters of this macro are considered as a signed integer.
../app/test/test_fib.c:270:20: runtime error: left shift of 128 by 24 places cannot be represented in type 'int' SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior ../app/test/test_fib.c:270:20 in Signed-off-by: David Marchand <david.march...@redhat.com> --- lib/net/rte_ip4.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/net/rte_ip4.h b/lib/net/rte_ip4.h index d4b38c513c..822a660cfb 100644 --- a/lib/net/rte_ip4.h +++ b/lib/net/rte_ip4.h @@ -65,10 +65,8 @@ struct __rte_aligned(2) __rte_packed_begin rte_ipv4_hdr { } __rte_packed_end; /** Create IPv4 address */ -#define RTE_IPV4(a, b, c, d) ((uint32_t)(((a) & 0xff) << 24) | \ - (((b) & 0xff) << 16) | \ - (((c) & 0xff) << 8) | \ - ((d) & 0xff)) +#define RTE_IPV4(a, b, c, d) (((uint32_t)((a) & 0xff) << 24) | ((uint32_t)((b) & 0xff) << 16) | \ + ((uint32_t)((c) & 0xff) << 8) | ((uint32_t)((d) & 0xff))) /** Maximal IPv4 packet length (including a header) */ #define RTE_IPV4_MAX_PKT_LEN 65535 -- 2.50.0