[Pixman] [PATCH] Fix thread safety on mingw-w64 and clang

Benjamin Gilbert bgilbert at cs.cmu.edu
Sun Dec 2 19:36:52 PST 2012


This is a slightly cleaner fix to the preference-order portion of bug
57591.  It does not attempt to detect when __declspec(thread) is being
ignored by the compiler, so is insufficient in general, but it should
fix the problem for the compilers currently under discussion.

--Benjamin Gilbert


8<---------

After finding a working TLS storage class specifier, configure was
continuing to test other candidates.  This caused it to prefer
__declspec(thread) over __thread.  However, __declspec(thread) is
ignored with a warning by mingw-w64 [1] and silently ignored by clang [2].
The resulting binary behaved as if PIXMAN_NO_TLS was defined.

Bug introduced by a069da6c.

[1] https://bugs.freedesktop.org/show_bug.cgi?id=57591
[2] http://lists.freedesktop.org/archives/pixman/2012-October/002320.html
---
 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 45b709d..81f068d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -860,7 +860,7 @@ AC_CACHE_VAL(ac_cv_tls, [
 #error OpenBSD has broken __thread support
 #endif
 
-int $kw test;], [], ac_cv_tls=$kw)
+int $kw test;], [], [ac_cv_tls=$kw; break])
     done
 ])
 AC_MSG_RESULT($ac_cv_tls)
-- 
1.7.11.7



More information about the Pixman mailing list