ZHCADC4A September 2011 – March 2014
在通用和局部动态 TLS 模型中,都会调用函数 __tls_get_addr() 来获取线程局部变量的地址。通用和本地动态 TLS 模型中的模块 id 都是从 GOT 获得的。偏移量是在通用动态模型中从 GOT 获得的,并在局部动态模型中作为静态链接时常量。在弱未定义引用的情况下,没有线程局部定义来解析弱引用。由于没有定义,模块 id 和 TBR 偏移量都解析为零。
对于弱线程局部引用,为访问引用而生成的代码没有变化。如果线程局部引用是弱引用且未定义,则 R_C6000_TLSMOD 重定位和所有 R_C6000_TBR 重定位都解析为零。
模块 id 和偏移量为零时,__tls_get_addr() 函数返回零。这样可确保将未定义的弱引用地址解析为零。