On Mon, Mar 13, 2000 at 03:16:39PM +1100, Peter Jeremy wrote:
> Out of interest, why does nanosleep appear in libc_r.a as a weak
> symbol version of _thread_sys_nanosleep at all?  I would have thought
> this was unnecessary (and based on my experiments, undesirable).

I don't think it is necessary. It got caught up in the cancellation
changes that Jason made.

> 
> >Is there someone with a recent -current system who has time to try
> >this out?
> 
> I have -current from 9th March and get the same results you do.
> Looking at last night's buildworld results, there doesn't appear to
> be any change in the symbols in libc_r.a and when I try manually
> performing the link with the ld in /usr/obj/..., I still get the
> same result.
> 
> >... then libc_r is broken.
> 
> This is a particularly bad time to discover what appears to be a
> fairly serious bug in the threaded libraries and/or linker.
> 
> I just tried fiddling with the order in which uthread_nanosleep.o and
> nanosleep.o appear in libc_r.a.  It seems that the linker always picks
> the first definition of the symbol found after the first reference to
> the symbol - whether it is weak or not.  Since nanosleep.o appears
> before uthread_nanosleep.o, the non thread-safe version will be
> picked.
> 
> I suspect the only solution is to dispose of the weak symbols -
> re-ordering the object file isn't an option given the requirement
> for the non-weak symbol to always appear between the reference and
> the weak symbol.

I agree. Thanks for helping out.

-- 
John Birrell - [EMAIL PROTECTED]; [EMAIL PROTECTED] http://www.cimlogic.com.au/
               [EMAIL PROTECTED] [EMAIL PROTECTED]


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to