This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] Add libstdc++ type printers for class templates
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: Tom Tromey <tromey at redhat dot com>
- Cc: libstdc++ at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org, pmuldoon at redhat dot com
- Date: Tue, 15 Jul 2014 00:50:47 +0100
- Subject: Re: [patch] Add libstdc++ type printers for class templates
- Authentication-results: sourceware.org; auth=none
- References: <20140714142159 dot GF4871 at redhat dot com> <20140714192206 dot GG4871 at redhat dot com> <87y4vv1z0s dot fsf at fleche dot redhat dot com>
On 14/07/14 14:11 -0600, Tom Tromey wrote:
Jonathan> I forgot to say that with these type recognizers we might want to
Jonathan> revisit the output of the existing printers for the containers, so
Jonathan> that instead of:
Jonathan> std::map with 3 elements = { ... }
Jonathan> GDB could print the map type:
Jonathan> std::map<int, int> with 3 elements = { ... }
I think the reason for the brevity right now is just that, even eliding
the defaults, the type names can get rather long. It's not absurd
though, just maybe not always desirable. One possible approach would be
to make a new gdb.Parameter in the libstdc++ code to control it.
I think a parameter would make sense. I can look into that some time.
One part of the patch I wasn't sure about was this, where 'mgr' is a
function pointer:
func = gdb.block_for_pc(int(mgr.cast(gdb.lookup_type('intptr_t'))))
Is there a better way to get a pc from the function pointer?
I tried simply int(mgr) but it didn't work.