1# Copyright 2013-2020 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16load_lib "trace-support.exp" 17load_lib "range-stepping-support.exp" 18 19standard_testfile 20set executable $testfile 21 22if [prepare_for_testing "failed to prepare" $executable $srcfile \ 23 {debug nowarnings}] { 24 return -1 25} 26 27if ![runto_main] { 28 fail "can't run to main to check for trace support" 29 return -1 30} 31 32if ![gdb_target_supports_trace] { 33 unsupported "target does not support trace" 34 return -1 35} 36 37if ![gdb_range_stepping_enabled] { 38 unsupported "range stepping not supported by the target" 39 return -1 40} 41 42# Check that range stepping works well with tracepoints. 43 44proc range_stepping_with_tracepoint { type } { 45 with_test_prefix "${type}" { 46 gdb_breakpoint [gdb_get_line_number "location 1"] 47 gdb_continue_to_breakpoint "location 1" 48 delete_breakpoints 49 50 gdb_test "${type} *set_point" ".*" 51 gdb_test_no_output "tstart" 52 53 # Step a line with a tracepoint in the middle. The tracepoint 54 # itself shouldn't have any effect on range stepping. We 55 # should see one vCont;r. 56 exec_cmd_expect_vCont_count "step" 1 57 gdb_test_no_output "tstop" 58 gdb_test "tfind" "Found trace frame .*" "first tfind" 59 gdb_test "tfind" \ 60 "Target failed to find requested trace frame.*" \ 61 "second tfind" 62 63 delete_breakpoints 64 } 65} 66 67range_stepping_with_tracepoint "trace" 68 69if {[skip_shlib_tests]} { 70 return 0 71} 72 73set libipa [get_in_proc_agent] 74set remote_libipa [gdb_load_shlib $libipa] 75 76if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ 77 executable [list debug nowarnings shlib=$libipa] ] != "" } { 78 untested "failed to compile" 79 return -1 80} 81 82clean_restart ${executable} 83 84if ![runto_main] { 85 fail "can't run to main for ftrace tests" 86 return 0 87} 88 89gdb_reinitialize_dir $srcdir/$subdir 90if { [gdb_test "info sharedlibrary" ".*${remote_libipa}.*" "IPA loaded"] != 0 } { 91 untested "could not find IPA lib loaded" 92} else { 93 range_stepping_with_tracepoint "ftrace" 94} 95