1# Copyright 1998-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 16# This file was written by Michael Snyder (msnyder@cygnus.com) 17 18load_lib "trace-support.exp" 19 20 21gdb_exit 22gdb_start 23 24standard_testfile actions.c 25 26if ![gdb_trace_common_supports_arch] { 27 unsupported "no trace-common.h support for arch" 28 return -1 29} 30 31if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \ 32 executable {debug nowarnings}] != "" } { 33 untested "failed to compile" 34 return -1 35} 36gdb_reinitialize_dir $srcdir/$subdir 37 38# If testing on a remote host, download the source file. 39# remote_download host $srcdir/$subdir/$srcfile 40 41gdb_file_cmd $binfile 42 43# 44# test "info tracepoints" command 45# 46 47gdb_delete_tracepoints 48set c_test_num [gdb_gettpnum gdb_c_test] 49set asm_test_num [gdb_gettpnum gdb_asm_test] 50if { $c_test_num <= 0 || $asm_test_num <= 0 } then { 51 fail "setting tracepoints" 52 return 53} 54 55# 2.1 info tracepoints (all) 56gdb_test "info tracepoints" \ 57 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 58\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 59\[\t \]+not installed on target. 60\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 61\[\t \]+not installed on target." \ 62 "2.1: info tracepoints (all)" 63 64# 2.2 info tracepoint (specific) 65gdb_test "info tracepoint $c_test_num" \ 66 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 67\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 68\[\t \]+not installed on target." \ 69 "2.2a: info tracepoint $c_test_num (gdb_c_test)" 70 71gdb_test "info tracepoint $asm_test_num" \ 72 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 73\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 74\[\t \]+not installed on target." \ 75 "2.2b: info tracepoint $asm_test_num (gdb_asm_test)" 76 77# 2.3 info tracepoint (invalid tracepoint number) 78gdb_test "info tracepoint [expr $c_test_num + $asm_test_num]" \ 79 "No tracepoint matching '[expr $c_test_num + $asm_test_num]'." \ 80 "2.3: info tracepoint (invalid tracepoint number)" 81 82# 2.4 info tracepoints (list of numbers) 83gdb_test_multiple "info tracepoints $c_test_num $asm_test_num " \ 84 "2.4: info trace rejects multiple tracepoint numbers" { 85 -re "Num Enb .*$gdb_prompt $" { 86 fail "2.4: info trace rejects multiple tracepoint numbers" 87 } 88 -re ".*$gdb_prompt $" { 89 pass "2.4: info trace rejects multiple tracepoint numbers" 90 } 91 } 92 93# 2.5 help info trace 94gdb_test "help info tracepoints" \ 95 "Status of specified tracepoints .all tracepoints if no argument.*" \ 96 "2.5: help info tracepoints" 97 98# 2.6 info tracepoints (check trace buffer usage). We need a live 99# tracing. 100 101# Load the binary to the target too. 102gdb_load $binfile 103 104# Can't use runto_main here, because that would delete the tracepoints 105# created above. 106gdb_breakpoint "main" 107gdb_trace_setactions "collect on tracepoint 1" "1" \ 108 "collect gdb_struct1_test" "^$" 109gdb_run_cmd 110if {[gdb_test "" "Breakpoint ${decimal}, main.*"] != 0} { 111 fail "can't run to main" 112 return -1 113} 114 115if { ![gdb_target_supports_trace] } then { 116 unsupported "current target does not support trace" 117 return 1 118} 119 120gdb_breakpoint "end" qualified 121gdb_test_no_output "tstart" 122gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" \ 123 "continue to end" 124gdb_test_no_output "tstop" 125gdb_test "tstatus" 126gdb_test "info tracepoints" \ 127 "Num Type\[ \]+Disp Enb Address\[ \]+What.* 128\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+. 129\[\t \]+tracepoint already hit 1 time. 130\[\t \]+trace buffer usage ${decimal} bytes. 131\[\t \]+collect gdb_struct1_test. 132\tinstalled on target. 133\[0-9\]+\[\t \]+tracepoint keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+. 134\tinstalled on target." \ 135 "2.6: info tracepoints (trace buffer usage)" 136