From e9e79dd9fc61097942b74f385503cda31ca39127 Mon Sep 17 00:00:00 2001 From: Fred Fish Date: Wed, 12 Dec 2001 02:07:12 +0000 Subject: [PATCH] Approved by Jim Blandy: 2001-12-11 Fred Fish * gdbtypes.c (print_bound_type): New function. (recursive_dump_type): Print type struct code values TYPE_CODE_BITSTRING, TYPE_CODE_COMPLEX, TYPE_CODE_TEMPLATE, and TYPE_CODE_TEMPLATE_ARG. (recursive_dump_type): Print type struct members upper_bound_type, lower_bound_type, cv_type, and as_type. Also always print the tagname member, even when it is NULL. * testsuite/gdb.base/maint.exp: Update to match changes in type dumping code. --- gdb/ChangeLog | 10 +++++ gdb/gdbtypes.c | 66 ++++++++++++++++++++++++++++---- gdb/testsuite/ChangeLog | 4 ++ gdb/testsuite/gdb.base/maint.exp | 2 +- 4 files changed, 74 insertions(+), 8 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3568f109a41..ee86924cfb9 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2001-12-11 Fred Fish + + * gdbtypes.c (print_bound_type): New function. + (recursive_dump_type): Print type struct code values + TYPE_CODE_BITSTRING, TYPE_CODE_COMPLEX, TYPE_CODE_TEMPLATE, + and TYPE_CODE_TEMPLATE_ARG. + (recursive_dump_type): Print type struct members + upper_bound_type, lower_bound_type, cv_type, and as_type. + Also always print the tagname member, even when it is NULL. + 2001-12-11 Michael Snyder * d10v-tdep.c (d10v_register_virtual_size): Delete. diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 9a276d30cc2..a46f9ce51a6 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -2711,6 +2711,35 @@ print_cplus_stuff (struct type *type, int spaces) } } +static void +print_bound_type (int bt) +{ + switch (bt) + { + case BOUND_CANNOT_BE_DETERMINED: + printf_filtered ("(BOUND_CANNOT_BE_DETERMINED)"); + break; + case BOUND_BY_REF_ON_STACK: + printf_filtered ("(BOUND_BY_REF_ON_STACK)"); + break; + case BOUND_BY_VALUE_ON_STACK: + printf_filtered ("(BOUND_BY_VALUE_ON_STACK)"); + break; + case BOUND_BY_REF_IN_REG: + printf_filtered ("(BOUND_BY_REF_IN_REG)"); + break; + case BOUND_BY_VALUE_IN_REG: + printf_filtered ("(BOUND_BY_VALUE_IN_REG)"); + break; + case BOUND_SIMPLE: + printf_filtered ("(BOUND_SIMPLE)"); + break; + default: + printf_filtered ("(unknown bound type)"); + break; + } +} + static struct obstack dont_print_type_obstack; void @@ -2751,13 +2780,10 @@ recursive_dump_type (struct type *type, int spaces) TYPE_NAME (type) ? TYPE_NAME (type) : ""); gdb_print_host_address (TYPE_NAME (type), gdb_stdout); printf_filtered (")\n"); - if (TYPE_TAG_NAME (type) != NULL) - { - printfi_filtered (spaces, "tagname '%s' (", - TYPE_TAG_NAME (type)); - gdb_print_host_address (TYPE_TAG_NAME (type), gdb_stdout); - printf_filtered (")\n"); - } + printfi_filtered (spaces, "tagname '%s' (", + TYPE_TAG_NAME (type) ? TYPE_TAG_NAME (type) : ""); + gdb_print_host_address (TYPE_TAG_NAME (type), gdb_stdout); + printf_filtered (")\n"); printfi_filtered (spaces, "code 0x%x ", TYPE_CODE (type)); switch (TYPE_CODE (type)) { @@ -2800,6 +2826,9 @@ recursive_dump_type (struct type *type, int spaces) case TYPE_CODE_STRING: printf_filtered ("(TYPE_CODE_STRING)"); break; + case TYPE_CODE_BITSTRING: + printf_filtered ("(TYPE_CODE_BITSTRING)"); + break; case TYPE_CODE_ERROR: printf_filtered ("(TYPE_CODE_ERROR)"); break; @@ -2818,15 +2847,32 @@ recursive_dump_type (struct type *type, int spaces) case TYPE_CODE_BOOL: printf_filtered ("(TYPE_CODE_BOOL)"); break; + case TYPE_CODE_COMPLEX: + printf_filtered ("(TYPE_CODE_COMPLEX)"); + break; case TYPE_CODE_TYPEDEF: printf_filtered ("(TYPE_CODE_TYPEDEF)"); break; + case TYPE_CODE_TEMPLATE: + printf_filtered ("(TYPE_CODE_TEMPLATE)"); + break; + case TYPE_CODE_TEMPLATE_ARG: + printf_filtered ("(TYPE_CODE_TEMPLATE_ARG)"); + break; default: printf_filtered ("(UNKNOWN TYPE CODE)"); break; } puts_filtered ("\n"); printfi_filtered (spaces, "length %d\n", TYPE_LENGTH (type)); + printfi_filtered (spaces, "upper_bound_type 0x%x ", + TYPE_ARRAY_UPPER_BOUND_TYPE (type)); + print_bound_type (TYPE_ARRAY_UPPER_BOUND_TYPE (type)); + puts_filtered ("\n"); + printfi_filtered (spaces, "lower_bound_type 0x%x ", + TYPE_ARRAY_LOWER_BOUND_TYPE (type)); + print_bound_type (TYPE_ARRAY_LOWER_BOUND_TYPE (type)); + puts_filtered ("\n"); printfi_filtered (spaces, "objfile "); gdb_print_host_address (TYPE_OBJFILE (type), gdb_stdout); printf_filtered ("\n"); @@ -2843,6 +2889,12 @@ recursive_dump_type (struct type *type, int spaces) printfi_filtered (spaces, "reference_type "); gdb_print_host_address (TYPE_REFERENCE_TYPE (type), gdb_stdout); printf_filtered ("\n"); + printfi_filtered (spaces, "cv_type "); + gdb_print_host_address (TYPE_CV_TYPE (type), gdb_stdout); + printf_filtered ("\n"); + printfi_filtered (spaces, "as_type "); + gdb_print_host_address (TYPE_AS_TYPE (type), gdb_stdout); + printf_filtered ("\n"); printfi_filtered (spaces, "flags 0x%x", TYPE_FLAGS (type)); if (TYPE_UNSIGNED (type)) { diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6b1e36747fb..3606b562d85 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2001-12-10 Fred Fish + + * gdb.base/maint.exp: Update to match changes in type dumping code. + 2001-12-10 Jim Blandy * gdb.asm/asm-source.exp (info symbol): Anchor the pattern diff --git a/gdb/testsuite/gdb.base/maint.exp b/gdb/testsuite/gdb.base/maint.exp index a4bafe52ea1..145f71d3278 100644 --- a/gdb/testsuite/gdb.base/maint.exp +++ b/gdb/testsuite/gdb.base/maint.exp @@ -345,7 +345,7 @@ set timeout $old_timeout send_gdb "maint print type argc\n" gdb_expect { - -re "type node $hex\r\nname .int. \\($hex\\)\r\ncode $hex \\(TYPE_CODE_INT\\)\r\nlength \[24\]\r\nobjfile $hex\r\ntarget_type $hex\r\npointer_type $hex\r\nreference_type $hex\r\nflags $hex\r\nnfields 0 $hex\r\nvptr_basetype $hex\r\nvptr_fieldno -1\r\ntype_specific $hex\r\n$gdb_prompt $"\ + -re "type node $hex\r\nname .int. \\($hex\\)\r\ntagname .. \\($hex\\)\r\ncode $hex \\(TYPE_CODE_INT\\)\r\nlength \[24\]\r\nupper_bound_type $hex \\(BOUND_SIMPLE\\)\r\nlower_bound_type $hex \\(BOUND_SIMPLE\\)\r\nobjfile $hex\r\ntarget_type $hex\r\npointer_type $hex\r\nreference_type $hex\r\ncv_type $hex\r\nas_type $hex\r\nflags $hex\r\nnfields 0 $hex\r\nvptr_basetype $hex\r\nvptr_fieldno -1\r\ntype_specific $hex\r\n$gdb_prompt $"\ { pass "maint print type" } -re ".*$gdb_prompt $" { fail "maint print type" } timeout { fail "(timeout) maint print type" } -- 2.30.2