From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17727 invoked by alias); 25 Jul 2002 23:05:48 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 17720 invoked from network); 25 Jul 2002 23:05:47 -0000 Received: from unknown (HELO localhost.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 25 Jul 2002 23:05:47 -0000 Received: from ges.redhat.com (localhost [127.0.0.1]) by localhost.redhat.com (Postfix) with ESMTP id ED4803EB7; Thu, 25 Jul 2002 19:05:46 -0400 (EDT) Message-ID: <3D40844A.6090603@ges.redhat.com> Date: Thu, 25 Jul 2002 16:30:00 -0000 From: Andrew Cagney User-Agent: Mozilla/5.0 (X11; U; NetBSD macppc; en-US; rv:1.0.0) Gecko/20020708 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Mo DeJong Cc: gdb-patches@sources.redhat.com Subject: Re: Patch to add relative stack level support to stack-select-frame MIcommand References: <20020724224121.360d7e58.supermo@bayarea.net> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2002-07/txt/msg00521.txt.bz2 > Greetings > > I am been working with the MI recently and ran into a > real problem with the stack-select-frame method. > While it can be used to change the stack to a new level, > there is no way to just move up or down a level like > the cli up and down commands. The appended patch implements > the missing functionality. For example, one could move > down a stack level like so: > > -stack-select-frame -1 > > 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. > 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 25 Jul 2002 04:55:43 -0000 > @@ -1676,6 +1676,11 @@ > select_frame (fi); > } > > +void > +up_silently_command_wrapper (char *count_exp) { > + up_silently_command(count_exp, 1 /* unused */); > +} > + Coding, brace on new line. Space before lparen. > static void > up_silently_command (char *count_exp, int from_tty) > { > @@ -1719,6 +1724,11 @@ > } > > select_frame (frame); > +} > + > +void > +down_silently_command_wrapper (char *count_exp) { > + down_silently_command(count_exp, 1 /* unused */); > } Ditto. > 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 25 Jul 2002 05:13:12 -0000 > @@ -2826,7 +2826,8 @@ > @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. Can this be expanded. Clarify the direction that +/- go in. -1 towards the inner most frame, +1 towards the outer most frame. What does: -stack-select-frame 0 -stack-select-frame -1 > @subsubheading @value{GDBN} Command > > @@ -2838,6 +2839,8 @@ > @smallexample > (@value{GDBP}) > -stack-select-frame 2 > +^done > +-stack-select-frame -1 > ^done Suggest printing the current frame here. > (@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 25 Jul 2002 05:13:13 -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); > + These extern's need to be put in a header file (yes select_frame_command_wrapper()) was already wrong :-(). > 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 */ ); Again coding. > + } > return MI_CMD_DONE; > } > > % cat testsuite/gdb.mi/testsuite_rel_stack.patch > 2002-07-24 Mo DeJong > > * 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 25 Jul 2002 05:14:39 -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" > + Can these check that the frame went in the right direction. Hmm, nope, I'll post something to gdb@ > + 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" >