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]

[PATCH] -stack-info-frames


Here's a patch for -stack-info-frames.  Having just read Jason's e-mail
about how quick "-stack-list-frames 0 0" is, I'm not sure its necessary.
I thought I'd send it anyway.

Even if we decide not to implement -stack-info-frames, could you please
approve the other parts: Not testing for stack, and not allowing an argument
(mi_cmd_stack_select_frame).

Nick

2005-06-18  Nick Roberts  <nickrob@snap.net.nz>

	* mi/mi-cmd-stack.c (mi_cmd_stack_info_frame): New function.
	(mi_cmd_stack_list_frames, mi_cmd_stack_info_depth):
	Don't test for stack.
	(mi_cmd_stack_select_frame): Do not allow an argument.
	Don't test for stack.

	* mi/mi-cmds.c (mi_cmds): Add mi_cmd_stack_info_frame to
	entry for -stack-info-frame.

	* mi/mi-cmds.h (mi_cmd_stack_info_frame): New declaration.

	* gdb.texinfo (GDB/MI Stack Manipulation): Update description
	of -stack-info-frame.


*** /home/nick/src/gdb/mi/mi-cmd-stack.c.~1.25.~	2005-02-13 00:36:20.000000000 +1300
--- /home/nick/src/gdb/mi/mi-cmd-stack.c	2005-06-18 01:20:30.000000000 +1200
***************
*** 47,55 ****
    struct cleanup *cleanup_stack;
    struct frame_info *fi;
  
-   if (!target_has_stack)
-     error (_("mi_cmd_stack_list_frames: No stack."));
- 
    if (argc > 2 || argc == 1)
      error (_("mi_cmd_stack_list_frames: Usage: [FRAME_LOW FRAME_HIGH]"));
  
--- 47,52 ----
***************
*** 104,112 ****
    int i;
    struct frame_info *fi;
  
-   if (!target_has_stack)
-     error (_("mi_cmd_stack_info_depth: No stack."));
- 
    if (argc > 1)
      error (_("mi_cmd_stack_info_depth: Usage: [MAX_DEPTH]"));
  
--- 101,106 ----
***************
*** 329,344 ****
  enum mi_cmd_result
  mi_cmd_stack_select_frame (char *command, char **argv, int argc)
  {
!   if (!target_has_stack)
!     error (_("mi_cmd_stack_select_frame: No stack."));
  
!   if (argc > 1)
!     error (_("mi_cmd_stack_select_frame: Usage: [FRAME_SPEC]"));
  
!   /* with no args, don't change frame */
!   if (argc == 0)
!     select_frame_command (0, 1 /* not used */ );
!   else
!     select_frame_command (argv[0], 1 /* not used */ );
    return MI_CMD_DONE;
  }
--- 323,341 ----
  enum mi_cmd_result
  mi_cmd_stack_select_frame (char *command, char **argv, int argc)
  {
!   if (argc == 0 || argc > 1)
!     error (_("mi_cmd_stack_select_frame: Usage: FRAME_SPEC"));
  
!   select_frame_command (argv[0], 1 /* not used */ );
!   return MI_CMD_DONE;
! }
  
! enum mi_cmd_result
! mi_cmd_stack_info_frame (char *command, char **argv, int argc)
! {
!   if (argc > 0)
!     error (_("mi_cmd_stack_info_frame: No arguments required"));
! 
!   print_stack_frame (get_selected_frame (NULL), 1, LOC_AND_ADDRESS);
    return MI_CMD_DONE;
  }

*** /home/nick/src/gdb/mi/mi-cmds.c.~1.16.~	2005-02-13 00:36:20.000000000 +1300
--- /home/nick/src/gdb/mi/mi-cmds.c	2005-06-18 00:55:55.000000000 +1200
***************
*** 107,113 ****
    { "signal-list-handle-actions", { NULL, 0 }, NULL, NULL },
    { "signal-list-signal-types", { NULL, 0 }, NULL, NULL },
    { "stack-info-depth", { NULL, 0 }, 0, mi_cmd_stack_info_depth},
!   { "stack-info-frame", { NULL, 0 }, NULL, NULL },
    { "stack-list-arguments", { NULL, 0 }, 0, mi_cmd_stack_list_args},
    { "stack-list-exception-handlers", { NULL, 0 }, NULL, NULL },
    { "stack-list-frames", { NULL, 0 }, 0, mi_cmd_stack_list_frames},
--- 107,113 ----
    { "signal-list-handle-actions", { NULL, 0 }, NULL, NULL },
    { "signal-list-signal-types", { NULL, 0 }, NULL, NULL },
    { "stack-info-depth", { NULL, 0 }, 0, mi_cmd_stack_info_depth},
!   { "stack-info-frame", { NULL, 0 }, 0, mi_cmd_stack_info_frame},
    { "stack-list-arguments", { NULL, 0 }, 0, mi_cmd_stack_list_args},
    { "stack-list-exception-handlers", { NULL, 0 }, NULL, NULL },
    { "stack-list-frames", { NULL, 0 }, 0, mi_cmd_stack_list_frames},


diff -c /home/nick/src/gdb/mi/mi-cmds.h.\~1.15.\~ /home/nick/src/gdb/mi/mi-cmds.h
*** /home/nick/src/gdb/mi/mi-cmds.h.~1.15.~	2005-01-25 22:30:39.000000000 +1300
--- /home/nick/src/gdb/mi/mi-cmds.h	2005-06-18 10:48:59.000000000 +1200
***************
*** 87,92 ****
--- 87,93 ----
  extern mi_cmd_argv_ftype mi_cmd_gdb_exit;
  extern mi_cmd_argv_ftype mi_cmd_interpreter_exec;
  extern mi_cmd_argv_ftype mi_cmd_stack_info_depth;
+ extern mi_cmd_argv_ftype mi_cmd_stack_info_frame;
  extern mi_cmd_argv_ftype mi_cmd_stack_list_args;
  extern mi_cmd_argv_ftype mi_cmd_stack_list_frames;
  extern mi_cmd_argv_ftype mi_cmd_stack_list_locals;


** /home/nick/src/gdb/doc/gdb.texinfo.~1.261.~	2005-06-16 14:36:11.000000000 +1200
--- /home/nick/src/gdb/doc/gdb.texinfo	2005-06-18 01:55:52.000000000 +1200
***************
*** 19205,19211 ****
  (without arguments).
  
  @subsubheading Example
! N.A.
  
  @subheading The @code{-stack-info-depth} Command
  @findex -stack-info-depth
--- 19205,19220 ----
  (without arguments).
  
  @subsubheading Example
! 
! @smallexample
! (@value{GDBP})
! -stack-info-frame
! ^done,frame=@{level="1",addr="0x0001076c",func="callee3",
! args=[@{name="strarg",value="0x11940 \"A string argument.\""@}],
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",
! fullname="/home/foo/bar/devo/gdb/testsuite/gdb.mi/basics.c",line="17"@}
! (@value{GDBP})
! @end smallexample
  
  @subheading The @code{-stack-info-depth} Command
  @findex -stack-info-depth


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