aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kratochvil <jan.kratochvil@redhat.com>2011-02-01 18:56:34 +0000
committerJan Kratochvil <jan.kratochvil@redhat.com>2011-02-01 18:56:34 +0000
commit600ea1bed94c3136a765ee8b9694c86e0b90de57 (patch)
tree4131da43d8997b5326f34037c42daba9050d1d7a
parent56c1241406fe9e7e542f30f773ae2678ab8e7055 (diff)
downloadgdb-600ea1bed94c3136a765ee8b9694c86e0b90de57.zip
gdb-600ea1bed94c3136a765ee8b9694c86e0b90de57.tar.gz
gdb-600ea1bed94c3136a765ee8b9694c86e0b90de57.tar.bz2
gdb/
Fix debug printing of TYPE_INSTANCE. * expprint.c (print_subexp_standard) <TYPE_INSTANCE>: New. (dump_subexp_body_standard) <TYPE_INSTANCE>: New.
-rw-r--r--gdb/ChangeLog6
-rw-r--r--gdb/expprint.c44
2 files changed, 50 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f68051c..84013cb 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,11 @@
2011-02-01 Jan Kratochvil <jan.kratochvil@redhat.com>
+ Fix debug printing of TYPE_INSTANCE.
+ * expprint.c (print_subexp_standard) <TYPE_INSTANCE>: New.
+ (dump_subexp_body_standard) <TYPE_INSTANCE>: New.
+
+2011-02-01 Jan Kratochvil <jan.kratochvil@redhat.com>
+
Fix debug printing of BINOP_IN, OP_OBJC_MSGCALL,
OP_F77_UNDETERMINED_ARGLIST, OP_COMPLEX, OP_OBJC_SELECTOR, OP_NAME,
OP_OBJC_NSSTRING, OP_F90_RANGE and OP_DECFLOAT.
diff --git a/gdb/expprint.c b/gdb/expprint.c
index 1d2ce85..a6c13f9 100644
--- a/gdb/expprint.c
+++ b/gdb/expprint.c
@@ -534,6 +534,27 @@ print_subexp_standard (struct expression *exp, int *pos,
fprintf_unfiltered (stream, ")");
return;
+ case TYPE_INSTANCE:
+ {
+ LONGEST count = exp->elts[pc + 1].longconst;
+
+ /* The COUNT. */
+ (*pos)++;
+ fputs_unfiltered ("TypesInstance(", stream);
+ while (count-- > 0)
+ {
+ type_print (exp->elts[(*pos)++].type, "", stream, 0);
+ if (count > 0)
+ fputs_unfiltered (",", stream);
+ }
+ fputs_unfiltered (",", stream);
+ /* Ending COUNT and ending TYPE_INSTANCE. */
+ (*pos) += 2;
+ print_subexp (exp, pos, stream, PREC_PREFIX);
+ fputs_unfiltered (")", stream);
+ return;
+ }
+
/* Default ops */
default:
@@ -937,6 +958,29 @@ dump_subexp_body_standard (struct expression *exp,
elt += 4 + BYTES_TO_EXP_ELEM (len + 1);
}
break;
+ case TYPE_INSTANCE:
+ {
+ char *elem_name;
+ LONGEST len;
+
+ len = exp->elts[elt++].longconst;
+ fprintf_filtered (stream, "%s TypeInstance: ", plongest (len));
+ while (len-- > 0)
+ {
+ fprintf_filtered (stream, "Type @");
+ gdb_print_host_address (exp->elts[elt].type, stream);
+ fprintf_filtered (stream, " (");
+ type_print (exp->elts[elt].type, NULL, stream, 0);
+ fprintf_filtered (stream, ")");
+ elt++;
+ if (len > 0)
+ fputs_filtered (", ", stream);
+ }
+ /* Ending LEN and ending TYPE_INSTANCE. */
+ elt += 2;
+ elt = dump_subexp (exp, stream, elt);
+ }
+ break;
default:
case OP_NULL:
case MULTI_SUBSCRIPT: