mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-25 16:57:52 +00:00
* 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".
This commit is contained in:
@@ -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."));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user