bug in gcc-3.2.3/gcc/gthr_rtems.h

Till Straumann strauman at slac.stanford.edu
Mon Apr 19 21:19:08 UTC 2004


I think Yacine is right. Looking at gcc-3.2.2 is affected, too.

Joel apparently added a macro definition on 2003-05-21 (gcc PR 9296)
- however, the reasons for this change are not apparent.

Joel, can you remember why you thought you had to define
__GTHREAD_MUTEX_INIT ?

Thanks

-- Till

The Changelog

EL KOLLI Yacine wrote:
> Hello,
> 
> I think there is a bug in gthr_rtems.h in the gcc-3.2.3 source tree 
> under gcc-3.2.3/gcc/gthr_rtems.h.
> 
> 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:
>      __GTHREAD_MUTEX_INIT
>          to initialize __gthread_mutex_t to get a fast
>     non-recursive mutex.
>      __GTHREAD_MUTEX_INIT_FUNCTION
>          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.
> 





More information about the users mailing list