svn commit: r189828 - in head: include sys/sys

David Schultz das at FreeBSD.ORG
Mon Apr 6 11:24:06 PDT 2009

On Mon, Apr 06, 2009, Peter Schuller wrote:
> [ pthread_kill() in signal.h conflicting with devel/pth's attempts to hide native pthread]
> > 3. /usr/include/signal.h defines pthread_kill() only if __POSIX_VISIBLE
> > or __XSI_VISIBLE is defined. Can someone try to inject
> > #undef __POSIX_VISIBLE or #undef __XSI_VISIBLE into pth's
> > to see if this fixes the problem and does not cause other problems?
> The attached patch dropped into the port makes devel/pth and
> security/gnupg build for me.
> I'll re-build my full set of ports with the patch and see, but I'm not
> really set up to do a global build of all ports. More importantly I
> guess is that it doesn't break things on older releases. I'll re-build
> my ports on a 7.x system too.
> I'm not the most knowledgable about the various POSIX/XSI
> compatibility defines and their expected results, but it seems pretty
> dangerous to me to flat-out #undef it. Who knows what else depends on
> those being set properly in any given application.
> How about only doing it for a new enough OS release to at least avoid
> breaking older releases, and then communicate the problem upstream and
> hope for a better fix?

As I mentioned in an email to vd@ two weeks ago, the problem is
that GNU pth *already* has a bunch of insidious kludges to try to
prevent systems headers on various operating systems from
declaring symbols it wants to clobber. In particular, it defines
_PTHREAD_H, which hides pthread_kill() when pthread_kill() is
defined in pthread.h, but not when it is defined in signal.h.

The options are to either add yet another insidious kludge to GNU
pth such as the one you suggest, or to add a kludge to FreeBSD
specifically to support GNU pth in all its brokenness. I agreed to
try the latter if the former proved to be impractical.

More information about the svn-src-head mailing list