强制GCCClang总是发出对__tls_get_addr的调用。

问题描述 投票:0回答:0

根据我的理解,如果我有一些代码,其中包含一个 _Thread_local 变量,并将其编译到一个共享库中,那么所有对变量的访问都要经过 __tls_get_addr(). 然而,如果我把它编译成一个静态库,访问就会在没有该函数的情况下发生(在x64上,它使用的是 %fs).

我的问题是 我怎样才能强迫GCCClang使用 __tls_get_addr() 即使是在静态库中?

编译时使用 -fpic-fpie 似乎并不奏效。externvolatile. 另外,我明白这样做会导致性能下降,请不要让我证明这个问题背后的原因。

c gcc clang thread-local thread-local-storage
© www.soinside.com 2019 - 2024. All rights reserved.