diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-02-01 18:56:34 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2011-02-01 18:56:34 +0000 |
commit | 600ea1bed94c3136a765ee8b9694c86e0b90de57 (patch) | |
tree | 4131da43d8997b5326f34037c42daba9050d1d7a /gdb/expprint.c | |
parent | 56c1241406fe9e7e542f30f773ae2678ab8e7055 (diff) | |
download | gdb-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.
Diffstat (limited to 'gdb/expprint.c')
-rw-r--r-- | gdb/expprint.c | 44 |
1 files changed, 44 insertions, 0 deletions
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: |