summaryrefslogtreecommitdiff
path: root/gdb/cp-abi.h
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2012-03-15 15:43:05 +0000
committerTom Tromey <tromey@redhat.com>2012-03-15 15:43:05 +0000
commitde2f714807e42df981348b72164f60ea71b37543 (patch)
treeae7e2c00a0e61ced4ff299b6b0f03da08a072faf /gdb/cp-abi.h
parent8f255da61a5667b640ee0c5d68d3a5fb380db813 (diff)
downloadgdb-de2f714807e42df981348b72164f60ea71b37543.tar.gz
* 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-abi.h')
-rw-r--r--gdb/cp-abi.h6
1 files changed, 6 insertions, 0 deletions
diff --git a/gdb/cp-abi.h b/gdb/cp-abi.h
index 0f24e9a9753..84514501ff7 100644
--- a/gdb/cp-abi.h
+++ b/gdb/cp-abi.h
@@ -173,6 +173,11 @@ struct value *cplus_method_ptr_to_value (struct value **this_p,
void cplus_make_method_ptr (struct type *type, gdb_byte *CONTENTS,
CORE_ADDR address, int is_virtual);
+/* Print the vtable for VALUE, if there is one. If there is no
+ vtable, print a message, but do not throw. */
+
+void cplus_print_vtable (struct value *value);
+
/* Determine if we are currently in a C++ thunk. If so, get the
address of the routine we are thunking to and continue to there
instead. */
@@ -213,6 +218,7 @@ struct cp_abi_ops
CORE_ADDR, int);
struct value * (*method_ptr_to_value) (struct value **,
struct value *);
+ void (*print_vtable) (struct value *);
CORE_ADDR (*skip_trampoline) (struct frame_info *, CORE_ADDR);
int (*pass_by_reference) (struct type *type);
};