segment of thread local storage variable 'variable' changed from 'section name' to '.tls$'
You used #pragma data_seg to put a tls variable in a section not starting with .tls$. For example:
#pragma data_seg(".someseg") __declspec(thread) int i;
Instead, use something similar to this:
#pragma data_seg(".tls$9") __declspec(thread) int i;
The .tls$x section will exist in the object file where __declspec(thread) variables are defined. A .tls section in the EXE or DLL will result from these sections.