This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

TLS_INIT_TP, secondcall vs. USE___THREAD (was: GNU C Library master sources branch, master, updated. glibc-2.14-297-g52d4fef)


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

Attachment: pgp00000.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]