This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
[patch/mi] Update stack output commands to produce lists
- To: gdb-patches at sources dot redhat dot com
- Subject: [patch/mi] Update stack output commands to produce lists
- From: Andrew Cagney <ac131313 at cygnus dot com>
- Date: Tue, 26 Jun 2001 14:11:38 -0400
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" \