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 | 1c0683b0c9850ec358e3620edabc7a1b8d716437 (patch) | |
tree | d83d1c2e4edaaf982891e5d06cb56737ff3ff012 /gdb/expprint.c | |
parent | 8b3af95e3ed31b3dcf54ca1d3aa5ab12b009acf1 (diff) | |
download | gdb-1c0683b0c9850ec358e3620edabc7a1b8d716437.tar.gz |
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 1d2ce8534ee..a6c13f9e617 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: |