From 22f99b8212a71f80e3521d4da05276acbcd689de Mon Sep 17 00:00:00 2001 From: Ulrich Weigand 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 +++-- libmudflap/testsuite/libmudflap.cth/pass37-frag.c | 2 +- libmudflap/testsuite/libmudflap.cth/pass39-frag.c | 2 +- 5 files changed, 24 insertions(+), 29 deletions(-) diff --git a/libmudflap/ChangeLog b/libmudflap/ChangeLog index f9f1380..ad61663 100644 --- a/libmudflap/ChangeLog +++ b/libmudflap/ChangeLog @@ -1,3 +1,14 @@ +2005-08-14 Ulrich Weigand + + * 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 * acinclude.m4: New file. diff --git a/libmudflap/mf-hooks3.c b/libmudflap/mf-hooks3.c index f3006b2..73a7f71 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 af584e7..e690165 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 bfa2c7c..877803c 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 eb3449e..cd3eb5a 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 } */ -- 2.7.4