bug in gcc-3.2.3/gcc/gthr_rtems.h
EL KOLLI Yacine
yacine.elkolli at crf.canon.fr
Mon Apr 19 09:12:30 UTC 2004
I think there is a bug in gthr_rtems.h in the gcc-3.2.3 source tree
In this file __GTHREAD_MUTEX_INIT is define to 0 and
__GTHREAD_MUTEX_INIT_FUNCTION is defined to rtems_gxx_mutex_init.
But a comment in gthr.h states:
to initialize __gthread_mutex_t to get a fast
some systems can't initialize a mutex without a
function call. On such systems, define this to a
function which looks like this:
void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *)
Don't define __GTHREAD_MUTEX_INIT in this case
The result of having defined __GTHREAD_MUTEX_INIT is that the STL global
constructor does not call rtems_gxx_mutex_init to init its mutex, but
rather use the statically defined value 0.
All locking performed by the STL lib on this mutex fail with return
value OBJECT_ERROR, which seems not be tested.
I've recompiled gcc with __THREAD_MUTEX_INIT left undefined. Now STL
constructor is calling rtems_gxx_mutex_init , and nothing seems broken.
Any comments ?
Y El Kolli.
EL KOLLI Yacine | yacine.elkolli at crf.canon.fr
Canon C.R.F. | Phone: +33.(0)126.96.36.199.79
http://www.crf.canon.fr | FAX: +33.(0)188.8.131.52.30
More information about the users