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

Siarhei Siamashka siarhei.siamashka at gmail.com
Sat Dec 8 06:59:57 PST 2012


On Sun, 02 Dec 2012 22:36:52 -0500
Benjamin Gilbert <bgilbert at cs.cmu.edu> wrote:

> 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)

Thanks for the patch. Pushed it to the master branch in pixman git.

If we are up to releasing pixman-0.28.2 with the accumulated bugfixes,
this patch is a good candidate.

-- 
Best regards,
Siarhei Siamashka


More information about the Pixman mailing list