Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 30 Jan 2000 10:52:12 -0800
From:      Jason Evans <jasone@canonware.com>
To:        Brian Somers <brian@Awfulhak.org>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/lib/libc_r/uthread uthread_accept.c uthread_aio_suspend.c uthread_bind.c uthread_connect.c uthread_dup.c uthread_dup2.c uthread_execve.c uthread_exit.c uthread_fchflags.c uthread_fchmod.c uthread_fchown.c uthread_flock.c uthread_fork.c ...
Message-ID:  <20000130105212.K73462@sturm.canonware.com>
In-Reply-To: <200001301336.NAA04941@hak.lan.Awfulhak.org>; from brian@Awfulhak.org on Sun, Jan 30, 2000 at 01:36:20PM %2B0000
References:  <jasone@canonware.com> <200001301336.NAA04941@hak.lan.Awfulhak.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, Jan 30, 2000 at 01:36:20PM +0000, Brian Somers wrote:
> > On Sat, Jan 29, 2000 at 02:53:58PM -0800, Jason Evans wrote:
> > >   Log:
> > >   Use __strong_reference() instead of __weak_reference() to assure that the
> > >   weak symbols of the same name are not used.
> > 
> > It looks like it's going to take an 'installworld' or 'includes', then a
> > 'world' in order for this to take effect, since the 'buildworld' uses the
> > installed version of cdefs.h.  Oh well.  It doesn't break the world, and
> > it's no more broken than using __weak_reference(), so I went ahead and
> > committed it.
> > 
> > In other words, unless you take special action, libc_r won't start working
> > correctly until you've built and installed the world twice.
> 
> There *may* be something funny still going on with _exit()...  I'm 
> trying to rebuild X (as my window manager was killed by the recent 
> C++ library breakage^Wchanges, so now's as good a time as any), and 
> have had problems that I can't claim to understand but are still 
> breaking ports/x11/XFree86 after a very short way into the 
> compilation.
> 
> Doing another make world now....

As near as I can tell from looking at libc.a and libc_r.a, there shouldn't
be a problem.  In the case of libc, _exit() is a weak alias for __exit(),
which in turn calls the exit syscall, and in the case of libc_r, _exit() is
a strong alias for __exit(), which calls _thread_sys__exit(), which calls
the exit syscall.

A simple test program confirms that exit() and _exit() work fine, both with
libc and libc_r.

There was a period of about 18 hours, two days ago, where I may have broken
_exit().  _exit() is generated using PPSEUDO(), and this is the *only* use
of PPSEUDO().  If you continue having problems, please let me know, and
I'll try to help.

Thanks,
Jason


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000130105212.K73462>