This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] BZ #5784: Build libpthread.a with ld -r
On Thu, Sep 6, 2012 at 7:29 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Thu, Sep 6, 2012 at 6:25 PM, Roland McGrath <roland@hack.frob.com> wrote:
>
>> An alternative that's more different (and off hand seems vaguely
>> worse to me), but perhaps is better in some way or other, is to make
>> sure that libc defines redirector functions for every pthread_foo
>> that libstdc++ calls. Then if -lpthread is missing, the strong
>> references are resolved to the libc definitions, which normally do
>> nothing. This alternative has the advantage that, if paired with a
>> b. solution for #1, it also correctly handles "dynamic static
>> threadedness".
>>
>
> That is one of the intentions of STB_SECONDARY. Libc
> can define those pthread_foo functions as STB_SECONDARY.
> If there is no -lpthread, they will be used. Otherwise,
> those in -lpthread will be used.
>
We can simply change weak reference in GCC to
strong reference and everything should just work.
We get no extra code in static executable since
each secondary pthread_foo in libc.a is in a separate
.o file. You only link in what you need. We can do it
in 2 phases:
1. Implement STB_SECONDARY in glibc first.
2. Use strong reference in GCC if glibc has
secondary pthread_foo.
--
H.J.