diff options
author | Tom Tromey <tromey@redhat.com> | 2012-03-15 15:43:18 +0000 |
---|---|---|
committer | Tom Tromey <tromey@redhat.com> | 2012-03-15 15:43:18 +0000 |
commit | c4aeac856a297bbcf96e565e5bad277bfcff3c1b (patch) | |
tree | 1ef0a5f09b31976672edd7838604cecb63e1d339 /gdb/cp-support.c | |
parent | 2479f722a449340bcd8465474090339c1e004e9e (diff) | |
download | gdb-c4aeac856a297bbcf96e565e5bad277bfcff3c1b.zip gdb-c4aeac856a297bbcf96e565e5bad277bfcff3c1b.tar.gz gdb-c4aeac856a297bbcf96e565e5bad277bfcff3c1b.tar.bz2 |
* gnu-v3-abi.c (struct value_and_voffset): New.
(hash_value_and_voffset, eq_value_and_voffset)
(compare_value_and_voffset, compute_vtable_size)
(print_one_vtable, gnuv3_print_vtable): New functions.
(init_gnuv3_ops): Initialize 'print_vtable' field.
* cp-support.c (info_vtbl_command): New function.
(_initialize_cp_support): Add "info vtbl".
* cp-abi.h (cplus_print_vtable): Declare.
(struct cp_abi_ops) <print_vtable>: New field.
* cp-abi.c (cplus_print_vtable): New function.
* NEWS: Update.
gdb/testsuite
* gdb.cp/virtfunc.exp (make_one_vtable_result): New proc.
(test_info_vtbl): Likewise.
(do_tests): Call test_info_vtbl.
* gdb.cp/virtfunc.cc (va): New global.
gdb/doc
* gdb.texinfo (Debugging C Plus Plus): Document "info vtbl".
Diffstat (limited to 'gdb/cp-support.c')
-rw-r--r-- | gdb/cp-support.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gdb/cp-support.c b/gdb/cp-support.c index 0620aa7..8d8b69b 100644 --- a/gdb/cp-support.c +++ b/gdb/cp-support.c @@ -34,6 +34,7 @@ #include "exceptions.h" #include "expression.h" #include "value.h" +#include "cp-abi.h" #include "safe-ctype.h" @@ -1563,6 +1564,17 @@ cp_validate_operator (const char *input) return 0; } +/* Implement "info vtable". */ + +static void +info_vtbl_command (char *arg, int from_tty) +{ + struct value *value; + + value = parse_and_eval (arg); + cplus_print_vtable (value); +} + void _initialize_cp_support (void) { @@ -1581,4 +1593,10 @@ _initialize_cp_support (void) first_component_command, _("Print the first class/namespace component of NAME."), &maint_cplus_cmd_list); + + add_info ("vtbl", info_vtbl_command, + _("Show the vtable for a C++ object.\n\ +Usage: info vtbl EXPRESSION\n\ +Evaluate EXPRESSION and display the virtual function table for the\n\ +resulting object.")); } |