From 4f5485bfad8355b7cf2d62a36897558dfc44bcb6 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Wed, 15 Sep 2021 10:15:03 +0200 Subject: [PATCH] BUG/MINOR: compat: make sure __WORDSIZE is always defined -Wundef triggered on a MIPS-based musl build on __WORDSIZE that's used in ultoa_o() and some Lua initialization. The former will fail to convert integers larger to 1 billion to proper string in this case. Let's make sure this macro is defined and fall back to values determined from __SIZEOF_LONG__ otherwise. A cleaner long-term approach would consist in removing all remaining occurrences of this macro. This can be backported to all versions. --- include/haproxy/compat.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/haproxy/compat.h b/include/haproxy/compat.h index 886b7a3650..84cdbe0d5e 100644 --- a/include/haproxy/compat.h +++ b/include/haproxy/compat.h @@ -85,6 +85,16 @@ typedef struct { } empty_t; #define BITS_PER_INT (8*sizeof(int)) #endif +#ifndef __WORDSIZE +# if defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4 +# define __WORDSIZE 32 +# elif defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8 +# define __WORDSIZE 64 +# else +# error "Unknown machine word size (__WORDSIZE, __SIZEOF_LONG)" +# endif +#endif + #ifndef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) #endif