chiark / gitweb /
__thread --> thread_local for C11 compat
[elogind.git] / src / shared / macro.h
index fd3762eed4aae50976bff45148966dbde4cb6764..2b5b3fdfe0038e3c74e419441f7621f68aad9d29 100644 (file)
@@ -300,5 +300,17 @@ do {                                                                    \
                 _found;                                                 \
         })
 
+/* Define C11 thread_local attribute even on older compilers */
+#ifndef thread_local
+/*
+ * Don't break on glibc < 2.16 that doesn't define __STDC_NO_THREADS__
+ * see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53769
+ */
+#if __STDC_VERSION__ >= 201112L && !(defined(__STDC_NO_THREADS__) || (defined(__GNU_LIBRARY__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 16))
+#define thread_local _Thread_local
+#else
+#define thread_local __thread
+#endif
+#endif
 
 #include "log.h"