下表中列出的 TLS 重定位是针对 x86 定义的。表中的说明使用以下表示法。
在 GOT 中分配两个连续项,以存储 TLS_index 结构。此结构将传递给 ___tls_get_addr()。引用此项的指令将绑定到两个 GOT 项中的第一项。
此重定位将按引用 ___tls_get_addr() 函数的 R_386_PLT32 重定位的处理方式进行处理。
在 GOT 中分配两个连续项,以存储 TLS_index 结构。此结构将传递给 ___tls_get_addr()。TLS_index 的 ti_tlsoffset 字段将设置为 0,并且在运行时填充 ti_moduleid。对 ___tls_get_addr() 的调用将返回动态 TLS 块的起始偏移。
在 GOT 中分配一项,并使用相对于静态 TLS 块的负 tlsoffset 初始化该项。运行时将使用 R_386_TLS_TPOFF 重定位执行此序列。
此表达式类似于 @gotntpoff,但它用在位置相关代码中。在 movl 或 addl 指令中,@gotntpoff 将解析为相对于 GOT 起始位置的 GOT 插槽地址。@indntpoff 将解析为绝对 GOT 插槽地址。
计算相对于静态 TLS 块的负 tlsoffset。
计算相对于 TLS 块的 tlsoffset。此值用作加数的立即值,并且不与特定寄存器关联。
计算包含 TLS 符号的目标文件的标识符。
|