On Thu, 11 Mar 2021, 18:40 Oleg Smolsky via Gcc-help, <gcc-help@xxxxxxxxxxx> wrote: > Hello! I'm testing a Linux/Linux GCC10 cross-compiler (configured with a > sysroot + glibc 2.33) and hitting a linking issue. One of the OSS > packages I had built before with a simple bootstrapped GCC10 is looking > for this symbol: > > undefined symbol: _ZSt15__once_callable, version GLIBCXX_3.4.11 > > This symbol does not exist in the new libstdc++, and yet I see it in the > old one: > > $ nm /opt/gcc-10/lib64/libstdc++.so.6 | grep callable > 0000000000000018 B _ZSt15__once_callable > > Clearly the new build is not quite the same as the old one... but which > one is correct for Linux/x86-64? And what controls this variance? It > looks like glibc does not have a flag to control TLS any more... > This depends on whether GCC detects TLS support for the target. I would expect TLS to be supported for x86_64-*-linux-gnu, i.e. the old build matches the expected configuration. It's not "wrong" to have a build without TLS (there might be valid reasons to configure things that way) but it's not typical. You should look at why the new GCC thinks your target can't support TLS.