diff options
Diffstat (limited to 'gdb/testsuite/gdb.trace/while-stepping.exp')
-rw-r--r-- | gdb/testsuite/gdb.trace/while-stepping.exp | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.trace/while-stepping.exp b/gdb/testsuite/gdb.trace/while-stepping.exp new file mode 100644 index 0000000..6b860c0 --- /dev/null +++ b/gdb/testsuite/gdb.trace/while-stepping.exp @@ -0,0 +1,116 @@ +# Copyright (C) 1998 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# Please email any bugs, comments, and/or additions to this file to: +# bug-gdb@prep.ai.mit.edu + +# This file was written by Michael Snyder (msnyder@cygnus.com) + +load_lib "trace-support.exp"; + +if $tracelevel then { + strace $tracelevel +} + +set prms_id 0 +set bug_id 0 + +gdb_exit +gdb_start + +if [istarget "m68k-*-elf"] then { + set srcfile gdb_c_test.c + set binfile [board_info target d490_binfile]; +} else { + set testfile "actions" + set srcfile ${testfile}.c + set binfile ${objdir}/${subdir}/${testfile} + if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" $binfile \ + executable {debug additional_flags="-gdwarf"}] != "" } { + gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail." + } +} +gdb_reinitialize_dir $srcdir/$subdir + +# If testing on a remote host, download the source file. +remote_download host $srcdir/$subdir/$srcfile + +gdb_file_cmd $binfile + +# +# test while-stepping command +# + +gdb_delete_tracepoints +set trcpt1 [gdb_gettpnum gdb_c_test] +if { $trcpt1 <= 0 } then { + fail "Could not find gdb_c_test function" + return; +} + +# 5.12 basic while-stepping command (collect regs) + +gdb_test "info tracepoints" \ + "Num Enb Address PassC StepC What.*$trcpt1.*0x.*\[\t \]+\[0-9\]+\[\t \]+0\[\t \]+.*in gdb_c_test.*" \ + "5.12: set a tracepoint, stepcount is zero" + +set stepcount 12 + +gdb_trace_setactions "5.12: set stepcount to $stepcount" \ + "" \ + "while-stepping $stepcount" "" \ + "collect \$regs" "^$" \ + "end" "" + +gdb_test "info tracepoints" \ + "Num Enb Address PassC StepC What.*$trcpt1.*0x.*\[\t \]+\[0-9\]+\[\t \]+$stepcount\[\t \]+.*in gdb_c_test.*" \ + "5.12: confirm stepcount set to $stepcount" + +gdb_test "info tracepoints" \ + "Num Enb Address PassC StepC What.* +.*while-stepping $stepcount.*" \ + "5.12: info trace shows \"while-stepping\"" + + +# 5.13 step out of context while collecting local variable +# [deferred to dynamic test section] + +proc while_stepping_bogus_arg { bogus msgstring } { + global gdb_prompt; + + gdb_trace_setactions "$msgstring" \ + "" \ + "while-stepping $bogus" "\[Ee\]rror|\[Ww\]arning" +} + +# 5.14 while-stepping (no argument) + +while_stepping_bogus_arg "" "5.14: while-stepping null stepcount" + +# 5.15 while-stepping (zero stepcount) + +while_stepping_bogus_arg "0" "5.15: while-stepping rejects zero stepcount" + +# 5.16 while-stepping without collecting anything +gdb_trace_setactions "5.16: step without collecting anything" \ + "" \ + "while-stepping $stepcount" "^$" \ + "end" "" + +gdb_test "info tracepoints" \ + ".*$trcpt1.*0x.*\[\t \]+\[0-9\]+\[\t \]+$stepcount\[\t \]+.*in gdb_c_test.*\[ \t\]+Actions for tracepoint $trcpt1:.*\[ \t\]+while-stepping $stepcount.*\[ \t\]+end.*\[ \t\]+end.*" \ + "5.16: confirm actions, step without collecting anything" + |