* lib/gdb.exp (inferior_exited_re): Match. leading `['. Wrap in
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.cp / annota3.exp
CommitLineData
7b6bb8da
JB
1# Copyright 2003, 2004, 2007, 2008, 2009, 2010, 2011
2# Free Software Foundation, Inc.
6009d884
AC
3
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
e22f8b7c 6# the Free Software Foundation; either version 3 of the License, or
6009d884 7# (at your option) any later version.
e22f8b7c 8#
6009d884
AC
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12# GNU General Public License for more details.
e22f8b7c 13#
6009d884 14# You should have received a copy of the GNU General Public License
e22f8b7c 15# along with this program. If not, see <http://www.gnu.org/licenses/>.
6009d884 16
6009d884
AC
17# This file was written by Elena Zannoni (ezannoni@cygnus.com)
18
19if $tracelevel then {
20 strace $tracelevel
21}
22
23
24#
25# test running programs
26#
6009d884
AC
27
28if { [skip_cplus_tests] } { continue }
29
30set testfile "annota3"
31set srcfile ${testfile}.cc
32set binfile ${objdir}/${subdir}/${testfile}
33
fc91c6c2 34if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++ nowarnings}] != "" } {
b60f0898
JB
35 untested annota3.exp
36 return -1
6009d884
AC
37}
38
39# are we on a target board? If so, don't run these tests.
40# note: this is necessary because we cannot use runto_main (which would
41# work for remote targets too) because of the different prompt we get
42# when using annotation level 2.
43#
44if [is_remote target] then {
45 return 0
46}
47
48
49gdb_exit
50gdb_start
51gdb_reinitialize_dir $srcdir/$subdir
52gdb_load ${binfile}
53
54if [target_info exists gdb_stub] {
55 gdb_step_for_stub;
56}
57
58#
59# line number where we need to stop in main
60#
61set main_line 25
62
63# The commands we test here produce many lines of output; disable "press
64# <return> to continue" prompts.
f8d3bf8f 65gdb_test_no_output "set height 0"
6009d884
AC
66
67#
68# break at main
69#
70gdb_test "break 25" \
71 "Breakpoint.*at.* file .*$srcfile, line.*" \
72 "breakpoint main"
73
74
75#
76# NOTE: this prompt is OK only when the annotation level is > 1
77# NOTE: When this prompt is in use the gdb_test procedure cannot be used because
78# it assumes that the last char of the gdb_prompt is a white space. This is not
79# true with this annotated prompt. So we must use send_gdb and gdb_expect.
80#
81
82set old_gdb_prompt $gdb_prompt
83set gdb_prompt "\r\n\032\032pre-prompt\r\n$gdb_prompt \r\n\032\032prompt\r\n"
84
85send_gdb "set annotate 3\n"
86gdb_expect_list "annotation set at level 3" "\r\n$gdb_prompt$" {
87 "set annotate 3"
88}
89
90send_gdb "run\n"
91gdb_expect_list "first run until main breakpoint" "$gdb_prompt$" {
92 "\r\n\032\032post-prompt\r\n"
93 "Starting program: .*annota3 \r\n"
6009d884 94 "\r\n\032\032starting\r\n"
6009d884
AC
95 "\r\n\032\032breakpoint 1\r\n"
96 "\r\n"
616f635d
NR
97 "Breakpoint 1, "
98 "\r\n\032\032frame-begin 0 0x\[0-9a-z\]+\r\n"
99 "main \\(\\) at .*annota3.cc:25\r\n"
6009d884
AC
100 "\r\n\032\032source.*annota3.cc:25:.*:beg:0x\[0-9a-z\]+\r\n"
101 "\r\n\032\032stopped\r\n"
102}
103
104#
105# print class 'a' with public fields.
106#
107send_gdb "print a\n"
108gdb_expect_list "print class" "$gdb_prompt$" {
109 "\r\n\032\032post-prompt\r\n"
110 ".*= \\{x = 1, y = 2\\}\r\n"
111}
112
113#
114# continue until exit
115# this will test:
116# annotate-exited
117#
118send_gdb "continue\n"
eceb0c5f 119gdb_expect_list "continue to exit" "$gdb_prompt$" [concat {
6009d884
AC
120 "\r\n\032\032post-prompt\r\n"
121 "Continuing.\r\n"
122 "\r\n\032\032starting\r\n"
6009d884 123 "a.x is 1\r\n"
eceb0c5f 124 "\r\n\032\032exited 0\r\n"} [list "$inferior_exited_re normally.\r\n"] {
6009d884 125 "\r\n\032\032stopped\r\n"
eceb0c5f 126}]
6009d884
AC
127
128#
129# delete all breakpoints
130#
131send_gdb "delete\n"
132gdb_expect {
133 -re ".*Delete all breakpoints. \\(y or n\\) \r\n\032\032query.*$" {
134 send_gdb "y\n"
135 gdb_expect {
136 -re "\r\n\032\032post-query\r\n$gdb_prompt$" { pass "delete bps" }
137 -re ".*$gdb_prompt$" { fail "delete bps" }
138 timeout { fail "delete bps (timeout)" }
139 }
140 }
141 -re ".*$gdb_prompt$" { fail "delete bps" }
142 timeout { fail "delete bps (timeout)" }
143}
144
145#
146# break at first line of main.
147#
148send_gdb "break 22\n"
149gdb_expect_list "break at main" "$gdb_prompt$" {
150 "\r\n\032\032post-prompt\r\n"
6009d884
AC
151 "Breakpoint.*at 0x\[a-z0-9\]+: file.*annota3.cc, line 22.\r\n"
152}
153
154#
155# run program up to breakpoint.
156#
157
158
159send_gdb "run\n"
160gdb_expect_list "second run until main breakpoint" "$gdb_prompt$" {
161 "\r\n\032\032post-prompt\r\n"
6009d884 162 "\r\n\032\032starting\r\n"
6009d884
AC
163 "\r\n\032\032breakpoint 2\r\n"
164 "\r\n"
616f635d
NR
165 "Breakpoint 2, "
166 "\r\n\032\032frame-begin 0 0x\[0-9a-z\]+\r\n"
167 "main \\(\\) at .*annota3.cc:22\r\n"
6009d884
AC
168 "\r\n\032\032source.*annota3.cc:22:.*:beg:0x\[0-9a-z\]+\r\n"
169 "\r\n\032\032stopped\r\n"
170}
171
172#
173# set up a watch point on a.x
174#
175send_gdb "watch a.x\n"
176gdb_expect_list "set watch on a.x" "$gdb_prompt$" {
177 "\r\n\032\032post-prompt\r\n"
6009d884
AC
178 ".*atchpoint 3: a.x\r\n" \
179}
180
181#
182# do a next, so that the watchpoint triggers. This will test:
183# annotate-watchpoint
184#
f8d3bf8f 185gdb_test_multiple "next" "watch triggered on a.x" {
cc8e9b12 186 -re "\r\n\032\032post-prompt\r\n\r\n\032\032starting\r\n\r\n\032\032watchpoint 3\r\n.*atchpoint 3: a.x\r\n\r\nOld value = 0\r\nNew value = 1\r\n\r\n(\032\032frame-begin 0 0x\[0-9a-z\]+\r\n|)main \\(\\) at .*$srcfile:$decimal\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032stopped\r\n.*$gdb_prompt$" {
6009d884
AC
187 pass "watch triggered on a.x"
188 }
3ca42dbe 189 -re "\r\n\032\032post-prompt\r\n\r\n\032\032starting\r\n\r\n\032\032source .*$srcfile.*beg:$hex\r\n\r\n\032\032stopped\r\n$gdb_prompt$" {
6009d884
AC
190 kfail "gdb/38" "watch triggered on a.x"
191 }
6009d884
AC
192}
193
194#
195# send ^C to gdb, so that the quit() function gets called
196# and annotate-quit is tested
197# test:
198# annotate-quit
199#
6009d884
AC
200send_gdb "\003"
201gdb_expect_list "annotate-quit" "$gdb_prompt$" {
202 "\r\n\032\032error-begin\r\n"
203 "Quit\r\n"
204 "\r\n\032\032quit\r\n"
205}
206
207#
208# FIXME: the testsuite does not currently have tests for
209# annotate_catchpoints and annotate_function_call
210# and a few variants of the annotations that are
211# tested (marked by FIXME on the annot?.exp files)
212#
213
214# reinstall the old prompt for the rest of the testsuite.
215
216set gdb_prompt $old_gdb_prompt
217
This page took 0.824519 seconds and 4 git commands to generate.