From 64fe8c62f90c6d887b2787f47ff815c2485e04d2 Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Tue, 7 Jun 2011 03:22:32 +0200 Subject: [PATCH] threads: Fix TLS declarations Cleanup the thread-utils file. Do not define TLS if libgit2 is not threadsafe. --- include/git2/thread-utils.h | 67 +++++++++++++---------- tests/resources/testrepo.git/packed-refs | Bin 149 -> 13972 bytes tests/t10-refs.c | 20 ++++++- 3 files changed, 55 insertions(+), 32 deletions(-) diff --git a/include/git2/thread-utils.h b/include/git2/thread-utils.h index e26876bea..62e6199a4 100644 --- a/include/git2/thread-utils.h +++ b/include/git2/thread-utils.h @@ -31,41 +31,48 @@ * http://predef.sourceforge.net/precomp.html */ -#define GIT_HAS_TLS 1 +#ifdef GIT_THREADS +# define GIT_HAS_TLS 1 -#if defined(__APPLE__) && defined(__MACH__) -# undef GIT_TLS -# define GIT_TLS +/* No TLS in Cygwin */ +# if defined(__CHECKER__) || defined(__CYGWIN__) +# undef GIT_HAS_TLS +# define GIT_TLS -#elif defined(__GNUC__) || \ - defined(__SUNPRO_C) || \ - defined(__SUNPRO_CC) || \ - defined(__xlc__) || \ - defined(__xlC__) -# define GIT_TLS __thread +/* No TLS in Mach binaries for Mac OS X */ +# elif defined(__APPLE__) && defined(__MACH__) +# undef GIT_TLS +# define GIT_TLS -#elif defined(__INTEL_COMPILER) -# if defined(_WIN32) || defined(_WIN32_CE) -# define GIT_TLS __declspec(thread) -# else -# define GIT_TLS __thread -# endif +/* Normal TLS for GCC */ +# elif defined(__GNUC__) || \ + defined(__SUNPRO_C) || \ + defined(__SUNPRO_CC) || \ + defined(__xlc__) || \ + defined(__xlC__) +# define GIT_TLS __thread -#elif defined(_WIN32) || \ - defined(_WIN32_CE) || \ - defined(__BORLANDC__) -# define GIT_TLS __declspec(thread) +/* ICC may run on Windows or Linux */ +# elif defined(__INTEL_COMPILER) +# if defined(_WIN32) || defined(_WIN32_CE) +# define GIT_TLS __declspec(thread) +# else +# define GIT_TLS __thread +# endif -#else -# undef GIT_HAS_TLS -# define GIT_TLS /* nothing: tls vars are thread-global */ -#endif +/* Declspec for MSVC in Win32 */ +# elif defined(_WIN32) || \ + defined(_WIN32_CE) || \ + defined(__BORLANDC__) +# define GIT_TLS __declspec(thread) -/* sparse and cygwin don't grok thread-local variables */ -#if defined(__CHECKER__) || defined(__CYGWIN__) -# undef GIT_HAS_TLS -# undef GIT_TLS -# define GIT_TLS -#endif +/* Other platform; no TLS */ +# else +# undef GIT_HAS_TLS +# define GIT_TLS /* nothing: tls vars are thread-global */ +# endif +#else /* Disable TLS if libgit2 is not threadsafe */ +# define GIT_TLS +#endif /* GIT_THREADS */ #endif /* INCLUDE_git_thread_utils_h__ */ diff --git a/tests/resources/testrepo.git/packed-refs b/tests/resources/testrepo.git/packed-refs index 52f5e876fbc57f0f9de3f469603c777e1bce92ff..ac97756cc9ee79a1ad5272bee9a1dc76263e3368 100644 GIT binary patch literal 13972 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 ZKQz6ZUqcCI)tDuEJ>2Uz$iIo{{{fPmR>c4S literal 149 zcmZXMyAH!33;=h&!cylbBz_e7H`o}ZYKN#G_4iBWE;pQXcZ0LoYx#KV@O_Ts0jK-h zD+Joql1YwtR;@~6Y|