This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: EEEEKS! The mangling changed!
On Dec 1, 2003, Gabriel Dos Reis <gdr@integrable-solutions.net> wrote:
> Alexandre Oliva <aoliva@redhat.com> writes:
> | On Nov 30, 2003, Gabriel Dos Reis <gdr@integrable-solutions.net> wrote:
> |
> | > Not everything in std:: gets resolved to __gnu_norm::. You might want
> | > to consult the documentation relating that work. Things that are
> | > really defined in std are still mangled as before.
> |
> | This is a major issue. When the Standard says something is defined in
> | the ::std:: namespace, it has to be, otherwise template
> | specializations won't work, because they have to be defined in the
> | same namespace as the original template definition.
> Did you take a look at the documentation?
Just did. Thanks for letting me know there was something to be read
:-)
> Template specialization in
> std:: just works as before.
Except that the mangled name is not what one would be entitled to
expect. If the Standard says something is in namespace std, it had
better be, and its name mangling should reflect that, otherwise we're
defeating a major point of the multi-vendor C++ ABI.
Sure enough, templates most often have vague linkage anyway, but one
can't dlopen a shared library containing a strong definition of a
template specialization and use dlsym to obtain that specialization
using the mangling that one could expect from the Standard definition,
something is wrong.
Am I missing anything?
--
Alexandre Oliva Enjoy Guarana', see http://www.ic.unicamp.br/~oliva/
Red Hat GCC Developer aoliva@{redhat.com, gcc.gnu.org}
CS PhD student at IC-Unicamp oliva@{lsd.ic.unicamp.br, gnu.org}
Free Software Evangelist Professional serial bug killer