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