From: iains Date: Wed, 9 Jun 2010 09:27:04 +0000 (+0000) Subject: config: X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=9a2be16418443da095232a5d0988b1c9cb3cc928 config: PR bootstrap/43170 * tls.m4 (GCC_CHECK_TLS): Add volatile qualifier to the test references. Move the main () test reference ahead of pthread_create(). Add a comment to explain the requirements of the test. libgomp: PR bootstrap/43170 * configure: Regenerate. libjava: PR bootstrap/43170 * configure: Regenerate. libmudflap: PR bootstrap/43170 * configure: Regenerate. libstdc++-v3: PR bootstrap/43170 * configure: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@160457 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/config/ChangeLog b/config/ChangeLog index a211292c15e..27f49c2ee6a 100644 --- a/config/ChangeLog +++ b/config/ChangeLog @@ -1,3 +1,11 @@ +2010-06-09 Iain Sandoe + + PR bootstrap/43170 + * tls.m4 (GCC_CHECK_TLS): Add volatile qualifier to the test + references. Move the main () test reference ahead of + pthread_create(). Add a comment to explain the requirements + of the test. + 2010-06-03 Joern Rennecke Ralf Wildenhues diff --git a/config/tls.m4 b/config/tls.m4 index ef7e6d0b555..4e170c8d6ae 100644 --- a/config/tls.m4 +++ b/config/tls.m4 @@ -38,11 +38,16 @@ AC_DEFUN([GCC_CHECK_TLS], [ CFLAGS="$chktls_save_CFLAGS" if test "X$thread_CFLAGS" != Xfailed; then CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" + dnl Test for an old glibc bug that violated the __thread property. + dnl Use volatile to ensure the compiler won't optimize away pointer + dnl accesses it might otherwise assume to be redundant, or reorder + dnl them and reuse storage, which might lead to them pointing to + dnl the same location. AC_RUN_IFELSE( [AC_LANG_PROGRAM( [#include __thread int a; - static int *a_in_other_thread; + static int *volatile a_in_other_thread; static void * thread_func (void *arg) { @@ -51,11 +56,11 @@ AC_DEFUN([GCC_CHECK_TLS], [ }], [pthread_t thread; void *thread_retval; - int *a_in_main_thread; + int *volatile a_in_main_thread; + a_in_main_thread = &a; if (pthread_create (&thread, (pthread_attr_t *)0, thread_func, (void *)0)) return 0; - a_in_main_thread = &a; if (pthread_join (thread, &thread_retval)) return 0; return (a_in_other_thread == a_in_main_thread);])], diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index c298ce95743..c2dfeb147eb 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2010-06-09 Iain Sandoe + + PR bootstrap/43170 + * configure: Regenerate. + 2010-05-04 Ralf Wildenhues PR other/43620 diff --git a/libgomp/configure b/libgomp/configure index 3b5b3494798..e9b3a656291 100755 --- a/libgomp/configure +++ b/libgomp/configure @@ -15380,7 +15380,7 @@ else /* end confdefs.h. */ #include __thread int a; - static int *a_in_other_thread; + static int *volatile a_in_other_thread; static void * thread_func (void *arg) { @@ -15392,11 +15392,11 @@ main () { pthread_t thread; void *thread_retval; - int *a_in_main_thread; + int *volatile a_in_main_thread; + a_in_main_thread = &a; if (pthread_create (&thread, (pthread_attr_t *)0, thread_func, (void *)0)) return 0; - a_in_main_thread = &a; if (pthread_join (thread, &thread_retval)) return 0; return (a_in_other_thread == a_in_main_thread); diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 47caffe0438..55d384b146c 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2010-06-09 Iain Sandoe + + PR bootstrap/43170 + * configure: Regenerate. + 2010-06-03 Ralf Wildenhues * configure: Regenerate. diff --git a/libjava/configure b/libjava/configure index c0bfdea19dc..c20480912da 100755 --- a/libjava/configure +++ b/libjava/configure @@ -24390,7 +24390,7 @@ else /* end confdefs.h. */ #include __thread int a; - static int *a_in_other_thread; + static int *volatile a_in_other_thread; static void * thread_func (void *arg) { @@ -24402,11 +24402,11 @@ main () { pthread_t thread; void *thread_retval; - int *a_in_main_thread; + int *volatile a_in_main_thread; + a_in_main_thread = &a; if (pthread_create (&thread, (pthread_attr_t *)0, thread_func, (void *)0)) return 0; - a_in_main_thread = &a; if (pthread_join (thread, &thread_retval)) return 0; return (a_in_other_thread == a_in_main_thread); diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog index 8ea482cd37d..aa88a7326eb 100644 --- a/libmudflap/ChangeLog +++ b/libmudflap/ChangeLog @@ -1,3 +1,8 @@ +2010-06-09 Iain Sandoe + + PR bootstrap/43170 + * configure: Regenerate. + 2010-05-16 Uros Bizjak * testsuite/libmudflap.c/pass46-frag.c (dg-options): Remove -Wall. diff --git a/libmudflap/configure b/libmudflap/configure index 65b2daa3979..03aec3f3729 100755 --- a/libmudflap/configure +++ b/libmudflap/configure @@ -11479,7 +11479,7 @@ else /* end confdefs.h. */ #include __thread int a; - static int *a_in_other_thread; + static int *volatile a_in_other_thread; static void * thread_func (void *arg) { @@ -11491,11 +11491,11 @@ main () { pthread_t thread; void *thread_retval; - int *a_in_main_thread; + int *volatile a_in_main_thread; + a_in_main_thread = &a; if (pthread_create (&thread, (pthread_attr_t *)0, thread_func, (void *)0)) return 0; - a_in_main_thread = &a; if (pthread_join (thread, &thread_retval)) return 0; return (a_in_other_thread == a_in_main_thread); diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index edb1519046c..43d13543169 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,8 @@ +2010-06-09 Iain Sandoe + + PR bootstrap/43170 + * configure: Regenerate. + 2010-06-09 Paolo Carlini PR libstdc++/44413 diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 53f0ce3a7f0..06504044fa0 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -25548,7 +25548,7 @@ else /* end confdefs.h. */ #include __thread int a; - static int *a_in_other_thread; + static int *volatile a_in_other_thread; static void * thread_func (void *arg) { @@ -25560,11 +25560,11 @@ main () { pthread_t thread; void *thread_retval; - int *a_in_main_thread; + int *volatile a_in_main_thread; + a_in_main_thread = &a; if (pthread_create (&thread, (pthread_attr_t *)0, thread_func, (void *)0)) return 0; - a_in_main_thread = &a; if (pthread_join (thread, &thread_retval)) return 0; return (a_in_other_thread == a_in_main_thread); @@ -44486,7 +44486,7 @@ else /* end confdefs.h. */ #include __thread int a; - static int *a_in_other_thread; + static int *volatile a_in_other_thread; static void * thread_func (void *arg) { @@ -44498,11 +44498,11 @@ main () { pthread_t thread; void *thread_retval; - int *a_in_main_thread; + int *volatile a_in_main_thread; + a_in_main_thread = &a; if (pthread_create (&thread, (pthread_attr_t *)0, thread_func, (void *)0)) return 0; - a_in_main_thread = &a; if (pthread_join (thread, &thread_retval)) return 0; return (a_in_other_thread == a_in_main_thread); @@ -50571,7 +50571,7 @@ else /* end confdefs.h. */ #include __thread int a; - static int *a_in_other_thread; + static int *volatile a_in_other_thread; static void * thread_func (void *arg) { @@ -50583,11 +50583,11 @@ main () { pthread_t thread; void *thread_retval; - int *a_in_main_thread; + int *volatile a_in_main_thread; + a_in_main_thread = &a; if (pthread_create (&thread, (pthread_attr_t *)0, thread_func, (void *)0)) return 0; - a_in_main_thread = &a; if (pthread_join (thread, &thread_retval)) return 0; return (a_in_other_thread == a_in_main_thread);