From owner-freebsd-threads@FreeBSD.ORG Thu Feb 28 09:50:02 2013 Return-Path: Delivered-To: freebsd-threads@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 501BCEDD for ; Thu, 28 Feb 2013 09:50:02 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 276B6181D for ; Thu, 28 Feb 2013 09:50:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.6/8.14.6) with ESMTP id r1S9o1wA028618 for ; Thu, 28 Feb 2013 09:50:01 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.6/8.14.6/Submit) id r1S9o10K028610; Thu, 28 Feb 2013 09:50:01 GMT (envelope-from gnats) Date: Thu, 28 Feb 2013 09:50:01 GMT Message-Id: <201302280950.r1S9o10K028610@freefall.freebsd.org> To: freebsd-threads@FreeBSD.org Cc: From: Mark Linimon Subject: Re: misc/150959: [libc] Stub pthread_once in libc should call _libc_once] X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: Mark Linimon List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Feb 2013 09:50:02 -0000 The following reply was made to PR threads/150959; it has been noted by GNATS. From: Mark Linimon To: bug-followup@FreeBSD.org Cc: Subject: Re: misc/150959: [libc] Stub pthread_once in libc should call _libc_once] Date: Thu, 28 Feb 2013 03:46:03 -0600 apparently this email never made it into the audit-trail ----- Forwarded message from John Baldwin ----- Date: Mon, 27 Sep 2010 11:46:27 -0400 From: John Baldwin To: freebsd-threads@freebsd.org Cc: arundel@freebsd.org, freebsd-bugs@freebsd.org Subject: Re: misc/150959: [libc] Stub pthread_once in libc should call _libc_once User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100819; KDE/4.4.5; amd64; ; ) On Sunday, September 26, 2010 1:11:52 pm arundel@freebsd.org wrote: > Old Synopsis: Stub pthread_once in libc should call _libc_once > New Synopsis: [libc] Stub pthread_once in libc should call _libc_once > > Responsible-Changed-From-To: freebsd-bugs->freebsd-threads > Responsible-Changed-By: arundel > Responsible-Changed-When: Sun Sep 26 17:08:28 UTC 2010 > Responsible-Changed-Why: > Over to maintainer(s). As you note in the history, libstdc++ depends on this behavior, so it is not likely to be changed. Possibly changing the stub to always return an error would be ok, except that POSIX defines no errors for pthread_once(). Note that this behavior also matches Solaris apparently: (From /usr/include/c++/4.2/bits/gthr-default.h) #if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK /* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if -pthreads is not specified. The functions are dummies and most return an error value. However pthread_once returns 0 without invoking the routine it is passed so we cannot pretend that the interface is active if -pthreads is not specified. On Solaris 2.5.1, the interface is not exposed at all so we need to play the usual game with weak symbols. On Solaris 10 and up, a working interface is always exposed. On FreeBSD 6 and later, libc also exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, which means the alternate __gthread_active_p below cannot be used there. */ #if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) To be honest, I would favor libc exporting '__isthreaded' in some fashion so that libstdc++ could depend on that instead. I think the symbol is already public so that libthr can set it. -- John Baldwin _______________________________________________ freebsd-threads@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-threads To unsubscribe, send any mail to "freebsd-threads-unsubscribe@freebsd.org" ----- End forwarded message -----