gdb: add HtabPrinter to gdb-gdb.py.in
authorSimon Marchi <simon.marchi@efficios.com>
Thu, 9 Feb 2023 19:50:56 +0000 (14:50 -0500)
committerSimon Marchi <simon.marchi@efficios.com>
Tue, 28 Feb 2023 16:05:57 +0000 (11:05 -0500)
commit139f66c7287806a50dbee598e194ba869b7955d4
tree2d44997ace353e8cf3224ee8131ab1b4d653aae3
parent0c132dac7f21062f19d47982697f0a223ad430ed
gdb: add HtabPrinter to gdb-gdb.py.in

When debugging GDB, I find it a bit tedious to inspect htab_t objects.
It is possible to find the entries by poking at the fields, but it's
annoying to do each time.  I think a pretty printer would help.  Add a
basic one to gdb-gdb.py.

The pretty printer advertises itself as "array-like", and the result
looks like:

    (top-gdb) p bfcache
    $3 = htab_t with 3 elements = {0x6210003252a0, 0x62100032caa0, 0x62100033baa0}

The htab_t itself doesn't know about the type of pointed objects.  But
it's easy enough to cast the addresses to the right type to use them:

    (top-gdb) print *((btrace_frame_cache *) 0x6210003252a0)
    $6 = {tp = 0x61700002ed80, frame = 0x6210003251e0, bfun = 0x62000000b390}

Change-Id: Ia692e3555fe7a117b7ec087840246b1260a704c6
Reviewed-By: Tom Tromey <tom@tromey.com>
gdb/gdb-gdb.py.in
gdb/testsuite/gdb.gdb/python-helper.exp