diff options
Diffstat (limited to 'gdb/c-typeprint.c')
-rw-r--r-- | gdb/c-typeprint.c | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c index fa26abc12b4..8642a30f1e0 100644 --- a/gdb/c-typeprint.c +++ b/gdb/c-typeprint.c @@ -1,6 +1,6 @@ /* Support for printing C and C++ types for GDB, the GNU debugger. Copyright 1986, 1988, 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1998, - 1999, 2000, 2001, 2002 + 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of GDB. @@ -217,7 +217,7 @@ c_type_print_varspec_prefix (struct type *type, struct ui_file *stream, switch (TYPE_CODE (type)) { case TYPE_CODE_PTR: - c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1, 1); + c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, show, 1, 1); fprintf_filtered (stream, "*"); c_type_print_modifier (type, stream, 1, need_post_space); break; @@ -225,7 +225,7 @@ c_type_print_varspec_prefix (struct type *type, struct ui_file *stream, case TYPE_CODE_MEMBER: if (passed_a_ptr) fprintf_filtered (stream, "("); - c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, show, 0, 0); fprintf_filtered (stream, " "); name = type_name_no_tag (TYPE_DOMAIN_TYPE (type)); if (name) @@ -238,7 +238,7 @@ c_type_print_varspec_prefix (struct type *type, struct ui_file *stream, case TYPE_CODE_METHOD: if (passed_a_ptr) fprintf_filtered (stream, "("); - c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, show, 0, 0); if (passed_a_ptr) { fprintf_filtered (stream, " "); @@ -248,23 +248,27 @@ c_type_print_varspec_prefix (struct type *type, struct ui_file *stream, break; case TYPE_CODE_REF: - c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0); + c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, show, 1, 0); fprintf_filtered (stream, "&"); c_type_print_modifier (type, stream, 1, need_post_space); break; case TYPE_CODE_FUNC: - c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, show, 0, 0); if (passed_a_ptr) fprintf_filtered (stream, "("); break; case TYPE_CODE_ARRAY: - c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, show, 0, 0); if (passed_a_ptr) fprintf_filtered (stream, "("); break; + case TYPE_CODE_TYPEDEF: + c_type_print_varspec_prefix (TYPE_TARGET_TYPE (type), stream, show, 0, 0); + break; + case TYPE_CODE_UNDEF: case TYPE_CODE_STRUCT: case TYPE_CODE_UNION: @@ -280,7 +284,6 @@ c_type_print_varspec_prefix (struct type *type, struct ui_file *stream, case TYPE_CODE_STRING: case TYPE_CODE_BITSTRING: case TYPE_CODE_COMPLEX: - case TYPE_CODE_TYPEDEF: case TYPE_CODE_TEMPLATE: case TYPE_CODE_NAMESPACE: /* These types need no prefix. They are listed here so that @@ -545,19 +548,22 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream, / TYPE_LENGTH (TYPE_TARGET_TYPE (type)))); fprintf_filtered (stream, "]"); - c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show, + 0, 0); break; case TYPE_CODE_MEMBER: if (passed_a_ptr) fprintf_filtered (stream, ")"); - c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show, + 0, 0); break; case TYPE_CODE_METHOD: if (passed_a_ptr) fprintf_filtered (stream, ")"); - c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 0, 0); + c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show, + 0, 0); if (passed_a_ptr) { c_type_print_args (type, stream); @@ -566,7 +572,8 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream, case TYPE_CODE_PTR: case TYPE_CODE_REF: - c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, 1, 0); + c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show, + 1, 0); break; case TYPE_CODE_FUNC: @@ -594,7 +601,12 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream, } fprintf_filtered (stream, ")"); } - c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, 0, + c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show, + passed_a_ptr, 0); + break; + + case TYPE_CODE_TYPEDEF: + c_type_print_varspec_suffix (TYPE_TARGET_TYPE (type), stream, show, passed_a_ptr, 0); break; @@ -613,7 +625,6 @@ c_type_print_varspec_suffix (struct type *type, struct ui_file *stream, case TYPE_CODE_STRING: case TYPE_CODE_BITSTRING: case TYPE_CODE_COMPLEX: - case TYPE_CODE_TYPEDEF: case TYPE_CODE_TEMPLATE: case TYPE_CODE_NAMESPACE: /* These types do not need a suffix. They are listed so that |