X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ff-typeprint.c;h=920c21fbcf03fc4c61571ba653499b7e96769f3d;hb=c88960d081f0b37ec03c66a13115e2a68e40d1ad;hp=1308a3c1e26d3cab17a77ccfeeb1782a9f5204b0;hpb=3f2f83ddcba5b04389dd3c666ce7d4cace7e5b63;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c index 1308a3c1e2..920c21fbcf 100644 --- a/gdb/f-typeprint.c +++ b/gdb/f-typeprint.c @@ -1,6 +1,6 @@ /* Support for printing Fortran types for GDB, the GNU debugger. - Copyright (C) 1986-2015 Free Software Foundation, Inc. + Copyright (C) 1986-2016 Free Software Foundation, Inc. Contributed by Motorola. Adapted from the C version by Farooq Butt (fmbutt@engage.sps.mot.com). @@ -288,7 +288,7 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show, if ((show <= 0) && (TYPE_NAME (type) != NULL)) { - fputs_filtered (TYPE_NAME (type), stream); + fprintfi_filtered (level, stream, "%s", TYPE_NAME (type)); return; } @@ -308,12 +308,12 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show, case TYPE_CODE_PTR: fprintf_filtered (stream, "PTR TO -> ( "); - f_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level); + f_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level); break; case TYPE_CODE_REF: fprintf_filtered (stream, "REF TO -> ( "); - f_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level); + f_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level); break; case TYPE_CODE_VOID: @@ -364,19 +364,24 @@ f_type_print_base (struct type *type, struct ui_file *stream, int show, else fprintfi_filtered (level, stream, "Type "); fputs_filtered (TYPE_TAG_NAME (type), stream); - fputs_filtered ("\n", stream); - for (index = 0; index < TYPE_NFIELDS (type); index++) + /* According to the definition, + we only print structure elements in case show > 0. */ + if (show > 0) { - f_type_print_base (TYPE_FIELD_TYPE (type, index), stream, show, - level + 4); - fputs_filtered (" :: ", stream); - fputs_filtered (TYPE_FIELD_NAME (type, index), stream); - f_type_print_varspec_suffix (TYPE_FIELD_TYPE (type, index), - stream, 0, 0, 0, 0); fputs_filtered ("\n", stream); - } - fprintfi_filtered (level, stream, "End Type "); - fputs_filtered (TYPE_TAG_NAME (type), stream); + for (index = 0; index < TYPE_NFIELDS (type); index++) + { + f_type_print_base (TYPE_FIELD_TYPE (type, index), stream, + show - 1, level + 4); + fputs_filtered (" :: ", stream); + fputs_filtered (TYPE_FIELD_NAME (type, index), stream); + f_type_print_varspec_suffix (TYPE_FIELD_TYPE (type, index), + stream, show - 1, 0, 0, 0); + fputs_filtered ("\n", stream); + } + fprintfi_filtered (level, stream, "End Type "); + fputs_filtered (TYPE_TAG_NAME (type), stream); + } break; case TYPE_CODE_MODULE: