http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52189
Bug #: 52189 Summary: [4.7 regression] Relaxed gthreads check breaks Solaris 8/9 symbol versioning Classification: Unclassified Product: gcc Version: 4.7.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: libstdc++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: r...@gcc.gnu.org CC: paolo.carl...@oracle.com Host: *-*-solaris2.[89] Target: *-*-solaris2.[89] Build: *-*-solaris2.[89] As already discussed in http://gcc.gnu.org/ml/gcc-patches/2012-01/msg01163.html the relaxed gthreads check in 4.7 breaks libstdc++ symbol versioning on Solaris 8 and 9 by exposing a considerable set of thread-dependent symbols at the closed version GLIBCXX_3.4.11. I think there are several options to fix this: * Default to --disable-threads on Solaris 8/9 to avoid breaking symbol versioning. That's my current preference, but certainly requires documentation explaining the choice, since it's obviously a pity. * Export them at GLIBCXX_3.4.17 instead *on Solaris*. This has the serious disadvantage that such a Solaris 8/9 binary cannot run on Solaris 10+ which has those symbols at 3.4.11, and Solaris ld.so.1 doesn't support the symbol renaming/aliasing to also export them at 3.4.17, too, even if gld is in use. * Do nothing and let the breakage happen ;-( Rainer