1# Copyright 2013-2023 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 return -1 29} 30 31if ![gdb_target_supports_trace] { 32 unsupported "target does not support trace" 33 return -1 34} 35 36if ![gdb_range_stepping_enabled] { 37 unsupported "range stepping not supported by the target" 38 return -1 39} 40 41# Check that range stepping works well with tracepoints. 42 43proc range_stepping_with_tracepoint { type } { 44 with_test_prefix "${type}" { 45 gdb_breakpoint [gdb_get_line_number "location 1"] 46 gdb_continue_to_breakpoint "location 1" 47 delete_breakpoints 48 49 gdb_test "${type} *set_point" ".*" 50 gdb_test_no_output "tstart" 51 52 # Step a line with a tracepoint in the middle. The tracepoint 53 # itself shouldn't have any effect on range stepping. We 54 # should see one vCont;r. 55 exec_cmd_expect_vCont_count "step" 1 56 gdb_test_no_output "tstop" 57 gdb_test "tfind" "Found trace frame .*" "first tfind" 58 gdb_test "tfind" \ 59 "Target failed to find requested trace frame.*" \ 60 "second tfind" 61 62 delete_breakpoints 63 } 64} 65 66range_stepping_with_tracepoint "trace" 67 68if {[skip_shlib_tests]} { 69 return 0 70} 71 72set libipa [get_in_proc_agent] 73set remote_libipa [gdb_load_shlib $libipa] 74 75if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ 76 executable [list debug nowarnings shlib=$libipa] ] != "" } { 77 untested "failed to compile" 78 return -1 79} 80 81clean_restart ${executable} 82 83if ![runto_main] { 84 return 0 85} 86 87gdb_reinitialize_dir $srcdir/$subdir 88if { [gdb_test "info sharedlibrary" ".*${remote_libipa}.*" "IPA loaded"] != 0 } { 89 untested "could not find IPA lib loaded" 90} else { 91 range_stepping_with_tracepoint "ftrace" 92} 93