diff options
Diffstat (limited to 'gdb/testsuite/gdb.btrace/step.exp')
-rw-r--r-- | gdb/testsuite/gdb.btrace/step.exp | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.btrace/step.exp b/gdb/testsuite/gdb.btrace/step.exp new file mode 100644 index 0000000..7c34d25 --- /dev/null +++ b/gdb/testsuite/gdb.btrace/step.exp @@ -0,0 +1,89 @@ +# This testcase is part of GDB, the GNU debugger. +# +# Copyright 2013 Free Software Foundation, Inc. +# +# Contributed by Intel Corp. <markus.t.metzger@intel.com> +# +# 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 3 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, see <http://www.gnu.org/licenses/>. + +# check for btrace support +if { [skip_btrace_tests] } { return -1 } + +# start inferior +standard_testfile x86-record_goto.S +if [prepare_for_testing step.exp $testfile $srcfile] { + return -1 +} + +if ![runto_main] { + return -1 +} + +# trace the call to the test function +gdb_test_no_output "record btrace" +gdb_test "next" + +proc check_replay_at { insn } { + gdb_test "info record" [join [list \ + "Active record target: record-btrace" \ + "Recorded 40 instructions in 16 functions for .*" \ + "Replay in progress\. At instruction $insn\." \ + ] "\r\n"] +} + +# let's start by stepping back into the function we just returned from +gdb_test "reverse-step" ".*fun4\.5.*" +with_test_prefix "reverse-step to 39" { check_replay_at 39 } + +# again +gdb_test "reverse-step" ".*fun3\.4.*" +with_test_prefix "reverse-step to 37" { check_replay_at 37 } + +# and again +gdb_test "reverse-step" ".*fun2\.3.*" +with_test_prefix "reverse-step to 35" { check_replay_at 35 } + +# once more +gdb_test "reverse-step" ".*fun1\.2.*" +with_test_prefix "reverse-step to 33" { check_replay_at 33 } + +# and out again the other side +gdb_test "reverse-step" ".*fun2\.2.*" +with_test_prefix "reverse-step to 30" { check_replay_at 30 } + +# once again +gdb_test "reverse-step" ".*fun3\.3.*" +with_test_prefix "reverse-step to 27" { check_replay_at 27 } + +# and back the way we came +gdb_test "step" ".*fun2\.2.*" +with_test_prefix "step to 30" { check_replay_at 30 } + +gdb_test "step" ".*fun1\.2.*" +with_test_prefix "step to 33" { check_replay_at 33 } + +gdb_test "step" ".*fun2\.3.*" +with_test_prefix "step to 35" { check_replay_at 35 } + +gdb_test "step" ".*fun3\.4.*" +with_test_prefix "step to 37" { check_replay_at 37 } + +gdb_test "step" ".*fun4\.5.*" +with_test_prefix "step to 39" { check_replay_at 39 } + +gdb_test "step" ".*main\.3.*" +gdb_test "info record" [join [list \ + "Active record target: record-btrace" \ + "Recorded 40 instructions in 16 functions for \[^\\\r\\\n\]*" \ + ] "\r\n"] "step to live" |