This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patch to add relative stack level support to stack-select-frameMIcommand


On Thu, 25 Jul 2002 19:05:46 -0400
Andrew Cagney <ac131313@ges.redhat.com> wrote:

> > This patch is for the CVS HEAD, it includes patches for
> > the docs and the testsuite.
> 
> Can you post a patch just describing proposed new syntax gdb@  if no one 
> jumps we'll go through with this.

Will do.

> > +void
> > +up_silently_command_wrapper (char *count_exp) {
> > +  up_silently_command(count_exp, 1 /* unused */);
> > +}
> > +
> 
> Coding, brace on new line.  Space before lparen.

Doh. I have appended a new patch to fix that along with
the other things you mentioned.

> >  Change the current frame.  Select a different frame @var{framenum} on
> > -the stack.
> > +the stack. If prefixed by a '+' or '-' character, the @var{framenum}
> > +is interpreted as an offset from the current frame.
> 
> Can this be expanded.  Clarify the direction that +/- go in.  -1 towards 
> the inner most frame, +1 towards the outer most frame.

I have attempted to address this in the appended patch.

> What does:
> 
> -stack-select-frame 0
> -stack-select-frame -1

It would generate an error, same as the down command.

> >  -stack-select-frame 2
> > +^done
> > +-stack-select-frame -1
> >  ^done
> 
> Suggest printing the current frame here.

That might be a good idea, but it would break compatibility with
earlier versions.

...

> > +    mi_gdb_test "232-stack-select-frame +1" \
> > +	    "232\\^done" \
> > +                "stack select frame +1"
> > +
> 
> Can these check that the frame went in the right direction.
> 
> Hmm, nope, I'll post something to gdb@

No, I posted another patch that would implement a stack-info-frame
command, but it is a separate issue.


Here is the updated patch:

2002-07-25  Mo DeJong  <supermo@bayarea.net>

	* stack.c (up_silently_command_wrapper,
	down_silently_command_wrapper): Add wrappers for up
	and down commands for use in mi/mi-cmd-stack.c.

Index: stack.c
===================================================================
RCS file: /cvs/src/src/gdb/stack.c,v
retrieving revision 1.40
diff -u -r1.40 stack.c
--- stack.c	11 Jul 2002 19:29:08 -0000	1.40
+++ stack.c	26 Jul 2002 02:43:32 -0000
@@ -1676,6 +1676,12 @@
   select_frame (fi);
 }
 
+void
+up_silently_command_wrapper (char *count_exp)
+{
+  up_silently_command (count_exp, 1 /* unused */);
+}
+
 static void
 up_silently_command (char *count_exp, int from_tty)
 {
@@ -1719,6 +1725,12 @@
     }
 
   select_frame (frame);
+}
+
+void
+down_silently_command_wrapper (char *count_exp)
+{
+  down_silently_command (count_exp, 1 /* unused */);
 }
 
 /* ARGSUSED */

2002-07-25  Mo DeJong  <supermo@bayarea.net>

	* gdbmi.texinfo (stack-select-frame): Mention
	support for relative frame levels like +1 and -2.
	* mi-cmd-stack.c (mi_cmd_stack_select_frame):
	Add support for relative stack frame levels
	to the stack-select-frame mi command.

Index: gdbmi.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/mi/gdbmi.texinfo,v
retrieving revision 1.27
diff -u -r1.27 gdbmi.texinfo
--- gdbmi.texinfo	17 Jun 2002 17:30:57 -0000	1.27
+++ gdbmi.texinfo	26 Jul 2002 02:57:12 -0000
@@ -2826,7 +2826,10 @@
 @end example
 
 Change the current frame.  Select a different frame @var{framenum} on
-the stack.
+the stack.  If prefixed by a '+' or '-' character, the @var{framenum}
+is interpreted as an offset from the current frame.  A '+' prefix moves
+the current frame towards the outer most frame while a '-' prefix moves
+the current frame towards the inner most frame.
 
 @subsubheading @value{GDBN} Command
 
@@ -2838,6 +2841,10 @@
 @smallexample
 (@value{GDBP})
 -stack-select-frame 2
+^done
+-stack-select-frame -2
+^done
+-stack-select-frame +1
 ^done
 (@value{GDBP})
 @end smallexample
Index: mi-cmd-stack.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmd-stack.c,v
retrieving revision 1.11
diff -u -r1.11 mi-cmd-stack.c
--- mi-cmd-stack.c	5 Apr 2002 22:04:43 -0000	1.11
+++ mi-cmd-stack.c	26 Jul 2002 02:57:12 -0000
@@ -32,6 +32,10 @@
    we pull the plug on the sanitization. */
 extern void select_frame_command_wrapper (char *, int);
 
+extern void up_silently_command_wrapper (char *count_exp);
+
+extern void down_silently_command_wrapper (char *count_exp);
+
 static void list_args_or_locals (int locals, int values, struct frame_info *fi);
 
 /* Print a list of the stack frames. Args can be none, in which case
@@ -304,6 +308,13 @@
   if (argc == 0)
     select_frame_command_wrapper (0, 1 /* not used */ );
   else
-    select_frame_command_wrapper (argv[0], 1 /* not used */ );
+    {
+      if (argv[0][0] == '+')
+        up_silently_command_wrapper (&argv[0][1]);
+      else if (argv[0][0] == '-')
+        down_silently_command_wrapper (&argv[0][1]);
+      else
+        select_frame_command_wrapper (argv[0], 1 /* not used */ );
+    }
   return MI_CMD_DONE;
 }

2002-07-25  Mo DeJong  <supermo@bayarea.net>

	* mi-stack.exp: Add tests for relative stack
	frame with stack-select-frame command.

Index: mi-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-stack.exp,v
retrieving revision 1.8
diff -u -r1.8 mi-stack.exp
--- mi-stack.exp	19 Aug 2001 01:23:43 -0000	1.8
+++ mi-stack.exp	26 Jul 2002 02:45:43 -0000
@@ -192,6 +192,14 @@
 	    "232\\^done" \
                 "stack select frame 1"
 
+    mi_gdb_test "232-stack-select-frame +1" \
+	    "232\\^done" \
+                "stack select frame +1"
+
+    mi_gdb_test "232-stack-select-frame -1" \
+	    "232\\^done" \
+                "stack select frame -1"
+
     mi_gdb_test "232-stack-list-locals 1" \
 	    "232\\^done,locals=\\\[\\\]" \
                 "stack locals listing for new frame"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]