This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [libc patch] __tls_get_addr with link_map * instead of modid
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: Jan Kratochvil <jan dot kratochvil at redhat dot com>
- Cc: libc-alpha at sourceware dot org, gdb-patches at sourceware dot org
- Date: Thu, 23 Oct 2014 08:02:34 -0200
- Subject: Re: [libc patch] __tls_get_addr with link_map * instead of modid
- Authentication-results: sourceware.org; auth=none
- References: <20141018201540 dot GA26252 at host2 dot jankratochvil dot net>
On Oct 18, 2014, Jan Kratochvil <jan.kratochvil@redhat.com> wrote:
> * A new glibc function like __tls_get_addr that takes a link_map address
> rather than a module id.
dlinfo offers operations to both map a link_map (AKA dlopen handle) to
the modid, and to get the TLS base address for that link_map. I suppose
calling dlinfo directly is not an option, since there's no guarantee
that libdl will have been linked in.
However, the implementat of dlinfo RTLD_DI_TLS_DATA relies on
_dl_tls_get_addr_soft, that not only takes a struct link_map*, but also
refrains from assigning a TLS segment for the module in the running
thread when one isn't allocated already. I think this would be
preferrable behavior for a debugger, to avoid heisenbugs.
This symbol is not exported by ld.so, but this shouldn't stop GDB from
using it, since it is present in the symbol table as a local (hidden)
symbol.
--
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist|Red Hat Brasil GNU Toolchain Engineer