TYPE_VPTR_BASETYPE and TYPE_DOMAIN_TYPE
Daniel Jacobowitz
drow@mvista.com
Thu Aug 22 13:46:00 GMT 2002
On Thu, Aug 22, 2002 at 01:38:25PM -0700, David Carlton wrote:
> What's the deal with TYPE_VPTR_BASETYPE and TYPE_DOMAIN_TYPE being the
> same thing? Did struct main_type once contain two different members
> that got merged? It seems like a potential source of confusion right
> now (it certainly slowed me down when tracking down a recent bug).
>
> It seems like there are two obvious fixes. If we're not planning to
> split them back apart in the near future, then either
> TYPE_VPTR_BASETYPE or TYPE_DOMAIN_TYPE should be elimininated. If we
> want to leave open the possibility of splitting them back apart,
> however, then the comment before the definition of the vptr_basetype
> field should be emended to say when you're supposed to use
> TYPE_VPTR_BASETYPE to access it and when you're supposed to use
> TYPE_DOMAIN_TYPE to access it. (And, of course, all uses should be
> checked to make sure they follow that recommendation.)
>
> I'd be happy to make either of those changes, if people agree that one
> of them is a good idea.
As I understand it TYPE_DOMAIN_TYPE applies to methods, but
TYPE_VPTR_BASETYPE definitely only has meaning for structures.
Probably just the comment needs to be updated. Now it's:
For types that are pointer to member types (TYPE_CODE_MEMBER),
VPTR_BASETYPE is the type that this pointer is a member of.
For method types (TYPE_CODE_METHOD), VPTR_BASETYPE is the aggregate
type that contains the method.
Can you think of any time where having both would be useful?
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
More information about the Gdb
mailing list