Насколько я понимаю, если у меня есть код, содержащий переменную _Thread_local
, и я компилирую его в общую библиотеку, то все обращения к переменной от go до __tls_get_addr()
. Однако, если я скомпилирую его в библиотеку stati c, доступ произойдет без этой функции (на x64 он использовал %fs
).
Мой вопрос: как я могу заставить GCC / Clang использовать __tls_get_addr()
даже в библиотеках stati c?
Компиляция с -fpic
или -fpie
похоже, не работает, как и возиться с extern
или volatile
. Кроме того, я понимаю, что это приведет к снижению производительности, пожалуйста, не просите меня объяснить причины этого вопроса.