diff options
author | Daniel Jacobowitz <drow@false.org> | 2002-02-04 02:14:46 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2002-02-04 02:14:46 +0000 |
commit | acf5ed49a0160dd452b2004034b847912f23940b (patch) | |
tree | 915285d68d02c2bf49705b5a7fd31042752948fa | |
parent | 493d28d51bca5194de1db46ee372c79de2408975 (diff) | |
download | fsf-binutils-gdb-acf5ed49a0160dd452b2004034b847912f23940b.zip fsf-binutils-gdb-acf5ed49a0160dd452b2004034b847912f23940b.tar.gz fsf-binutils-gdb-acf5ed49a0160dd452b2004034b847912f23940b.tar.bz2 |
2002-02-03 Daniel Jacobowitz <drow@mvista.com>
* c-valprint.c (c_val_print): Pass a proper valaddr to
cp_print_class_method.
* valops.c (search_struct_method): If there is only one method
and args is NULL, return that method.
-rw-r--r-- | gdb/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/c-valprint.c | 8 | ||||
-rw-r--r-- | gdb/valops.c | 35 |
3 files changed, 35 insertions, 15 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 37b4abd..be9fe6d 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,12 @@ 2002-02-03 Daniel Jacobowitz <drow@mvista.com> + * c-valprint.c (c_val_print): Pass a proper valaddr to + cp_print_class_method. + * valops.c (search_struct_method): If there is only one method + and args is NULL, return that method. + +2002-02-03 Daniel Jacobowitz <drow@mvista.com> + * gdbtypes.c (init_simd_type): Use TYPE_TAG_NAME instead of accessing tag_name directly. diff --git a/gdb/c-valprint.c b/gdb/c-valprint.c index c9109f0..c094a17 100644 --- a/gdb/c-valprint.c +++ b/gdb/c-valprint.c @@ -441,8 +441,12 @@ c_val_print (struct type *type, char *valaddr, int embedded_offset, break; case TYPE_CODE_METHOD: - cp_print_class_method (valaddr + embedded_offset, lookup_pointer_type (type), stream); - break; + { + struct value *v = value_at (type, address, NULL); + cp_print_class_method (VALUE_CONTENTS (value_addr (v)), + lookup_pointer_type (type), stream); + break; + } case TYPE_CODE_VOID: fprintf_filtered (stream, "void"); diff --git a/gdb/valops.c b/gdb/valops.c index f211753..6f7e251 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -2274,23 +2274,32 @@ search_struct_method (char *name, struct value **arg1p, if (j > 0 && args == 0) error ("cannot resolve overloaded method `%s': no arguments supplied", name); - while (j >= 0) + else if (j == 0 && args == 0) { if (TYPE_FN_FIELD_STUB (f, j)) check_stub_method (type, i, j); - if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j), - TYPE_FN_FIELD_ARGS (f, j), args)) - { - if (TYPE_FN_FIELD_VIRTUAL_P (f, j)) - return value_virtual_fn_field (arg1p, f, j, type, offset); - if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp) - *static_memfuncp = 1; - v = value_fn_field (arg1p, f, j, type, offset); - if (v != NULL) - return v; - } - j--; + v = value_fn_field (arg1p, f, j, type, offset); + if (v != NULL) + return v; } + else + while (j >= 0) + { + if (TYPE_FN_FIELD_STUB (f, j)) + check_stub_method (type, i, j); + if (!typecmp (TYPE_FN_FIELD_STATIC_P (f, j), + TYPE_FN_FIELD_ARGS (f, j), args)) + { + if (TYPE_FN_FIELD_VIRTUAL_P (f, j)) + return value_virtual_fn_field (arg1p, f, j, type, offset); + if (TYPE_FN_FIELD_STATIC_P (f, j) && static_memfuncp) + *static_memfuncp = 1; + v = value_fn_field (arg1p, f, j, type, offset); + if (v != NULL) + return v; + } + j--; + } } } |