| need gcc-4.3.4 (gcc-4_3-branch r149015) |
| or gcc-4.4.1 (gcc-4_4-branch r149016) |
| or gcc-4.5.x (trunk r149593) or newer |
| which have a properly fixed gcc/emutls.c, |
| along with mingw-w64-headers r960 and |
| #if defined(_MSC_VER) /* MS Visual Studio */ |
| #define __threadlocal__ __declspec(thread) |
| #elif defined(__GNUC__) && ((__GNUC__ > 4) \ |
| || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) |
| /* gcc >= 4.3, also needs binutils >= 2.19 */ |
| #define __threadlocal__ __thread |
| #error No keyword for TLS vars is defined. |
| __threadlocal__ int tvar = 0; |
| int main (int argc, char **argv) |
| printf("not referencing tvar\n"); |
| printf("incrementing tvar..\n"); |
| printf(" .. done (%i)\n", tvar); |