aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/ChangeLog8
-rw-r--r--config/tls.m411
-rw-r--r--libgomp/ChangeLog5
-rwxr-xr-xlibgomp/configure6
-rw-r--r--libjava/ChangeLog5
-rwxr-xr-xlibjava/configure6
-rw-r--r--libmudflap/ChangeLog5
-rwxr-xr-xlibmudflap/configure6
-rw-r--r--libstdc++-v3/ChangeLog5
-rwxr-xr-xlibstdc++-v3/configure18
10 files changed, 54 insertions, 21 deletions
diff --git a/config/ChangeLog b/config/ChangeLog
index a211292..27f49c2 100644
--- a/config/ChangeLog
+++ b/config/ChangeLog
@@ -1,3 +1,11 @@
+2010-06-09 Iain Sandoe <iains@gcc.gnu.org>
+
+ 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 <joern.rennecke@embecosm.com>
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
diff --git a/config/tls.m4 b/config/tls.m4
index ef7e6d0..4e170c8 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 <pthread.h>
__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 c298ce9..c2dfeb1 100644
--- a/libgomp/ChangeLog
+++ b/libgomp/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-09 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR bootstrap/43170
+ * configure: Regenerate.
+
2010-05-04 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
PR other/43620
diff --git a/libgomp/configure b/libgomp/configure
index 3b5b349..e9b3a65 100755
--- a/libgomp/configure
+++ b/libgomp/configure
@@ -15380,7 +15380,7 @@ else
/* end confdefs.h. */
#include <pthread.h>
__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 47caffe..55d384b 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-09 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR bootstrap/43170
+ * configure: Regenerate.
+
2010-06-03 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure: Regenerate.
diff --git a/libjava/configure b/libjava/configure
index c0bfdea..c204809 100755
--- a/libjava/configure
+++ b/libjava/configure
@@ -24390,7 +24390,7 @@ else
/* end confdefs.h. */
#include <pthread.h>
__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 8ea482c..aa88a73 100644
--- a/libmudflap/ChangeLog
+++ b/libmudflap/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-09 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR bootstrap/43170
+ * configure: Regenerate.
+
2010-05-16 Uros Bizjak <ubizjak@gmail.com>
* testsuite/libmudflap.c/pass46-frag.c (dg-options): Remove -Wall.
diff --git a/libmudflap/configure b/libmudflap/configure
index 65b2daa3..03aec3f 100755
--- a/libmudflap/configure
+++ b/libmudflap/configure
@@ -11479,7 +11479,7 @@ else
/* end confdefs.h. */
#include <pthread.h>
__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 edb1519..43d1354 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-09 Iain Sandoe <iains@gcc.gnu.org>
+
+ PR bootstrap/43170
+ * configure: Regenerate.
+
2010-06-09 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/44413
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 53f0ce3..0650404 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -25548,7 +25548,7 @@ else
/* end confdefs.h. */
#include <pthread.h>
__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 <pthread.h>
__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 <pthread.h>
__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);