diff options
author | Daniel Jacobowitz <dan@debian.org> | 2002-10-29 03:10:51 +0000 |
---|---|---|
committer | Daniel Jacobowitz <dan@debian.org> | 2002-10-29 03:10:51 +0000 |
commit | d2d769baf3232217161dcfe67c7be0d80f35068c (patch) | |
tree | b29f0f7e79844069c299b28dde9c7107999178df | |
parent | e7e6a6d758fbd14bb6f0490d473d5f0fdd090c72 (diff) | |
download | gdb-d2d769baf3232217161dcfe67c7be0d80f35068c.tar.gz |
* c-typeprint.c (c_type_print_base): Print method qualifiers.
-rw-r--r-- | gdb/ChangeLog.cplus | 4 | ||||
-rw-r--r-- | gdb/c-typeprint.c | 20 |
2 files changed, 24 insertions, 0 deletions
diff --git a/gdb/ChangeLog.cplus b/gdb/ChangeLog.cplus index 07bf6d23590..861c8b37c09 100644 --- a/gdb/ChangeLog.cplus +++ b/gdb/ChangeLog.cplus @@ -1,3 +1,7 @@ +2002-10-28 Daniel Jacobowitz <drow@mvista.com> + + * c-typeprint.c (c_type_print_base): Print method qualifiers. + 2002-10-22 David Carlton <carlton@math.stanford.edu> * Makefile.in (buildsym.o): Depend on $(gdb_assert_h) and diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index 1b8d5106ce4..a0549a05ab7 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -1000,6 +1000,26 @@ c_type_print_base (struct type *type, struct ui_file *stream, int show, method_name, TYPE_FN_FIELD_STATIC_P (f, j), stream); + + /* If the method is const or volatile, this will show up as + a qualifier on the first argument. Handle a missing or + corrupt THIS pointer gracefully, since we shouldn't crash + on corrupt debug information (if we're going to complain + about this it should be in the debug readers, not this + late). */ + if (!TYPE_FN_FIELD_STATIC_P (f, j) + && TYPE_NFIELDS (TYPE_FN_FIELD_TYPE (f, j)) > 0) + { + struct type *method_type, *this_ptr_type, *this_type; + method_type = TYPE_FN_FIELD_TYPE (f, j); + this_ptr_type = TYPE_FIELDS (method_type)[0].type; + if (TYPE_CODE (this_ptr_type) == TYPE_CODE_PTR) + { + this_type = TYPE_TARGET_TYPE (this_ptr_type); + c_type_print_modifier (this_type, stream, 1, 0); + } + } + fprintf_filtered (stream, ";\n"); } } |