I need to store a unique pointer for every thread that will be accessed through a macro. I thought I should solve this with a singleton and static thread_local std::unique_ptr o
For me it turned out I was linking with -Wl,--image-base,0x14000000
and removing that or changing it to -Wl,--image-base,0x10000000
and the problem went away. No idea what is actually going on here...
I believe I was bumping up into gcc bug 64697 since it was indeed a static thread_local -std=c++11. It worked in 32 bit but not 64? Very odd...gcc 8.2.0 mingw w64 cross compile:
librtmfp.a(IOSocket.o):IOSocket.cpp:(.text+0x46c4): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `TLS init function for Base::ThreadQueue::_PCurrent'
Original hint here.