From: Daniel Jacobowitz <drow@mvista.com>
To: David Lecomber <david@streamline-computing.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: Large array printing patch for Fortran
Date: Mon, 15 Sep 2003 15:58:00 -0000 [thread overview]
Message-ID: <20030915155834.GA8599@nevyn.them.org> (raw)
In-Reply-To: <20030910143536.GA23943@streamline-computing.com>
On Wed, Sep 10, 2003 at 03:35:36PM +0100, David Lecomber wrote:
> Resubmitting this (at last) - posted originally in May.
>
> The element printing limit for Fortran arrays is applied only for
> the outer dimension of an array. Consequently, on entering a subroutine
> with an argument of a (say) 1000x1000 array, the frame will take months
> to print, which kind of ruins commands like 'bt', 'info args' etc..
David,
[Assuming that this wasn't reviewed offlist - if so, whoever approved
it, please don't do that.]
Yes, I know that this patch hasn't been reviewed. That's a shame. Nag
the list if you get impatient, but please stop checking things in to
CVS! You're listed as a "Write After Approval" maintainer. If you
can't wait for approval I'll ask to have you removed from that list.
This was on my list to look at this week, when we were sure 6.0 was in
the hole.
>
>
> 2003-09-10 David Lecomber <dsl@sources.redhat.com>
>
> * f-valprint.c: Apply array element printing limits to
> multi-dimensional arrays
>
> Index: f-valprint.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/f-valprint.c,v
> retrieving revision 1.15
> diff -u -p -r1.15 f-valprint.c
> --- f-valprint.c 9 Sep 2003 23:09:37 -0000 1.15
> +++ f-valprint.c 10 Sep 2003 14:26:11 -0000
> @@ -47,7 +47,8 @@ static void f77_print_array (struct type
> enum val_prettyprint);
> static void f77_print_array_1 (int, int, struct type *, char *,
> CORE_ADDR, struct ui_file *, int, int, int,
> - enum val_prettyprint);
> + enum val_prettyprint,
> + int *elts);
> static void f77_create_arrayprint_offset_tbl (struct type *,
> struct ui_file *);
> static void f77_get_dynamic_length_of_aggregate (struct type *);
> @@ -271,31 +272,36 @@ f77_create_arrayprint_offset_tbl (struct
> }
> }
>
> +
> +
> /* Actual function which prints out F77 arrays, Valaddr == address in
> the superior. Address == the address in the inferior. */
> -
> static void
> f77_print_array_1 (int nss, int ndimensions, struct type *type, char *valaddr,
> CORE_ADDR address, struct ui_file *stream, int format,
> - int deref_ref, int recurse, enum val_prettyprint pretty)
> + int deref_ref, int recurse, enum val_prettyprint pretty,
> + int *elts)
> {
> int i;
>
> if (nss != ndimensions)
> {
> - for (i = 0; i < F77_DIM_SIZE (nss); i++)
> + for (i = 0; (i < F77_DIM_SIZE (nss) && (*elts) < print_max); i++)
> {
> fprintf_filtered (stream, "( ");
> f77_print_array_1 (nss + 1, ndimensions, TYPE_TARGET_TYPE (type),
> valaddr + i * F77_DIM_OFFSET (nss),
> address + i * F77_DIM_OFFSET (nss),
> - stream, format, deref_ref, recurse, pretty);
> + stream, format, deref_ref, recurse, pretty, elts);
> fprintf_filtered (stream, ") ");
> }
> + if (*elts >= print_max && i < F77_DIM_SIZE (nss)) {
> + fprintf_filtered (stream, "...");
> + }
> }
> else
> {
> - for (i = 0; (i < F77_DIM_SIZE (nss) && i < print_max); i++)
> + for (i = 0; (i < F77_DIM_SIZE (nss) && (*elts) < print_max); i++, (*elts)++)
> {
> val_print (TYPE_TARGET_TYPE (type),
> valaddr + i * F77_DIM_OFFSET (ndimensions),
> @@ -306,7 +312,7 @@ f77_print_array_1 (int nss, int ndimensi
> if (i != (F77_DIM_SIZE (nss) - 1))
> fprintf_filtered (stream, ", ");
>
> - if (i == print_max - 1)
> + if ((( *elts) == print_max - 1) && (i != (F77_DIM_SIZE (nss) - 1)))
> fprintf_filtered (stream, "...");
> }
> }
> @@ -321,6 +327,7 @@ f77_print_array (struct type *type, char
> enum val_prettyprint pretty)
> {
> int ndimensions;
> + int elts = 0;
>
> ndimensions = calc_f77_array_dims (type);
>
> @@ -335,7 +342,7 @@ f77_print_array (struct type *type, char
> f77_create_arrayprint_offset_tbl (type, stream);
>
> f77_print_array_1 (1, ndimensions, type, valaddr, address, stream, format,
> - deref_ref, recurse, pretty);
> + deref_ref, recurse, pretty, &elts);
> }
> \f
>
>
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
next prev parent reply other threads:[~2003-09-15 15:58 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-09-10 14:36 David Lecomber
2003-09-15 15:58 ` Daniel Jacobowitz [this message]
2003-09-15 20:40 ` David Lecomber
2003-09-15 20:52 ` Daniel Jacobowitz
2003-09-29 17:35 ` David Lecomber
2003-10-06 16:45 ` David Carlton
2003-10-06 16:51 ` Daniel Jacobowitz
2003-10-06 16:56 ` David Carlton
2003-10-06 18:50 ` Andrew Cagney
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20030915155834.GA8599@nevyn.them.org \
--to=drow@mvista.com \
--cc=david@streamline-computing.com \
--cc=gdb-patches@sources.redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox