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