Update copyright year range in all GDB files.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.trace / tspeed.exp
1 # Copyright 2011-2019 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 load_lib "trace-support.exp"
17
18 if {[skip_shlib_tests]} {
19 return 0
20 }
21
22 standard_testfile
23 set executable $testfile
24
25 # Check that the target supports trace.
26 if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile executable $options] != "" } {
27 untested "failed to compile"
28 return -1
29 }
30
31 clean_restart ${testfile}
32
33 if ![runto_main] {
34 fail "can't run to main to check for trace support"
35 return -1
36 }
37
38 if ![gdb_target_supports_trace] {
39 unsupported "target does not support trace"
40 return -1
41 }
42
43 # Compile the test case with the in-process agent library.
44 set ipalib [get_in_proc_agent]
45
46 if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
47 executable [concat {debug c} shlib=$ipalib]] != "" } {
48 untested "failed to compile"
49 return -1
50 }
51
52 # Typically we need a little extra time for this test.
53 set timeout 180
54
55 set ws "\[\r\n\t \]+"
56 set cr "\[\r\n\]+"
57
58 #
59 # Utility procs
60 #
61
62 proc prepare_for_trace_test {} {
63 global executable
64 global ipalib
65
66 clean_restart $executable
67 gdb_load_shlib $ipalib
68
69 runto_main
70
71 set testline [gdb_get_line_number "set pre-run breakpoint here"]
72
73 gdb_test "break $testline" ".*" ""
74
75 set testline [gdb_get_line_number "set post-run breakpoint here"]
76
77 gdb_test "break $testline" ".*" ""
78 }
79
80 proc run_trace_experiment {} {
81
82 gdb_test "continue" \
83 ".*Breakpoint \[0-9\]+, main .*" \
84 "advance to trace begin"
85
86 gdb_test_no_output "tstart" "start trace experiment"
87
88 gdb_test "continue" \
89 ".*Breakpoint \[0-9\]+, main .*" \
90 "advance through tracing"
91
92 gdb_test "tstatus" ".*Trace .*" "check on trace status"
93
94 gdb_test "tstop" "" ""
95 }
96
97 proc gdb_slow_trace_speed_test { } {
98
99 gdb_delete_tracepoints
100
101 gdb_test "print iters = init_iters" ".* = .*"
102
103 set testline [gdb_get_line_number "set tracepoint here"]
104
105 gdb_test "trace $testline if (globfoo != 12 && globfoo2 == 45)" \
106 "Tracepoint \[0-9\]+ at .*" \
107 "set slow tracepoint"
108
109 # Begin the test.
110 run_trace_experiment
111 }
112
113 proc gdb_fast_trace_speed_test { } {
114 global gdb_prompt
115
116 gdb_delete_tracepoints
117
118 gdb_test "print iters = init_iters" ".* = .*"
119
120 set run_ftrace 0
121
122 set testline [gdb_get_line_number "set tracepoint here"]
123
124 gdb_test_multiple "ftrace $testline if (globfoo != 12 && globfoo2 == 45)" \
125 "set conditional fast tracepoint" {
126 -re "Fast tracepoint \[0-9\]+ at .*\r\n$gdb_prompt $" {
127 pass "set conditional fast tracepoint, done"
128 set run_ftrace 1
129 }
130 -re "May not have a fast tracepoint at .*\r\n$gdb_prompt $" {
131 pass "set conditional fast tracepoint, not allowed at line"
132 }
133 }
134
135 # If the fast tracepoint couldn't be set, don't bother with the run.
136 if { $run_ftrace == 1 } then {
137
138 # Begin the test.
139 run_trace_experiment
140 }
141 }
142
143 proc gdb_trace_collection_test {} {
144
145 prepare_for_trace_test
146
147 gdb_slow_trace_speed_test
148
149 gdb_fast_trace_speed_test
150 }
151
152 clean_restart $executable
153 gdb_load_shlib $ipalib
154
155 runto_main
156
157 if { ![gdb_target_supports_trace] } then {
158 unsupported "current target does not support trace"
159 return 1
160 }
161
162 # Body of test encased in a proc so we can return prematurely.
163 gdb_trace_collection_test
This page took 0.04437 seconds and 4 git commands to generate.