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]

[PING][PATCH] [s390] Define a __tls_get_addr macro to avoid declaring it again


Ping!

Siddhesh

On Thu, 8 Jan 2015 19:26:56 +0530
Siddhesh Poyarekar <siddhesh@redhat.com> wrote:

> commit 050f7298e1ecc39887c329037575ccd972071255 added an extern
> declaration for __tls_get_addr that conflicts with the one in s390
> dl-tls.h, based on whether __tls_get_addr is defined as a macro.  The
> rationale seems to be based on the assumption that __tls_get_addr is
> exported for every architecture and hence an internal non-plt alias is
> needed.  This is not true for s390 though, since it exports
> __tls_get_offset and not __tls_get_addr.  This results in tst-audit9
> being stuck in an infinite loop.
> 
> This patch fixes this by defining a __tls_get_addr macro to itself so
> as to not use the conflicting declaration.
> 
> Tested on Fedora rawhide.
> 
> Siddhesh
> 
> 	* sysdeps/s390/dl-tls.h [IS_IN (rtld)]: Define __tls_get_addr
> 	macro.
> 
> ---
>  sysdeps/s390/dl-tls.h | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> diff --git a/sysdeps/s390/dl-tls.h b/sysdeps/s390/dl-tls.h
> index 0fa8045..8132b10 100644
> --- a/sysdeps/s390/dl-tls.h
> +++ b/sysdeps/s390/dl-tls.h
> @@ -33,6 +33,13 @@ extern unsigned long __tls_get_offset (unsigned
> long got_offset); 
>  #  include <shlib-compat.h>
>  
> +/* dl-tls.c declares __tls_get_addr as an exported symbol if it is
> not defined
> +   as a macro.  It seems suitable to do that in the generic code
> because all
> +   architectures other than s390 export __tls_get_addr.  The
> declaration causes
> +   problems in s390 though, so we define __tls_get_addr here to
> avoid declaring
> +   __tls_get_addr again.  */
> +#  define __tls_get_addr __tls_get_addr
> +
>  extern void *__tls_get_addr (tls_index *ti) attribute_hidden;
>  /* Make a temporary alias of __tls_get_addr to remove the hidden
>     attribute.  Then export __tls_get_addr as __tls_get_addr_internal

Attachment: pgp5XCuhZ0LT2.pgp
Description: OpenPGP digital signature


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