Heads up: Several thousand g++ and libstdc++ test failures on sparc
Tue Oct 14 08:03:00 GMT 2003
Loren James Rittle wrote:
> Not a Solaris bug; correction of a minor confusion of the use of the
> gthr API. At the time the code was written, it was not known by the
> author(s), that some environments might find the macro defined to 1,
> yet the dynamic check returned 0...
That problem was fixed a long time ago. The current problem is that
__GHTREADS is defined as 1, __gthread_active_p() returns 1, but
__gthread_once() fails anyway. The documentation in gthr.h for
Also it has define function
int __gthread_active_p ()
that returns 1 if thread system is active, 0 if not.
__gthread_active_p() on Solaris doesn't meet this requirement, so
either __gthread_active_p() is wrong or the documentation is wrong.
> A better fix might (a) update the gthr-single.h file to make it work
> like all other implementations thus removing the need to check the
> macro in this case and (b) update the other gthr-*.h files such that
> the __gthread_once API did the right thing internally w.r.t. the
> dynamic check; thus removing the need for multiple paths in the
> caller. However, changing the gthr ABI/API is a lot more complex...
That would indeed make it a lot easier to use.
More information about the Libstdc++