This is an experiment in versioning the vague parts of libstdc++. It is
apparent that some kind of control over weak symbols is necessary for accurate
versioning of C++ constructs WRT shared libraries.

To that end, the obvious point of influence is the namespace name itself, since
it is part of the mangled symbol name. 

When trying to version with namespace names, there are a couple of problems.
See Sutter, N1344 for more details and a general problem statement. There
appear to be two general solutions.

One, relax specialization rules WRT declared namespace. Motivations for the
current rules appear somewhat vague, but are best described here:

http://gcc.gnu.org/ml/libstdc++/2005-09/msg00081.html

Two, invent a mechanism to allow lookup and specialization. This was done for
g++ as part of the debug mode work, and is called namespace association.

This patch uses approach two. This was anticipated and discussed as part of the
Kona discussion, and was also subject of a paper at last year's GCC summit.

There are a couple of outstanding issues with this patch.

1) --disable-symvers for the time being

2) ext, "C" headers, and libsupc++ bits need to be thought through

3) longstanding issues with things like std::swap, see other PR's

4) new issues with mainline. See attached for problem statement.

This bug report is really just a convenience for me.


-- 
           Summary: versioning weak symbols in libstdc++
           Product: gcc
           Version: 4.1.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: libstdc++
        AssignedTo: bkoz at gcc dot gnu dot org
        ReportedBy: bkoz at gcc dot gnu dot org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24660

Reply via email to