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: [email protected]
ReportedBy: [email protected]
CC: [email protected]
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