Index: gdb/testsuite/gdb.trace/range-stepping.exp |
diff --git a/gdb/testsuite/gdb.trace/range-stepping.exp b/gdb/testsuite/gdb.trace/range-stepping.exp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c04e4785d630eb8cd9b1d523acc5455156022b35 |
--- /dev/null |
+++ b/gdb/testsuite/gdb.trace/range-stepping.exp |
@@ -0,0 +1,85 @@ |
+# Copyright 2013 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 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/>. |
+ |
+load_lib "trace-support.exp" |
+load_lib "range-stepping-support.exp" |
+ |
+standard_testfile |
+set executable $testfile |
+ |
+if [prepare_for_testing $testfile.exp $executable $srcfile \ |
+ {debug nowarnings}] { |
+ return -1 |
+} |
+ |
+if ![runto_main] { |
+ fail "Can't run to main to check for trace support" |
+ return -1 |
+} |
+ |
+if ![gdb_target_supports_trace] { |
+ unsupported "target does not support trace" |
+ return -1 |
+} |
+ |
+# Check that range stepping works well with tracepoints. |
+ |
+proc range_stepping_with_tracepoint { type } { |
+ with_test_prefix "${type}" { |
+ gdb_breakpoint [gdb_get_line_number "location 1"] |
+ gdb_continue_to_breakpoint "location 1" |
+ delete_breakpoints |
+ |
+ gdb_test "${type} *set_point" ".*" |
+ gdb_test_no_output "tstart" |
+ |
+ # Step a line with a tracepoint in the middle. The tracepoint |
+ # itself shouldn't have any effect on range stepping. We |
+ # should see one vCont;r and no vCont;s's. |
+ exec_cmd_expect_vCont_count "step" 0 1 |
+ gdb_test_no_output "tstop" |
+ gdb_test "tfind" "Found trace frame .*" "first tfind" |
+ gdb_test "tfind" \ |
+ "Target failed to find requested trace frame.*" \ |
+ "second tfind" |
+ |
+ delete_breakpoints |
+ } |
+} |
+ |
+range_stepping_with_tracepoint "trace" |
+ |
+set libipa [get_in_proc_agent] |
+gdb_load_shlibs $libipa |
+ |
+if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ |
+ executable [list debug nowarnings shlib=$libipa] ] != "" } { |
+ untested "failed to compile ftrace tests" |
+ return -1 |
+} |
+ |
+clean_restart ${executable} |
+ |
+if ![runto_main] { |
+ fail "Can't run to main for ftrace tests" |
+ return 0 |
+} |
+ |
+gdb_reinitialize_dir $srcdir/$subdir |
+if { [gdb_test "info sharedlibrary" ".*${libipa}.*" "IPA loaded"] != 0 } { |
+ untested "Could not find IPA lib loaded" |
+} else { |
+ range_stepping_with_tracepoint "ftrace" |
+} |