Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
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;
  }


  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