TLS_INIT_TP, secondcall vs. USE___THREAD (was: GNU C Library master sources branch, master, updated. glibc-2.14-297-g52d4fef)
Thomas Schwinge
thomas@schwinge.name
Sun Oct 9 19:53:00 GMT 2011
Hi!
I have a question regarding the following commit. I couldn't find any
previous discussion.
On 13 Sep 2011 08:37:30 -0000, schwab@sourceware.org wrote:
> http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=995a80dfbcb443ead5aa22682c884ec5c827a2ea
>
> commit 995a80dfbcb443ead5aa22682c884ec5c827a2ea
> Author: Andreas Schwab <schwab@redhat.com>
> Date: Tue Sep 13 10:20:44 2011 +0200
>
> Only use USE___THREAD when defined
>
> diff --git a/ChangeLog b/ChangeLog
> index da35ca4..6fd8c36 100644
> --- a/ChangeLog
> +++ b/ChangeLog
> @@ -1,3 +1,8 @@
> +2011-09-13 Andreas Schwab <schwab@redhat.com>
> +
> + * elf/rtld.c (dl_main): Only use USE___THREAD when defined.
> + (init_tls): Likewise.
> +
> 2011-09-12 Ulrich Drepper <drepper@gmail.com>
>
> * sysdeps/ieee754/dbl-64/wordsize-64/s_logb.c: New file.
> diff --git a/elf/rtld.c b/elf/rtld.c
> index b3959a3..764140d 100644
> --- a/elf/rtld.c
> +++ b/elf/rtld.c
> @@ -779,7 +779,12 @@ cannot allocate TLS data structures for initial thread");
>
> /* And finally install it for the main thread. If ld.so itself uses
> TLS we know the thread pointer was initialized earlier. */
> - const char *lossage = TLS_INIT_TP (tcbp, USE___THREAD);
> + const char *lossage
> +#ifdef USE___THREAD
> + = TLS_INIT_TP (tcbp, USE___THREAD);
> +#else
> + = TLS_INIT_TP (tcbp, 0);
> +#endif
> if (__builtin_expect (lossage != NULL, 0))
> _dl_fatal_printf ("cannot set up thread-local storage: %s\n", lossage);
> tls_init_tp_called = true;
> @@ -2310,7 +2315,12 @@ ERROR: ld.so: object '%s' cannot be loaded as audit interface: %s; ignored.\n",
> TLS we know the thread pointer was initialized earlier. */
> if (! tls_init_tp_called)
> {
> - const char *lossage = TLS_INIT_TP (tcbp, USE___THREAD);
> + const char *lossage
> +#ifdef USE___THREAD
> + = TLS_INIT_TP (tcbp, USE___THREAD);
> +#else
> + = TLS_INIT_TP (tcbp, 0);
> +#endif
> if (__builtin_expect (lossage != NULL, 0))
> _dl_fatal_printf ("cannot set up thread-local storage: %s\n",
> lossage);
In the olden times, when USE___THREAD was still being defined (before
commit d063d164335938d557460bebaa7cfe388157b627), in both the two cases
above, TLS_INIT_TP(tcbp, 1) has been invoked. Now, with USE___THREAD
elided (whilst declaring it is always 1), these two calls have been
changed to TLS_INIT_TP(tcbp, 0). Is this change intentional?
The second parameter is the secondcall toggle -- I can't find any place
in glibc where this is now different from 0?
And neither can I see where a USE___THREAD definition for elf/rtld.c
should be coming from?
Grüße,
Thomas
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 489 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20111009/f3f40203/attachment.sig>
More information about the Libc-alpha
mailing list