On 2012-03-23 06:03, Martin Nowak wrote:
On Mon, 19 Mar 2012 10:40:25 +0100, Jacob Carlborg <d...@me.com> wrote:
As I understand it, in the native ELF implementation, assembly is used
to access the current module id, this is for FreeBSD:
http://people.freebsd.org/~marcel/tls.html
This is how ___tls_get_addr is implemented on FreeBSD ELF i386:
https://bitbucket.org/freebsd/freebsd-head/src/4e8f50fe2f05/libexec/rtld-elf/i386/reloc.c#cl-355
Not quite.
Access to the static image is done through %fs relative addressing
which is super-fast and requires no runtime linking.
The general dynamic addressing needs one tls_index
struct in the GOT for every variable and a call to
_tls_get_addr(tls_index*).
The module index and the offset are filled by the runtime linker.
Ok, I see.
--
/Jacob Carlborg