Python: gdb.Type.template_argument method issue

Paul_Koning@Dell.com Paul_Koning@Dell.com
Wed Sep 14 19:33:00 GMT 2011


The template_argument method assumes that all template arguments are types.  While that's the most common, other things are also found in the wild.  My C++ book says that the arguments can be integers, enums, pointers, references, or pointer-to-member constant values.  (GCC doesn't want to accept pointers and references, perhaps because it thinks they are relocatable.)

Looking at the code, it appears that the template_argument method will be looking at the demangled type string.  It seems that that's insufficient to sort out exactly what a given template argument is.  For example, if it's an enum, the method will simply see the enum value name, but I don't see how it would know which enum type that is so that doesn't allow it to nail down exactly what we have.

I figure that the thing to do would be to have the method return either a gdb.Type or a gdb.Value, depending on what the template argument is.  But it looks like it needs more detailed knowledge about the template arguments than it has in the current logic, and I don't know enough GDB to know where to look for that. 

Any hints on where to look?

                paul



More information about the Gdb mailing list