TLS: defining the problem space
Daniel Eischen
eischen at vigrid.com
Fri Jun 20 14:17:14 PDT 2003
On Fri, 20 Jun 2003, Marcel Moolenaar wrote:
> If both libc and pthread provide weak definitions, then how do we
> guarantee correct binding in the complete, with pthread and dynamic
> TLS case. If libc and RTLD provide weak definitions, then how do we
> guarantee proper binding in the shared, without pthread and dynamic
> TLS case?
I don't know if it helps, but here's some info from a Solaris 9
box (UltraSparc):
gpz $ nm /usr/lib/libc.so.1 | grep tls_
gpz $ nm /usr/lib/ld.so.1 | grep tls_
[829] | 0| 0|FUNC |GLOB |0 |UNDEF |Dbg_tls_modactivity
[875] | 0| 0|FUNC |GLOB |0 |UNDEF |Dbg_tls_static_block
[568] | 221816| 4|OBJT |LOCL |0 |15 |fptr_tls_modadd
[569] | 221820| 4|OBJT |LOCL |0 |15 |fptr_tls_modrem
[570] | 221824| 4|OBJT |LOCL |0 |15 |fptr_tls_statmods
[220] | 85632| 84|FUNC |LOCL |0 |10 |tls_assign_soffset
[140] | 85176| 96|FUNC |LOCL |0 |10 |tls_freemodid
[116] | 84808| 368|FUNC |LOCL |0 |10 |tls_getmodid
[361] | 85348| 284|FUNC |LOCL |0 |10 |tls_modactivity
[64] | 85716| 688|FUNC |LOCL |0 |10 |tls_report_modules
[398] | 85272| 76|FUNC |LOCL |0 |10 |tls_setroutines
[572] | 221832| 4|OBJT |LOCL |0 |15 |tls_static_size
gpz $ nm /usr/lib/libthread.so.1 | grep tls_
[986] | 90128| 60|FUNC |GLOB |0 |10 |__tls_get_addr
[287] | 85584| 228|FUNC |LOCL |0 |10 |__tls_mod_add
[71] | 85812| 72|FUNC |LOCL |0 |10 |__tls_mod_remove
[178] | 85260| 324|FUNC |LOCL |0 |10 |__tls_static_mods
[448] | 85884| 392|FUNC |LOCL |0 |10 |slow_tls_get_addr
[403] | 86488| 296|FUNC |LOCL |0 |10 |tls_exit
[52] | 86784| 148|FUNC |LOCL |0 |10 |tls_free
[611] | 167144| 24|OBJT |LOCL |0 |17 |tls_lock
[410] | 172176| 8|OBJT |LOCL |0 |20 |tls_modinfo
[252] | 168712| 40|OBJT |LOCL |0 |19 |tls_rtldinfo
[407] | 86276| 212|FUNC |LOCL |0 |10 |tls_setup
gpz $ nm /usr/lib/libpthread.so.1 | grep tls_
libthread seems to be the only one defining __tls_get_addr().
--
Dan Eischen
More information about the freebsd-threads
mailing list