diff options
Diffstat (limited to 'gdb/cp-abi.c')
-rw-r--r-- | gdb/cp-abi.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/gdb/cp-abi.c b/gdb/cp-abi.c index af35dd8..7dad2b7 100644 --- a/gdb/cp-abi.c +++ b/gdb/cp-abi.c @@ -1,6 +1,6 @@ /* Generic code for supporting multiple C++ ABI's - Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc. This file is part of GDB. @@ -95,6 +95,39 @@ value_rtti_type (struct value *v, int *full, int *top, int *using_enc) return (*current_cp_abi.rtti_type) (v, full, top, using_enc); } +void +cplus_print_method_ptr (const gdb_byte *contents, struct type *type, + struct ui_file *stream) +{ + if (current_cp_abi.print_method_ptr == NULL) + error (_("GDB does not support pointers to methods on this target")); + (*current_cp_abi.print_method_ptr) (contents, type, stream); +} + +int +cplus_method_ptr_size (void) +{ + if (current_cp_abi.method_ptr_size == NULL) + error (_("GDB does not support pointers to methods on this target")); + return (*current_cp_abi.method_ptr_size) (); +} + +void +cplus_make_method_ptr (gdb_byte *contents, CORE_ADDR value, int is_virtual) +{ + if (current_cp_abi.make_method_ptr == NULL) + error (_("GDB does not support pointers to methods on this target")); + (*current_cp_abi.make_method_ptr) (contents, value, is_virtual); +} + +struct value * +cplus_method_ptr_to_value (struct value **this_p, struct value *method_ptr) +{ + if (current_cp_abi.method_ptr_to_value == NULL) + error (_("GDB does not support pointers to methods on this target")); + return (*current_cp_abi.method_ptr_to_value) (this_p, method_ptr); +} + /* Set the current C++ ABI to SHORT_NAME. */ static int |