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]

[patch/mi] Update stack output commands to produce lists


This is part one of a two part patch to update the stack query commands 
so that they output lists of stack frames and stack arguments.

Part two will finish it - this one doesn't fix some args=[...] cases. 
I'd rather get this bit in and then attack those args=[...] cases separatly.

	Andrew
Index: mi/ChangeLog
2001-06-26  Andrew Cagney  <ac131313@redhat.com>

	* mi-cmd-stack.c (mi_cmd_stack_list_frames): Output a list of
	"stack" entries.
	(mi_cmd_stack_list_args): Ditto for "stack-args".
	* gdbmi.texinfo (stack-list-frames, stack-list-arguments): Update
	documentation.
	(GDB/MI Stack Manipulation Commands): Fix section title.  Was
	Stack Manipulation Commands in GDB/MI.

Index: testsuite/gdb.mi/ChangeLog
2001-06-26  Andrew Cagney  <ac131313@redhat.com>

	* mi-stack.exp: Update. Output for stack=..., args=... and
	stack-args=... changed to a list.

Index: mi/gdbmi.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/mi/gdbmi.texinfo,v
retrieving revision 1.19
diff -p -r1.19 gdbmi.texinfo
*** gdbmi.texinfo	2001/06/26 05:12:37	1.19
--- gdbmi.texinfo	2001/06/26 18:07:06
*************** Signal handling commands are not impleme
*** 2493,2499 ****
  
  @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  @node GDB/MI Stack Manipulation
! @section Stack manipulation commands in @sc{gdb/mi}
  
  
  @subheading The @code{-stack-info-frame} Command
--- 2493,2499 ----
  
  @c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  @node GDB/MI Stack Manipulation
! @section @sc{gdb/mi} Stack Manipulation Commands
  
  
  @subheading The @code{-stack-info-frame} Command
*************** functionality of @samp{-stack-list-argum
*** 2585,2591 ****
  (@value{GDBP})
  -stack-list-frames
  ^done,
! stack=@{
  frame=@{level="0 ",addr="0x00010734",func="callee4",
  file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
  frame=@{level="1 ",addr="0x0001076c",func="callee3",
--- 2585,2591 ----
  (@value{GDBP})
  -stack-list-frames
  ^done,
! stack=[
  frame=@{level="0 ",addr="0x00010734",func="callee4",
  file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="8"@},
  frame=@{level="1 ",addr="0x0001076c",func="callee3",
*************** file="../../../devo/gdb/testsuite/gdb.mi
*** 2595,2614 ****
  frame=@{level="3 ",addr="0x000107b4",func="callee1",
  file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
  frame=@{level="4 ",addr="0x000107e0",func="main",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}@}
  (@value{GDBP})
  -stack-list-arguments 0
  ^done,
! stack-args=@{
  frame=@{level="0",args=@{@}@},
  frame=@{level="1",args=@{name="strarg"@}@},
  frame=@{level="2",args=@{name="intarg",name="strarg"@}@},
  frame=@{level="3",args=@{name="intarg",name="strarg",name="fltarg"@}@},
! frame=@{level="4",args=@{@}@}@}
  (@value{GDBP})
  -stack-list-arguments 1
  ^done,
! stack-args=@{
  frame=@{level="0",args=@{@}@},
  frame=@{level="1",
   args=@{@{name="strarg",value="0x11940 \"A string argument.\""@}@}@},
--- 2595,2614 ----
  frame=@{level="3 ",addr="0x000107b4",func="callee1",
  file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="27"@},
  frame=@{level="4 ",addr="0x000107e0",func="main",
! file="../../../devo/gdb/testsuite/gdb.mi/basics.c",line="32"@}]
  (@value{GDBP})
  -stack-list-arguments 0
  ^done,
! stack-args=[
  frame=@{level="0",args=@{@}@},
  frame=@{level="1",args=@{name="strarg"@}@},
  frame=@{level="2",args=@{name="intarg",name="strarg"@}@},
  frame=@{level="3",args=@{name="intarg",name="strarg",name="fltarg"@}@},
! frame=@{level="4",args=@{@}@}]
  (@value{GDBP})
  -stack-list-arguments 1
  ^done,
! stack-args=[
  frame=@{level="0",args=@{@}@},
  frame=@{level="1",
   args=@{@{name="strarg",value="0x11940 \"A string argument.\""@}@}@},
*************** frame=@{level="2",args=@{
*** 2619,2633 ****
  @{name="intarg",value="2"@},
  @{name="strarg",value="0x11940 \"A string argument.\""@},
  @{name="fltarg",value="3.5"@}@}@},
! frame=@{level="4",args=@{@}@}@}
  (@value{GDBP})
  -stack-list-arguments 0 2 2
! ^done,stack-args=@{frame=@{level="2",args=@{name="intarg",name="strarg"@}@}@}
  (@value{GDBP})
  -stack-list-arguments 1 2 2
! ^done,stack-args=@{frame=@{level="2",
  args=@{@{name="intarg",value="2"@},
! @{name="strarg",value="0x11940 \"A string argument.\""@}@}@}@}
  (@value{GDBP})
  @end smallexample
  
--- 2619,2633 ----
  @{name="intarg",value="2"@},
  @{name="strarg",value="0x11940 \"A string argument.\""@},
  @{name="fltarg",value="3.5"@}@}@},
! frame=@{level="4",args=@{@}@}]
  (@value{GDBP})
  -stack-list-arguments 0 2 2
! ^done,stack-args=[frame=@{level="2",args=@{name="intarg",name="strarg"@}@}]
  (@value{GDBP})
  -stack-list-arguments 1 2 2
! ^done,stack-args=[frame=@{level="2",
  args=@{@{name="intarg",value="2"@},
! @{name="strarg",value="0x11940 \"A string argument.\""@}@}@}]
  (@value{GDBP})
  @end smallexample
  
*************** Full stack backtrace:
*** 2676,2682 ****
  (@value{GDBP})
  -stack-list-frames
  ^done,stack=
! @{frame=@{level="0 ",addr="0x0001076c",func="foo",
    file="recursive2.c",line="11"@},
  frame=@{level="1 ",addr="0x000107a4",func="foo",
    file="recursive2.c",line="14"@},
--- 2676,2682 ----
  (@value{GDBP})
  -stack-list-frames
  ^done,stack=
! [frame=@{level="0 ",addr="0x0001076c",func="foo",
    file="recursive2.c",line="11"@},
  frame=@{level="1 ",addr="0x000107a4",func="foo",
    file="recursive2.c",line="14"@},
*************** frame=@{level="9 ",addr="0x000107a4",fun
*** 2699,2705 ****
  frame=@{level="10",addr="0x000107a4",func="foo",
    file="recursive2.c",line="14"@},
  frame=@{level="11",addr="0x00010738",func="main",
!   file="recursive2.c",line="4"@}@}
  (@value{GDBP})
  @end smallexample
  
--- 2699,2705 ----
  frame=@{level="10",addr="0x000107a4",func="foo",
    file="recursive2.c",line="14"@},
  frame=@{level="11",addr="0x00010738",func="main",
!   file="recursive2.c",line="4"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Show frames between @var{low_frame} and 
*** 2709,2720 ****
  (@value{GDBP})
  -stack-list-frames 3 5
  ^done,stack=
! @{frame=@{level="3 ",addr="0x000107a4",func="foo",
    file="recursive2.c",line="14"@},
  frame=@{level="4 ",addr="0x000107a4",func="foo",
    file="recursive2.c",line="14"@},
  frame=@{level="5 ",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}@}
  (@value{GDBP})
  @end smallexample
  
--- 2709,2720 ----
  (@value{GDBP})
  -stack-list-frames 3 5
  ^done,stack=
! [frame=@{level="3 ",addr="0x000107a4",func="foo",
    file="recursive2.c",line="14"@},
  frame=@{level="4 ",addr="0x000107a4",func="foo",
    file="recursive2.c",line="14"@},
  frame=@{level="5 ",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
*************** Show a single frame:
*** 2724,2731 ****
  (@value{GDBP})
  -stack-list-frames 3 3
  ^done,stack=
! @{frame=@{level="3 ",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}@}
  (@value{GDBP})
  @end smallexample
  
--- 2724,2731 ----
  (@value{GDBP})
  -stack-list-frames 3 3
  ^done,stack=
! [frame=@{level="3 ",addr="0x000107a4",func="foo",
!   file="recursive2.c",line="14"@}]
  (@value{GDBP})
  @end smallexample
  
Index: mi/mi-cmd-stack.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmd-stack.c,v
retrieving revision 1.5
diff -p -r1.5 mi-cmd-stack.c
*** mi-cmd-stack.c	2001/05/12 04:08:24	1.5
--- mi-cmd-stack.c	2001/06/26 18:07:07
*************** mi_cmd_stack_list_frames (char *command,
*** 77,83 ****
    if (fi == NULL)
      error ("mi_cmd_stack_list_frames: Not enough frames in stack.");
  
!   ui_out_tuple_begin (uiout, "stack");
  
    /* Now let;s print the frames up to frame_high, or until there are
       frames in the stack. */
--- 77,83 ----
    if (fi == NULL)
      error ("mi_cmd_stack_list_frames: Not enough frames in stack.");
  
!   ui_out_list_begin (uiout, "stack");
  
    /* Now let;s print the frames up to frame_high, or until there are
       frames in the stack. */
*************** mi_cmd_stack_list_frames (char *command,
*** 96,102 ****
  			0 /* args */ );
      }
  
!   ui_out_tuple_end (uiout);
    if (i < frame_high)
      error ("mi_cmd_stack_list_frames: Not enough frames in stack.");
  
--- 96,102 ----
  			0 /* args */ );
      }
  
!   ui_out_list_end (uiout);
    if (i < frame_high)
      error ("mi_cmd_stack_list_frames: Not enough frames in stack.");
  
*************** mi_cmd_stack_list_args (char *command, c
*** 183,189 ****
    if (fi == NULL)
      error ("mi_cmd_stack_list_args: Not enough frames in stack.");
  
!   ui_out_tuple_begin (uiout, "stack-args");
  
    /* Now let's print the frames up to frame_high, or until there are
       frames in the stack. */
--- 183,189 ----
    if (fi == NULL)
      error ("mi_cmd_stack_list_args: Not enough frames in stack.");
  
!   ui_out_list_begin (uiout, "stack-args");
  
    /* Now let's print the frames up to frame_high, or until there are
       frames in the stack. */
*************** mi_cmd_stack_list_args (char *command, c
*** 198,204 ****
        ui_out_tuple_end (uiout);
      }
  
!   ui_out_tuple_end (uiout);
    if (i < frame_high)
      error ("mi_cmd_stack_list_args: Not enough frames in stack.");
  
--- 198,204 ----
        ui_out_tuple_end (uiout);
      }
  
!   ui_out_list_end (uiout);
    if (i < frame_high)
      error ("mi_cmd_stack_list_args: Not enough frames in stack.");
  
Index: testsuite/gdb.mi/mi-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-stack.exp,v
retrieving revision 1.5
diff -p -r1.5 mi-stack.exp
*** mi-stack.exp	2001/06/26 04:48:48	1.5
--- mi-stack.exp	2001/06/26 18:07:11
*************** proc test_stack_frame_listing {} {
*** 73,85 ****
      # -stack-list-frames 1 3
  
      mi_gdb_test "231-stack-list-frames" \
! 	    "231\\^done,stack=\{frame=\{level=\"0 \",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"8\"\},frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2 \",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3 \",addr=\"$hex\",func=\"callee1\",.*\},frame=\{level=\"4 \",addr=\"$hex\",func=\"main\",.*\}\}" \
                  "stack frame listing"
      mi_gdb_test "232-stack-list-frames 1 1" \
! 	    "232\\^done,stack=\{frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\}\}" \
                  "stack frame listing 1 1"
      mi_gdb_test "233-stack-list-frames 1 3" \
! 	    "233\\^done,stack=\{frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2 \",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3 \",addr=\"$hex\",func=\"callee1\",.*\}\}" \
                  "stack frame listing 1 3"
  
      mi_gdb_test "234-stack-list-frames 1" \
--- 73,85 ----
      # -stack-list-frames 1 3
  
      mi_gdb_test "231-stack-list-frames" \
! 	    "231\\^done,stack=\\\[frame=\{level=\"0 \",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",line=\"8\"\},frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2 \",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3 \",addr=\"$hex\",func=\"callee1\",.*\},frame=\{level=\"4 \",addr=\"$hex\",func=\"main\",.*\}\\\]" \
                  "stack frame listing"
      mi_gdb_test "232-stack-list-frames 1 1" \
! 	    "232\\^done,stack=\\\[frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\}\\\]" \
                  "stack frame listing 1 1"
      mi_gdb_test "233-stack-list-frames 1 3" \
! 	    "233\\^done,stack=\\\[frame=\{level=\"1 \",addr=\"$hex\",func=\"callee3\",.*\},frame=\{level=\"2 \",addr=\"$hex\",func=\"callee2\",.*\},frame=\{level=\"3 \",addr=\"$hex\",func=\"callee1\",.*\}\\\]" \
                  "stack frame listing 1 3"
  
      mi_gdb_test "234-stack-list-frames 1" \
*************** proc test_stack_args_listing {} {
*** 102,128 ****
      # -stack-list-arguments 
  
      mi_gdb_test "231-stack-list-arguments 0" \
! 	    "231\\^done,stack-args=\{frame=\{level=\"0\",args=\{\}\},frame=\{level=\"1\",args=\{name=\"strarg\"\}\},frame=\{level=\"2\",args=\{name=\"intarg\",name=\"strarg\"\}\},frame=\{level=\"3\",args=\{name=\"intarg\",name=\"strarg\",name=\"fltarg\"\}\},frame=\{level=\"4\",args=\{\}\}\}" \
                  "stack args listing 0"
  
      mi_gdb_test "232-stack-list-arguments 0 1 1" \
! 	    "232\\^done,stack-args=\{frame=\{level=\"1\",args=\{name=\"strarg\"\}\}\}" \
                  "stack args listing 0 1 1"
  
      mi_gdb_test "233-stack-list-arguments 0 1 3" \
! 	    "233\\^done,stack-args=\{frame=\{level=\"1\",args=\{name=\"strarg\"\}\},frame=\{level=\"2\",args=\{name=\"intarg\",name=\"strarg\"\}\},frame=\{level=\"3\",args=\{name=\"intarg\",name=\"strarg\",name=\"fltarg\"\}\}\}" \
                  "stack args listing 0 1 3"
  
      mi_gdb_test "231-stack-list-arguments 1" \
! 	    "231\\^done,stack-args=\{frame=\{level=\"0\",args=\{\}\},frame=\{level=\"1\",args=\{\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\},frame=\{level=\"2\",args=\{\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\},frame=\{level=\"3\",args=\{\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\}\},frame=\{level=\"4\",args=\{\}\}\}" \
                  "stack args listing 1"
  
      mi_gdb_test "232-stack-list-arguments 1 1 1" \
! 	    "232\\^done,stack-args=\{frame=\{level=\"1\",args=\{\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\}\}" \
                  "stack args listing 1 1 1"
  
      mi_gdb_test "233-stack-list-arguments 1 1 3" \
! 	    "233\\^done,stack-args=\{frame=\{level=\"1\",args=\{\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\},frame=\{level=\"2\",args=\{\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\},frame=\{level=\"3\",args=\{\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\}\}\}" \
                  "stack args listing 1 1 3"
  
      mi_gdb_test "234-stack-list-arguments" \
--- 102,128 ----
      # -stack-list-arguments 
  
      mi_gdb_test "231-stack-list-arguments 0" \
! 	    "231\\^done,stack-args=\\\[frame=\{level=\"0\",args=\{\}\},frame=\{level=\"1\",args=\{name=\"strarg\"\}\},frame=\{level=\"2\",args=\{name=\"intarg\",name=\"strarg\"\}\},frame=\{level=\"3\",args=\{name=\"intarg\",name=\"strarg\",name=\"fltarg\"\}\},frame=\{level=\"4\",args=\{\}\}\\\]" \
                  "stack args listing 0"
  
      mi_gdb_test "232-stack-list-arguments 0 1 1" \
! 	    "232\\^done,stack-args=\\\[frame=\{level=\"1\",args=\{name=\"strarg\"\}\}\\\]" \
                  "stack args listing 0 1 1"
  
      mi_gdb_test "233-stack-list-arguments 0 1 3" \
! 	    "233\\^done,stack-args=\\\[frame=\{level=\"1\",args=\{name=\"strarg\"\}\},frame=\{level=\"2\",args=\{name=\"intarg\",name=\"strarg\"\}\},frame=\{level=\"3\",args=\{name=\"intarg\",name=\"strarg\",name=\"fltarg\"\}\}\\\]" \
                  "stack args listing 0 1 3"
  
      mi_gdb_test "231-stack-list-arguments 1" \
! 	    "231\\^done,stack-args=\\\[frame=\{level=\"0\",args=\{\}\},frame=\{level=\"1\",args=\{\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\},frame=\{level=\"2\",args=\{\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\},frame=\{level=\"3\",args=\{\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\}\},frame=\{level=\"4\",args=\{\}\}\\\]" \
                  "stack args listing 1"
  
      mi_gdb_test "232-stack-list-arguments 1 1 1" \
! 	    "232\\^done,stack-args=\\\[frame=\{level=\"1\",args=\{\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\}\\\]" \
                  "stack args listing 1 1 1"
  
      mi_gdb_test "233-stack-list-arguments 1 1 3" \
! 	    "233\\^done,stack-args=\\\[frame=\{level=\"1\",args=\{\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\},frame=\{level=\"2\",args=\{\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\}\}\},frame=\{level=\"3\",args=\{\{name=\"intarg\",value=\"2\"\},\{name=\"strarg\",value=\"$hex \\\\\"A string argument.\\\\\"\"\},\{name=\"fltarg\",value=\"3.5\"\}\}\}\\\]" \
                  "stack args listing 1 1 3"
  
      mi_gdb_test "234-stack-list-arguments" \

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