forked from Imagelibrary/binutils-gdb
* 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.
This commit is contained in:
@@ -538,16 +538,16 @@ cp_find_class_member (struct type **domain_p, int *fieldno,
|
||||
}
|
||||
|
||||
void
|
||||
cp_print_class_member (const gdb_byte *valaddr, struct type *domain,
|
||||
cp_print_class_member (const gdb_byte *valaddr, struct type *type,
|
||||
struct ui_file *stream, char *prefix)
|
||||
{
|
||||
/* VAL is a byte offset into the structure type DOMAIN.
|
||||
Find the name of the field for that offset and
|
||||
print it. */
|
||||
struct type *domain = TYPE_DOMAIN_TYPE (type);
|
||||
LONGEST val = extract_signed_integer (valaddr, TYPE_LENGTH (type));
|
||||
unsigned int fieldno;
|
||||
|
||||
LONGEST val = unpack_long (builtin_type_long, valaddr);
|
||||
|
||||
/* Pointers to data members are usually byte offsets into an object.
|
||||
Because a data member can have offset zero, and a NULL pointer to
|
||||
member must be distinct from any valid non-NULL pointer to
|
||||
|
||||
Reference in New Issue
Block a user