summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2002-10-29 03:10:51 +0000
committerDaniel Jacobowitz <dan@debian.org>2002-10-29 03:10:51 +0000
commitd2d769baf3232217161dcfe67c7be0d80f35068c (patch)
treeb29f0f7e79844069c299b28dde9c7107999178df
parente7e6a6d758fbd14bb6f0490d473d5f0fdd090c72 (diff)
downloadgdb-d2d769baf3232217161dcfe67c7be0d80f35068c.tar.gz
* c-typeprint.c (c_type_print_base): Print method qualifiers.
-rw-r--r--gdb/ChangeLog.cplus4
-rw-r--r--gdb/c-typeprint.c20
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");
}
}