Commit 22f99b82 by Ulrich Weigand Committed by Ulrich Weigand

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
parent 8971094d
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> 2005-07-16 Richard Henderson <rth@redhat.com>
* acinclude.m4: New file. * acinclude.m4: New file.
......
...@@ -245,9 +245,7 @@ __mf_pthread_spawner (void *arg) ...@@ -245,9 +245,7 @@ __mf_pthread_spawner (void *arg)
{ {
void *result = NULL; void *result = NULL;
#ifndef HAVE_TLS
__mf_set_state (active); __mf_set_state (active);
#endif
/* NB: We could use __MF_TYPE_STATIC here, but we guess that the thread /* 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 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, ...@@ -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, WRAPPER(int, pthread_create, pthread_t *thr, const pthread_attr_t *attr,
void * (*start) (void *), void *arg) void * (*start) (void *), void *arg)
{ {
int result, need_wrapper = 0; struct mf_thread_start_info *si;
TRACE ("pthread_create\n"); TRACE ("pthread_create\n");
#ifndef HAVE_TLS /* Fill in startup-control fields. */
need_wrapper = 1; si = CALL_REAL (malloc, sizeof (*si));
#endif si->user_fn = start;
need_wrapper |= __mf_opts.heur_std_data != 0; si->user_arg = arg;
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;
/* Actually create the thread. */ /* Actually create the thread. */
result = CALL_REAL (pthread_create, thr, attr, __mf_pthread_spawner, si); return 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;
} }
...@@ -178,10 +178,10 @@ int __mf_starting_p = 1; ...@@ -178,10 +178,10 @@ int __mf_starting_p = 1;
#ifdef LIBMUDFLAPTH #ifdef LIBMUDFLAPTH
#ifdef HAVE_TLS #ifdef HAVE_TLS
__thread enum __mf_state_enum __mf_state_1 = active; __thread enum __mf_state_enum __mf_state_1 = reentrant;
#endif #endif
#else #else
enum __mf_state_enum __mf_state_1 = active; enum __mf_state_enum __mf_state_1 = reentrant;
#endif #endif
#ifdef LIBMUDFLAPTH #ifdef LIBMUDFLAPTH
...@@ -697,6 +697,8 @@ __mf_init () ...@@ -697,6 +697,8 @@ __mf_init ()
#endif #endif
__mf_starting_p = 0; __mf_starting_p = 0;
__mf_set_state (active);
__mf_set_default_options (); __mf_set_default_options ();
ov = getenv ("MUDFLAP_OPTIONS"); ov = getenv ("MUDFLAP_OPTIONS");
......
...@@ -55,4 +55,4 @@ int main () ...@@ -55,4 +55,4 @@ int main ()
/* { dg-output "100 100 100 100 100 100 100 100 100 100" } */ /* { dg-output "100 100 100 100 100 100 100 100 100 100" } */
/* { dg-repetitions 20 } */ /* { dg-repetitions 20 } */
/* { dg-timeout 3 } */ /* { dg-timeout 10 } */
...@@ -54,4 +54,4 @@ int main () ...@@ -54,4 +54,4 @@ int main ()
} }
/* { dg-output "100 100 100 100 100 100 100 100 100 100" } */ /* { dg-output "100 100 100 100 100 100 100 100 100 100" } */
/* { dg-repetitions 20 } */ /* { dg-repetitions 20 } */
/* { dg-timeout 3 } */ /* { dg-timeout 10 } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment