https://gcc.gnu.org/gcc-10/changes.html:
GCC now defaults to -fno-common. As a result, global variable accesses are more efficient on various targets. In C, global variables with multiple tentative definitions now result in linker errors. With -fcommon such definitions are silently merged during linking.
This can be simulated on gcc 9.2.0 with CFLAGS="... -fno-common" too.
Gentoo bug: https://bugs.gentoo.org/707210
Comment From: hydrapolic
This seems to work with redis 5.0.7:
diff --git a/src/sds.h b/src/sds.h
index 1bdb60d..adcc12c 100644
--- a/src/sds.h
+++ b/src/sds.h
@@ -34,7 +34,7 @@
#define __SDS_H
#define SDS_MAX_PREALLOC (1024*1024)
-const char *SDS_NOINIT;
+extern const char *SDS_NOINIT;
#include <sys/types.h>
#include <stdarg.h>
Comment From: hydrapolic
Fixed in 5.0.8, thanks.