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

Reply via email to