Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Andrew Cagney <ac131313@ges.redhat.com>
To: Mo DeJong <supermo@bayarea.net>
Cc: gdb-patches@sources.redhat.com
Subject: Re: Patch to add relative stack level support to stack-select-frame MIcommand
Date: Thu, 25 Jul 2002 16:30:00 -0000	[thread overview]
Message-ID: <3D40844A.6090603@ges.redhat.com> (raw)
In-Reply-To: <20020724224121.360d7e58.supermo@bayarea.net>


> 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  <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	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"
> 



  reply	other threads:[~2002-07-25 23:05 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-24 23:41 Mo DeJong
2002-07-25 16:30 ` Andrew Cagney [this message]
2002-07-25 20:47   ` Mo DeJong
2002-07-29 13:51     ` Mo DeJong
2002-07-29 15:20       ` Andrew Cagney

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=3D40844A.6090603@ges.redhat.com \
    --to=ac131313@ges.redhat.com \
    --cc=gdb-patches@sources.redhat.com \
    --cc=supermo@bayarea.net \
    /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