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
This commit is contained in:
parent
8971094d72
commit
22f99b8212
|
@ -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>
|
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)
|
||||||
{
|
{
|
||||||
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,
|
||||||
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
|
|
||||||
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. */
|
/* Fill in startup-control fields. */
|
||||||
|
si = CALL_REAL (malloc, sizeof (*si));
|
||||||
si->user_fn = start;
|
si->user_fn = start;
|
||||||
si->user_arg = arg;
|
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;
|
||||||
|
|
||||||
#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 ()
|
||||||
#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 ()
|
||||||
|
|
||||||
/* { 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 ()
|
||||||
}
|
}
|
||||||
/* { 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 } */
|
||||||
|
|
Loading…
Reference in New Issue