aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog7
-rw-r--r--gdb/c-typeprint.c37
2 files changed, 31 insertions, 13 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5ca3047..2d03f18 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,10 @@
+2003-01-04 Daniel Jacobowitz <drow@mvista.com>
+
+ Suggested by Stewart Brown <sb24@avaya.com>:
+ * c-typeprint.c (c_type_print_varspec_prefix): Pass value of show
+ in recursive calls. Handle TYPE_CODE_TYPEDEF.
+ (c_type_print_varspec_suffix): Likewise.
+
2003-01-04 Mark Kettenis <kettenis@gnu.org>
* configure.in: Don't set and AC_SUBST SUBDIRS.
diff --git a/gdb/c-typeprint.c b/gdb/c-typeprint.c
index fa4683a..e0218a4 100644
--- a/gdb/c-typeprint.c
+++ b/gdb/c-typeprint.c
@@ -216,7 +216,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;
@@ -224,7 +224,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)
@@ -237,7 +237,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, " ");
@@ -247,23 +247,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:
@@ -279,7 +283,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:
/* These types need no prefix. They are listed here so that
gcc -Wall will reveal any types that haven't been handled. */
@@ -543,19 +546,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);
@@ -564,7 +570,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:
@@ -592,7 +599,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;
@@ -611,7 +623,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:
/* These types do not need a suffix. They are listed so that
gcc -Wall will report types that may not have been considered. */