From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30360 invoked by alias); 25 Jul 2002 05:42:50 -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 30353 invoked from network); 25 Jul 2002 05:42:49 -0000 Received: from unknown (HELO mta5.snfc21.pbi.net) (206.13.28.241) by sources.redhat.com with SMTP; 25 Jul 2002 05:42:49 -0000 Received: from modrick ([66.120.11.181]) by mta5.snfc21.pbi.net (iPlanet Messaging Server 5.1 (built May 7 2001)) with SMTP id <0GZS002N8IHMJ4@mta5.snfc21.pbi.net> for gdb-patches@sources.redhat.com; Wed, 24 Jul 2002 22:41:47 -0700 (PDT) Date: Wed, 24 Jul 2002 23:41:00 -0000 From: Mo DeJong Subject: Patch to add relative stack level support to stack-select-frame MIcommand To: gdb-patches@sources.redhat.com Message-id: <20020724224121.360d7e58.supermo@bayarea.net> Organization: House of Mirth MIME-version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7bit X-SW-Source: 2002-07/txt/msg00504.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. cheers Mo DeJong % cat rel_stack.patch 2002-07-24 Mo DeJong * 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 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 */); +} + 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 */); } /* ARGSUSED */ % cat mi/mi_rel_stack.patch 2002-07-24 Mo DeJong * 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 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. @subsubheading @value{GDBN} Command @@ -2838,6 +2839,8 @@ @smallexample (@value{GDBP}) -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 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); + 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; } % 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" + + 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"