aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.trace/infotrace.exp
blob: b5d3ee010933c53f1930a2de4cd1beb7ffde43ca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#   Copyright 1998-2019 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/>.

# This file was written by Michael Snyder (msnyder@cygnus.com)

load_lib "trace-support.exp"


gdb_exit
gdb_start

standard_testfile actions.c

if ![gdb_trace_common_supports_arch] {
    unsupported "no trace-common.h support for arch"
    return -1
}

if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
	  executable {debug nowarnings}] != "" } {
    untested "failed to compile"
    return -1
}
gdb_reinitialize_dir $srcdir/$subdir

# If testing on a remote host, download the source file.
# remote_download host $srcdir/$subdir/$srcfile

gdb_file_cmd $binfile

#
# test "info tracepoints" command
#

gdb_delete_tracepoints
set c_test_num [gdb_gettpnum gdb_c_test]
set asm_test_num [gdb_gettpnum gdb_asm_test]
if { $c_test_num <= 0 || $asm_test_num <= 0 } then {
    fail "setting tracepoints"
    return
}

# 2.1 info tracepoints (all)
gdb_test "info tracepoints" \
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
\[\t \]+not installed on target.
\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+.
\[\t \]+not installed on target." \
    "2.1: info tracepoints (all)"

# 2.2 info tracepoint (specific)
gdb_test "info tracepoint $c_test_num" \
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
\[\t \]+not installed on target." \
    "2.2a: info tracepoint $c_test_num (gdb_c_test)"

gdb_test "info tracepoint $asm_test_num" \
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+.
\[\t \]+not installed on target." \
    "2.2b: info tracepoint $asm_test_num (gdb_asm_test)"

# 2.3 info tracepoint (invalid tracepoint number)
gdb_test "info tracepoint [expr $c_test_num + $asm_test_num]" \
    "No tracepoint matching '[expr $c_test_num + $asm_test_num]'." \
    "2.3: info tracepoint (invalid tracepoint number)"

# 2.4 info tracepoints (list of numbers)
gdb_test_multiple "info tracepoints $c_test_num $asm_test_num " \
    "2.4: info trace rejects multiple tracepoint numbers" {
	-re "Num Enb .*$gdb_prompt $" {
	    fail "2.4: info trace rejects multiple tracepoint numbers"
	}
	-re ".*$gdb_prompt $" {
	    pass "2.4: info trace rejects multiple tracepoint numbers"
	}
    }

# 2.5 help info trace
gdb_test "help info tracepoints" \
    "Status of specified tracepoints .all tracepoints if no argument.*" \
    "2.5: help info tracepoints"

# 2.6 info tracepoints (check trace buffer usage).  We need a live
# tracing.

# Load the binary to the target too.
gdb_load $binfile

# Can't use runto_main here, because that would delete the tracepoints
# created above.
gdb_breakpoint "main"
gdb_trace_setactions "collect on tracepoint 1" "1" \
	"collect gdb_struct1_test" "^$"
gdb_run_cmd
if {[gdb_test "" "Breakpoint ${decimal}, main.*"] != 0} {
    fail "can't run to main"
    return -1
}

if { ![gdb_target_supports_trace] } then {
    unsupported "current target does not support trace"
    return 1
}

gdb_breakpoint "end" qualified
gdb_test_no_output "tstart"
gdb_test "continue" "Continuing\\.\[ \r\n\]+Breakpoint.*" \
    "continue to end"
gdb_test_no_output "tstop"
gdb_test "tstatus"
gdb_test "info tracepoints" \
    "Num     Type\[ \]+Disp Enb Address\[ \]+What.*
\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_c_test at .*$srcfile:\[0-9\]+.
\[\t \]+tracepoint already hit 1 time.
\[\t \]+trace buffer usage ${decimal} bytes.
\[\t \]+collect gdb_struct1_test.
\tinstalled on target.
\[0-9\]+\[\t \]+tracepoint     keep y.* in gdb_asm_test at .*$srcfile:\[0-9\]+.
\tinstalled on target." \
    "2.6: info tracepoints (trace buffer usage)"