mangling type_info for local related types

Alain Miniussi alainm at cup.hp.com
Thu Jun 22 00:16:02 UTC 2000


Jim Dehnert wrote:
> 
> > Date: Fri, 26 May 2000 10:54:36 -0700
> > From: Alain Miniussi <alainm at cup.hp.com>
> >
> > By reading the spec, I'am not sure to understand how
> > local types and type_info mangling interfere. It seems that,
> > with the current mangling, we have:
> >
> > struct a_class {};
> >
> > typeid(a_class) -> _ZN6a_classTIE
> 
> yes, except          _ZN7a_classTIE
> 
> > void a_func() {
> >   struct a_class {};
> >   typeid(a_class);   -> _ZZ5a_funcvEN6a_classTIE // local name
> >   typeid(a_class*);  -> _ZNPZ5a_funcvE6a_classTIE // non local
> > };
> >
> > Is that the intended mangling ?
> 
> Similarly, those names have the length wrong (5 instead of correct 6,
> 6 instead of correct 7).
> 
> > Date: Fri, 26 May 2000 14:48:14 -0700
> > From: Alain Miniussi <alainm at cup.hp.com>
> >
> > By the way, I am not sure the current mangling allow to
> > form a pointer to a local struct, only <name> can be local,
> > not <type>, maybe we need a <local-class-enum> production ?
> >
> > <class-enum> ::= <local-class-enum>
> >              ::= ...
> > <local-class-enum> :: Z<function encoding>E<class-enum>[<discriminator>]
> >
> > Also, pointer type are not mentionned in <component-name>.
> 
> Well, it looks to me as if there are a number of issues here.  First,
> just <class-enum-type> is not enough -- couldn't we end up with other
> types as well (e.g. arrays)?

These type (array, pointer etc..) can be considered as modified type
built upon local types. I don't think we need to make the modified
type local.
 
> One possible rule is the following:  Treat all local names as nested
> names, where the first component is the local-name mangling of the
> enclosing function name.  Then typeid(a_func::a_class) becomes:
> 
>         _ZN Z5a_funcvE 6a_class TI E
> 
> This doesn't resolve the question of where to put the P for a pointer
> as in the typeid(a_func::a_class *) example.  Let's talk about the
> issue tomorrow, and likely in two weeks once Alex Samuels has
> distributed the updated description Mark mentioned.
> 
> Jim
> 
> -           Jim Dehnert         dehnert at sgi.com
>                                 (650)933-4272




More information about the cxx-abi-dev mailing list