From: Nick Roberts <nickrob@snap.net.nz>
To: Daniel Jacobowitz <drow@false.org>
Cc: gdb-patches@sources.redhat.com
Subject: Re: PATCH: Start Fortran support for variable objects.
Date: Thu, 30 Jun 2005 22:21:00 -0000 [thread overview]
Message-ID: <17092.28833.284587.118362@farnswood.snap.net.nz> (raw)
In-Reply-To: <20050630131809.GB8241@nevyn.them.org>
Daniel Jacobowitz writes:
> On Thu, Jun 30, 2005 at 09:29:16AM +1200, Nick Roberts wrote:
> > ! vlang_unknown = 0, vlang_c, vlang_cplus, vlang_java, vlang_fortran,
> > ! vlang_end
>
> Extra space before vlang_fortran.
OK
...
> > --- 727,742 ----
> > /* Mark as the end in case we bail out */
> > *((*childlist) + i) = NULL;
> >
> > + if (variable_language (var) == vlang_fortran)
> > + j = i + 1;
> > + else
> > + j = i;
> > +
> > /* check if child exists, if not create */
> > ! name = name_of_child (var, j);
> > child = child_exists (var, name);
> > if (child == NULL)
> > ! child = create_child (var, j, name);
> >
> > *((*childlist) + i) = child;
> > }
>
> Do you think you should use f77_get_dynamic_lowerbound? See eval.c,
> under multi_f77_subscript.
As in the patch below? I don't understand the extra cases it appears to
cover, but it worked for the tests I tried.
Nick
*** varobj.c.~1.54.~ 2005-06-29 00:28:57.000000000 +1200
--- varobj.c 2005-07-01 10:06:44.000000000 +1200
***************
*** 23,28 ****
--- 23,29 ----
#include "expression.h"
#include "frame.h"
#include "language.h"
+ #include "f-lang.h"
#include "wrapper.h"
#include "gdbcmd.h"
***************
*** 46,52 ****
{ "natural", "binary", "decimal", "hexadecimal", "octal" };
/* String representations of gdb's known languages */
! char *varobj_language_string[] = { "unknown", "C", "C++", "Java" };
/* Data structures */
--- 47,53 ----
{ "natural", "binary", "decimal", "hexadecimal", "octal" };
/* String representations of gdb's known languages */
! char *varobj_language_string[] = { "unknown", "C", "C++", "Java", "Fortran" };
/* Data structures */
***************
*** 372,377 ****
--- 373,390 ----
java_type_of_child,
java_variable_editable,
java_value_of_variable}
+ ,
+ /* Fortran */
+ {
+ vlang_fortran,
+ c_number_of_children,
+ c_name_of_variable,
+ c_name_of_child,
+ c_value_of_root,
+ c_value_of_child,
+ c_type_of_child,
+ c_variable_editable,
+ c_value_of_variable}
};
/* A little convenience enum for dealing with C++/Java */
***************
*** 696,702 ****
{
struct varobj *child;
char *name;
! int i;
/* sanity check: have we been passed a pointer? */
if (childlist == NULL)
--- 709,716 ----
{
struct varobj *child;
char *name;
! int lower_bound;
! int i, j, retcode;
/* sanity check: have we been passed a pointer? */
if (childlist == NULL)
***************
*** 715,725 ****
/* Mark as the end in case we bail out */
*((*childlist) + i) = NULL;
/* check if child exists, if not create */
! name = name_of_child (var, i);
child = child_exists (var, name);
if (child == NULL)
! child = create_child (var, i, name);
*((*childlist) + i) = child;
}
--- 729,750 ----
/* Mark as the end in case we bail out */
*((*childlist) + i) = NULL;
+ if (variable_language (var) == vlang_fortran)
+ {
+ retcode = f77_get_dynamic_lowerbound (var->type, &lower_bound);
+ if (retcode == BOUND_FETCH_ERROR)
+ error (_("Cannot obtain valid array lower bound"));
+ else
+ j = i + lower_bound;
+ }
+ else
+ j = i;
+
/* check if child exists, if not create */
! name = name_of_child (var, j);
child = child_exists (var, name);
if (child == NULL)
! child = create_child (var, j, name);
*((*childlist) + i) = child;
}
***************
*** 1564,1570 ****
case language_java:
lang = vlang_java;
break;
! }
return lang;
}
--- 1589,1598 ----
case language_java:
lang = vlang_java;
break;
! case language_fortran:
! lang = vlang_fortran;
! break;
! }
return lang;
}
next prev parent reply other threads:[~2005-06-30 22:21 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-06-29 21:28 Nick Roberts
2005-06-30 2:53 ` Daniel Jacobowitz
2005-06-30 9:28 ` Nick Roberts
2005-06-30 13:15 ` Daniel Jacobowitz
2005-06-30 22:21 ` Nick Roberts
2005-06-30 22:23 ` Daniel Jacobowitz
2005-06-30 13:18 ` Daniel Jacobowitz
2005-06-30 22:21 ` Nick Roberts [this message]
2005-07-01 3:35 ` Wu Zhou
2005-07-01 5:04 ` Nick Roberts
2005-07-01 12:00 ` Wu Zhou
2005-07-03 16:17 ` Daniel Jacobowitz
2005-07-03 23:40 ` Nick Roberts
2005-07-03 23:47 ` Daniel Jacobowitz
2005-07-04 1:42 ` Nick Roberts
2005-07-04 3:49 ` Daniel Jacobowitz
2005-07-04 7:35 ` Nick Roberts
2005-07-05 3:43 ` Nick Roberts
2006-03-13 14:08 ` Nick Roberts
2006-03-24 22:58 ` Daniel Jacobowitz
2006-03-27 1:25 ` Nick Roberts
2006-03-27 4:04 ` Daniel Jacobowitz
2006-03-27 4:24 ` Nick Roberts
2006-03-27 11:32 ` Daniel Jacobowitz
2005-07-06 8:31 ` Wu Zhou
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=17092.28833.284587.118362@farnswood.snap.net.nz \
--to=nickrob@snap.net.nz \
--cc=drow@false.org \
--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