diff options
Diffstat (limited to 'gdb/testsuite/gdb.btrace/finish.exp')
-rw-r--r-- | gdb/testsuite/gdb.btrace/finish.exp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.btrace/finish.exp b/gdb/testsuite/gdb.btrace/finish.exp new file mode 100644 index 0000000..a27082e --- /dev/null +++ b/gdb/testsuite/gdb.btrace/finish.exp @@ -0,0 +1,59 @@ +# 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 finish.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 go somewhere where we can finish +gdb_test "record goto 32" ".*fun1\.1.*" +with_test_prefix "at 32" { check_replay_at 32 } + +gdb_test "finish" ".*fun2\.3.*" +with_test_prefix "finish into fun2" { check_replay_at 35 } + +gdb_test "reverse-finish" ".*fun3\.3.*" +with_test_prefix "reverse-finish into fun3" { check_replay_at 27 } + +gdb_test "finish" ".*fun4\.5.*" +with_test_prefix "finish into fun4" { check_replay_at 39 } + +gdb_test "reverse-finish" ".*main\.2.*" +with_test_prefix "reverse-finish into main" { check_replay_at 1 } |