ZHCADC4A September 2011 – March 2014
线程局部存储 (TLS) 是一个存储类,允许程序定义具有静态存储持续时间的线程特定变量。TLS 变量或线程局部变量是一个每线程实例化一次的全局/静态变量。有关线程局部存储的详细信息,请参阅Chapter7。
C6000 EABI 支持 TLS,但这取决于运行时操作系统的线程库是否实现 __c6xabi_get_tp() 函数以及 TLS 支持的其他方面。
线程局部变量在 ELF 目标文件和模块中的表示与静态数据类似。不同之处在于,ELF 要求在段中分配线程局部变量,这些段具有在可重定位文件中设置的 SHF_TLS 标志。ELF 规范要求将段名称 .tdata 和 .tbss 分别用于初始化的和未初始化的线程局部存储。这些段具有读写权限。
在模块中,ELF 要求 TLS 段由 PT_TLS 段类型来指示。该段为只读。PT_TLS 段是 TLS 映像。
线程局部符号的符号类型为 STT_TLS。