This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/21405] Template inlines have global visibility
- From: "cristipp at excite dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Mar 2006 18:32:36 -0000
- Subject: [Bug libstdc++/21405] Template inlines have global visibility
- References: <bug-21405-10578@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #14 from cristipp at excite dot com 2006-03-20 18:32 -------
The problem is not how the dynamic linker treats 'weak' symbols. The problem is
that template originating functions having no version numbers. It just happen
that template originating functions are also marked as weak (if I understand
correctly). In other words, if I have a regular C/C++ function, I can attach
version strings to it, whereas it I have a C++ template function I cannot
attach version strings to it, or more precisely to instances of it. I don't
really care whether symbols are 'weak' or 'strong', I only care of proper
versioning for *all* C++ symbols.
I believe that this situation was clearly described by the original bug
reporter 10 months ago. For some reason nobody seems to acknowledge that there
is a problem, the main line of reasoning so far being that 'C++ standard says
only unique (weak) names are valid'. However, that flies in the face of the
whole synmbol versioning mechanism, weak symbols or not. Afterall, versioning
for symbols was introduced precisely to allow multiple instances of the same
symbol to be valid in a shared object context.
Please feel free to correct me on any g++ internal details on which I am no
expert. However, the root problem is there and is a show-stopper for any
attempt of distributing pre-compiled C++ shared object binaries.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21405