From 22f99b8212a71f80e3521d4da05276acbcd689de Mon Sep 17 00:00:00 2001
From: Ulrich Weigand <weigand@informatik.uni-erlangen.de>
Date: Sun, 14 Aug 2005 19:38:34 +0000
Subject: [PATCH] mf-runtime.c (__mf_state_1): Initialize to reentrant.

	* mf-runtime.c (__mf_state_1): Initialize to reentrant.
	(__mf_init): Set thread state active.
	* mf-hooks3.c (__mf_pthread_spawner): Always set thread
	state active.
	(pthread_create wrapper): Always use thread spawner.

	* testsuite/libmudflap.cth/pass37-frag.c: Increase timeout.
	* testsuite/libmudflap.cth/pass39-frag.c: Likewise.

From-SVN: r103084
---
 libmudflap/ChangeLog                          | 11 +++++++
 libmudflap/mf-hooks3.c                        | 32 ++++---------------
 libmudflap/mf-runtime.c                       |  6 ++--
 .../testsuite/libmudflap.cth/pass37-frag.c    |  2 +-
 .../testsuite/libmudflap.cth/pass39-frag.c    |  2 +-
 5 files changed, 24 insertions(+), 29 deletions(-)

diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog
index f9f13800468d..ad616633dcb3 100644
--- a/libmudflap/ChangeLog
+++ b/libmudflap/ChangeLog
@@ -1,3 +1,14 @@
+2005-08-14  Ulrich Weigand  <weigand@informatik.uni-erlangen.de>
+
+	* mf-runtime.c (__mf_state_1): Initialize to reentrant.
+	(__mf_init): Set thread state active.
+	* mf-hooks3.c (__mf_pthread_spawner): Always set thread
+	state active.
+	(pthread_create wrapper): Always use thread spawner.
+
+	* testsuite/libmudflap.cth/pass37-frag.c: Increase timeout.
+	* testsuite/libmudflap.cth/pass39-frag.c: Likewise.
+
 2005-07-16  Richard Henderson  <rth@redhat.com>
 
 	* acinclude.m4: New file.
diff --git a/libmudflap/mf-hooks3.c b/libmudflap/mf-hooks3.c
index f3006b20fe08..73a7f7171318 100644
--- a/libmudflap/mf-hooks3.c
+++ b/libmudflap/mf-hooks3.c
@@ -245,9 +245,7 @@ __mf_pthread_spawner (void *arg)
 {
   void *result = NULL;
 
-#ifndef HAVE_TLS
   __mf_set_state (active);
-#endif
 
   /* NB: We could use __MF_TYPE_STATIC here, but we guess that the thread
      errno is coming out of some dynamically allocated pool that we already
@@ -291,31 +289,15 @@ __mf_0fn_pthread_create (pthread_t *thr, const pthread_attr_t *attr,
 WRAPPER(int, pthread_create, pthread_t *thr, const pthread_attr_t *attr,
 	 void * (*start) (void *), void *arg)
 {
-  int result, need_wrapper = 0;
+  struct mf_thread_start_info *si;
 
   TRACE ("pthread_create\n");
 
-#ifndef HAVE_TLS
-  need_wrapper = 1;
-#endif
-  need_wrapper |= __mf_opts.heur_std_data != 0;
-
-  if (need_wrapper)
-    {
-      struct mf_thread_start_info *si = CALL_REAL (malloc, sizeof (*si));
-
-      /* Fill in startup-control fields.  */
-      si->user_fn = start;
-      si->user_arg = arg;
+  /* Fill in startup-control fields.  */
+  si = CALL_REAL (malloc, sizeof (*si));
+  si->user_fn = start;
+  si->user_arg = arg;
 
-      /* Actually create the thread.  */
-      result = CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si);
-    }
-  else
-    {
-      /* If we're not handling heur_std_data, nothing special to do.  */
-      result = CALL_REAL (pthread_create, thr, attr, start, arg);
-    }
-
-  return result;
+  /* Actually create the thread.  */
+  return CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si);
 }
diff --git a/libmudflap/mf-runtime.c b/libmudflap/mf-runtime.c
index af584e773d93..e69016509757 100644
--- a/libmudflap/mf-runtime.c
+++ b/libmudflap/mf-runtime.c
@@ -178,10 +178,10 @@ int __mf_starting_p = 1;
 
 #ifdef LIBMUDFLAPTH
 #ifdef HAVE_TLS
-__thread enum __mf_state_enum __mf_state_1 = active;
+__thread enum __mf_state_enum __mf_state_1 = reentrant;
 #endif
 #else
-enum __mf_state_enum __mf_state_1 = active;
+enum __mf_state_enum __mf_state_1 = reentrant;
 #endif
 
 #ifdef LIBMUDFLAPTH
@@ -697,6 +697,8 @@ __mf_init ()
 #endif
   __mf_starting_p = 0;
 
+  __mf_set_state (active);
+
   __mf_set_default_options ();
 
   ov = getenv ("MUDFLAP_OPTIONS");
diff --git a/libmudflap/testsuite/libmudflap.cth/pass37-frag.c b/libmudflap/testsuite/libmudflap.cth/pass37-frag.c
index bfa2c7c02ab7..877803c1ea02 100644
--- a/libmudflap/testsuite/libmudflap.cth/pass37-frag.c
+++ b/libmudflap/testsuite/libmudflap.cth/pass37-frag.c
@@ -55,4 +55,4 @@ int main ()
 
 /* { dg-output "100 100 100 100 100 100 100 100 100 100" } */
 /* { dg-repetitions 20 } */
-/* { dg-timeout 3 } */
+/* { dg-timeout 10 } */
diff --git a/libmudflap/testsuite/libmudflap.cth/pass39-frag.c b/libmudflap/testsuite/libmudflap.cth/pass39-frag.c
index eb3449e9d8bc..cd3eb5abdafb 100644
--- a/libmudflap/testsuite/libmudflap.cth/pass39-frag.c
+++ b/libmudflap/testsuite/libmudflap.cth/pass39-frag.c
@@ -54,4 +54,4 @@ int main ()
 }
 /* { dg-output "100 100 100 100 100 100 100 100 100 100" } */
 /* { dg-repetitions 20 } */
-/* { dg-timeout 3 } */
+/* { dg-timeout 10 } */
-- 
GitLab