This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Heads up: Several thousand g++ and libstdc++ test failures on sparc[64]


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
__gthread_active_p() is:

   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.

Regards,
Petur


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]