-stack-list-frames HIGH_FRAME changes

Vladimir Prus
2006-05-05T07:54:36Z

[-- Attachment #1: Type: text/plain, Size: 149 bytes --]

Hi,
attached patch stops -stack-list-frames from emitting error when the
HIGH_FRAME parameter is larger than the actual number of frames.

- Volodya

[-- Attachment #2: @-stack-list-frames.diff --]
[-- Type: text/plain, Size: 5814 bytes --]

? .gdbinit
? @-stack-list-frames.diff
? Makefile
? ada-exp.c
? ada-lex.c
? c-exp.c
? config.cache
? config.h
? config.log
? config.status
? cp-name-parser.c
? f-exp.c
? gdb
? gdbtui
? init.c
? jv-exp.c
? m2-exp.c
? objc-exp.c
? observer.h
? observer.inc
? p-exp.c
? stamp-h
? version.c
? doc/Makefile
? doc/config.log
? doc/config.status
? gdbserver/Makefile
? gdbserver/config.h
? gdbserver/config.log
? gdbserver/config.status
? gdbserver/gdbreplay
? gdbserver/gdbserver
? gdbserver/reg-i386-linux.c
? gdbserver/stamp-h
? gdbserver/version.c
? mi/ChangeLog
? testsuite/Makefile
? testsuite/config.log
? testsuite/config.status
? testsuite/gdb.log
? testsuite/gdb.sum
? testsuite/site.exp
? testsuite/gdb.ada/Makefile
? testsuite/gdb.arch/Makefile
? testsuite/gdb.asm/Makefile
? testsuite/gdb.base/Makefile
? testsuite/gdb.cp/Makefile
? testsuite/gdb.disasm/Makefile
? testsuite/gdb.dwarf2/Makefile
? testsuite/gdb.fortran/Makefile
? testsuite/gdb.java/Makefile
? testsuite/gdb.mi/Makefile
? testsuite/gdb.mi/basics
? testsuite/gdb.mi/gdb669-pthreads
? testsuite/gdb.mi/gdb701
? testsuite/gdb.mi/gdb792
? testsuite/gdb.mi/mi-console
? testsuite/gdb.mi/mi-pthreads
? testsuite/gdb.mi/mi-read-memory
? testsuite/gdb.mi/mi-stack
? testsuite/gdb.mi/mi-syn-frame
? testsuite/gdb.mi/mi-var-child
? testsuite/gdb.mi/mi2-pthreads
? testsuite/gdb.mi/until
? testsuite/gdb.mi/var-cmd
? testsuite/gdb.objc/Makefile
? testsuite/gdb.server/Makefile
? testsuite/gdb.stabs/Makefile
? testsuite/gdb.stabs/config.log
? testsuite/gdb.stabs/config.status
? testsuite/gdb.threads/Makefile
? testsuite/gdb.trace/Makefile
Index: ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/ChangeLog,v
retrieving revision 1.7714
diff -u -r1.7714 ChangeLog
--- ChangeLog 3 May 2006 22:59:38 -0000 1.7714
+++ ChangeLog 5 May 2006 07:50:28 -0000
@@ -1,3 +1,10 @@
+2006-05-05 Vladimir Prus <ghost@lvk.cs.msu.su>
+
+ * mi/mi-cmd-stack.c (mi_cmd_stack_list_frames): Don't emit error
+ if high requested frame number is larger then number of available
+ frames.
+
+
2006-05-03 Vladimir Prus <ghost@cs.msu.su>

* varobj.c (c_value_of_variable): Ignore top-level references.
Index: doc/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/doc/ChangeLog,v
retrieving revision 1.572
diff -u -r1.572 ChangeLog
--- doc/ChangeLog 27 Apr 2006 23:03:42 -0000 1.572
+++ doc/ChangeLog 5 May 2006 07:50:29 -0000
@@ -1,3 +1,9 @@
+2006-05-05 Vladimir Prus <ghost@lvk.cs.msu.su>
+
+ * gdb.texinfo (GDB/MI Stack Manipulation): Mention that
+ -stack-list-locals HIGH_FRAME argument can be larger then the
+ actual number of frames.
+
2006-04-27 Michael Snyder <msnyder@redhat.com>

* gdb.texinfo (delete-fork): Command renamed to "delete fork".
Index: doc/gdb.texinfo
===================================================================
RCS file: /cvs/src/src/gdb/doc/gdb.texinfo,v
retrieving revision 1.325
diff -u -r1.325 gdb.texinfo
--- doc/gdb.texinfo 27 Apr 2006 23:03:42 -0000 1.325
+++ doc/gdb.texinfo 5 May 2006 07:50:32 -0000
@@ -19922,7 +19922,10 @@
If invoked without arguments, this command prints a backtrace for the
whole stack. If given two integer arguments, it shows the frames whose
levels are between the two arguments (inclusive). If the two arguments
-are equal, it shows the single frame at the corresponding level.
+are equal, it shows the single frame at the corresponding level. It is
+an error if @var{low-frame} is larger than the actual number of frames. On
+the other hand, @var{high-frame} may be larger then the actual number of
+frames, in which case only existing frames will be returned.

@subsubheading @value{GDBN} Command

Index: mi/mi-cmd-stack.c
===================================================================
RCS file: /cvs/src/src/gdb/mi/mi-cmd-stack.c,v
retrieving revision 1.29
diff -u -r1.29 mi-cmd-stack.c
--- mi/mi-cmd-stack.c 23 Dec 2005 18:57:46 -0000 1.29
+++ mi/mi-cmd-stack.c 5 May 2006 07:50:32 -0000
@@ -88,8 +88,6 @@
}

do_cleanups (cleanup_stack);
- if (i < frame_high)
- error (_("mi_cmd_stack_list_frames: Not enough frames in stack."));

return MI_CMD_DONE;
}
Index: testsuite/ChangeLog
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/ChangeLog,v
retrieving revision 1.1208
diff -u -r1.1208 ChangeLog
--- testsuite/ChangeLog 1 May 2006 22:21:35 -0000 1.1208
+++ testsuite/ChangeLog 5 May 2006 07:50:34 -0000
@@ -1,3 +1,9 @@
+2006-05-05 Vladimir Prus <ghost@lvk.cs.msu.su>
+
+ * gdb.mi/mi2-stack.exp (test_stack_frame_listing): Test that
+ HIGH_FRAME argument to -stack-list-locals can be larger than
+ the number of frames.
+
2006-05-02 Mark Kettenis <kettenis@gnu.org>

* gdb.asm/asm-source.exp: Add powerpc-*-netbsd* to the list of
Index: testsuite/gdb.mi/mi2-stack.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi2-stack.exp,v
retrieving revision 1.6
diff -u -r1.6 mi2-stack.exp
--- testsuite/gdb.mi/mi2-stack.exp 27 Sep 2005 22:39:03 -0000 1.6
+++ testsuite/gdb.mi/mi2-stack.exp 5 May 2006 07:50:34 -0000
@@ -74,6 +74,11 @@
mi_gdb_test "235-stack-info-frame" \
"235\\^done,frame=\{level=\"0\",addr=\"$hex\",func=\"callee4\",file=\".*basics.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$line_callee4_body\"\}" \
"selected frame listing"
+
+ mi_gdb_test "236-stack-list-frames 1 300" \
+ "236\\^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 300"
+
}

proc test_stack_args_listing {} {