aboutsummaryrefslogtreecommitdiff
path: root/gdb/cp-abi.c
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2008-09-11 14:24:28 +0000
committerUlrich Weigand <uweigand@de.ibm.com>2008-09-11 14:24:28 +0000
commitad4820ab42603b59ee496405ce0baa7276a0f537 (patch)
treec1f541d5b64e7c4e33f4ee3f61385f6a1e60e440 /gdb/cp-abi.c
parent5ed92fa89a78886c28ecf48a5debdd6a1513bdbf (diff)
downloadbinutils-ad4820ab42603b59ee496405ce0baa7276a0f537.zip
binutils-ad4820ab42603b59ee496405ce0baa7276a0f537.tar.gz
binutils-ad4820ab42603b59ee496405ce0baa7276a0f537.tar.bz2
* cp-abi.h (cplus_method_ptr_size): Add TO_TYPE parameter.
(cplus_make_method_ptr): Add TYPE parameter. * cp-abi.c (cplus_method_ptr_size): Add TO_TYPE parameter. Pass it on to current_cp_abi.method_ptr_size callback. (cplus_make_method_ptr): Add TYPE parameter. Pass it on to current_cp_abi.make_method_ptr callback. * gdbtypes.c (lookup_methodptr_type): Pass target type argument to cplus_method_ptr_size. * valops.c (value_cast): Pass type argument to cplus_make_method_ptr. (value_struct_elt_for_reference): Likewise. * gnu-v3-abi.c (get_class_arch): New function. (vtable_address_point_offset): Add GDBARCH parameter. Use it instead of current_gdbarch. Update all callers. (gnuv3_get_vtable): Likewise. (gnuv3_get_virtual_fn): Likewise. (gnuv3_decode_method_ptr): Likewise. (gnuv3_rtti_type): Call get_class_arch to determine architecture. Use it instead of current_gdbarch. (gnuv3_virtual_fn_field): Likewise. (gnuv3_baseclass_offset): Likewise. (gnuv3_print_method_ptr): Likewise. (gnuv3_method_ptr_to_value): Likewise. (gnuv3_method_ptr_size): Add TYPE parameter. Use it to determine class architecture. Use architecture types instead of builtin types. (gnuv3_make_method_ptr): Likewise. * cp-valprint.c (cp_print_class_member): Expect pointer type instead of class type. Use its length when extracting value. * c-valprint.c (c_val_print): Update call to cp_print_class_member.
Diffstat (limited to 'gdb/cp-abi.c')
-rw-r--r--gdb/cp-abi.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gdb/cp-abi.c b/gdb/cp-abi.c
index 250f64b..b87072a 100644
--- a/gdb/cp-abi.c
+++ b/gdb/cp-abi.c
@@ -113,19 +113,20 @@ cplus_print_method_ptr (const gdb_byte *contents, struct type *type,
}
int
-cplus_method_ptr_size (void)
+cplus_method_ptr_size (struct type *to_type)
{
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) ();
+ return (*current_cp_abi.method_ptr_size) (to_type);
}
void
-cplus_make_method_ptr (gdb_byte *contents, CORE_ADDR value, int is_virtual)
+cplus_make_method_ptr (struct type *type, 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);
+ (*current_cp_abi.make_method_ptr) (type, contents, value, is_virtual);
}
CORE_ADDR