* lib/gdb.exp (gdb_test): Between $pattern and $prompt, expect
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / scope.exp
1 # Copyright (C) 1992, 1994 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 2 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, write to the Free Software
15 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
16
17 # Please email any bugs, comments, and/or additions to this file to:
18 # bug-gdb@prep.ai.mit.edu
19
20 # This file was written by Fred Fish. (fnf@cygnus.com)
21
22 if $tracelevel then {
23 strace $tracelevel
24 }
25
26 set prms_id 0
27 set bug_id 0
28
29 set binfile "scope"
30 set srcfile $binfile.c
31
32 if ![file exists $objdir/$subdir/$binfile] then {
33 perror "$objdir/$subdir/$binfile does not exist."
34 return 0
35 }
36
37 # Test locating various things when stopped just inside main, after
38 # running init(). To prevent cascading of errors, we report the
39 # first one and quit. If all pass, then we print the pass results.
40
41 proc test_at_main {} {
42 global prompt
43 global decimal
44 global det_file
45 global srcdir
46 global subdir
47
48 # skip past init. There may be a call to __main at the start of
49 # main, so the first next may only get us to the init call.
50 send "next\n"
51 expect {
52 -re "$decimal.*foo \[)(\]+;\r\n$prompt $" {
53 pass "next over init() in main"
54 }
55 -re "$decimal.*init \[)(\]+;\r\n$prompt $"\
56 { send "next\n" ; exp_continue }
57 -re "$prompt $" { fail "next over init() in main" ; return }
58 timeout { fail "(timeout) next over init() in main" ; return }
59 }
60
61 # Print scope0.c::filelocal, which is 1
62
63 send "print filelocal\n"
64 expect {
65 -re "\\\$$decimal = 1\r\n$prompt $" { pass "print filelocal" }
66 -re "$prompt $" { fail "print filelocal" ; return }
67 timeout {
68 fail "(timeout) print filelocal" ; return
69 }
70 }
71
72 # The RS/6000 does not seem to be handle print 'file'::var.
73 setup_xfail "rs6000-*-*"
74 send "print 'scope0.c'::filelocal\n"
75 expect {
76 -re "\\\$$decimal = 1\r\n$prompt $" {
77 pass "print 'scope0.c'::filelocal at main"
78 }
79 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
80 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
81 exp_continue
82 }
83 -re "$prompt $" { fail "print 'scope0.c'::filelocal at main" ; return }
84 timeout {
85 fail "(timeout) print 'scope0.c'::filelocal at main" ; return
86 }
87 }
88
89 # Print scope0.c::filelocal_bss, which is 101
90
91 send "print filelocal_bss\n"
92 expect {
93 -re "\\\$$decimal = 101\r\n$prompt $" {
94 pass "print filelocal_bss"
95 }
96 -re "$prompt $" { fail "print filelocal_bss" ; return }
97 timeout {
98 fail "(timeout) print filelocal_bss" ; return
99 }
100 }
101
102 setup_xfail "rs6000-*-*"
103 send "print 'scope0.c'::filelocal_bss\n"
104 expect {
105 -re "\\\$$decimal = 101\r\n$prompt $" {
106 pass "print 'scope0.c'::filelocal_bss"
107 }
108 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
109 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
110 exp_continue
111 }
112 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
113 timeout {
114 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
115 }
116 }
117
118 # Print scope0.c::filelocal_ro, which is 201
119
120 send "print filelocal_ro\n"
121 expect {
122 -re "\\\$$decimal = 201\r\n$prompt $" { pass "print filelocal_ro" }
123 -re "$prompt $" { fail "print filelocal_ro" ; return }
124 timeout {
125 fail "(timeout) print filelocal_ro" ; return
126 }
127 }
128
129 setup_xfail "rs6000-*-*"
130 send "print 'scope0.c'::filelocal_ro\n"
131 expect {
132 -re "\\\$$decimal = 201\r\n$prompt $" {
133 pass "print 'scope0.c'::filelocal_ro"
134 }
135 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
136 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
137 exp_continue
138 }
139 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
140 timeout {
141 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
142 }
143 }
144
145 # Print scope1.c::filelocal, which is 2
146
147 setup_xfail "rs6000-*-*"
148 send "print 'scope1.c'::filelocal\n"
149 expect {
150 -re "\\\$$decimal = 2\r\n$prompt $" {
151 pass "print 'scope1.c'::filelocal"
152 }
153 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
154 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
155 exp_continue
156 }
157 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
158 timeout {
159 fail "(timeout) print 'scope1.c'::filelocal" ; return
160 }
161 }
162
163 # Print scope1.c::filelocal_bss, which is 102
164
165 setup_xfail "rs6000-*-*"
166 send "print 'scope1.c'::filelocal_bss\n"
167 expect {
168 -re "\\\$$decimal = 102\r\n$prompt $" {
169 pass "print 'scope1.c'::filelocal_bss"
170 }
171 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
172 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
173 exp_continue
174 }
175 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
176 timeout {
177 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
178 }
179 }
180
181 # Print scope1.c::filelocal_ro, which is 202
182
183 setup_xfail "rs6000-*-*"
184 send "print 'scope1.c'::filelocal_ro\n"
185 expect {
186 -re "\\\$$decimal = 202\r\n$prompt $" {
187 pass "print 'scope1.c'::filelocal_ro"
188 }
189 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
190 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
191 exp_continue
192 }
193 -re "$prompt " {fail "print 'scope1.c'::filelocal_ro" ; return }
194 timeout {
195 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
196 }
197 }
198
199 # Print scope1.c::foo::funclocal, which is 3
200
201 setup_xfail "mips-*-*" 1843
202 send "print foo::funclocal\n"
203 expect {
204 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
205 -re "$prompt $" { fail "print foo::funclocal" ; return }
206 timeout {
207 fail "(timeout) print foo::funclocal" ; return
208 }
209 }
210
211 setup_xfail "rs6000-*-*"
212 send "print 'scope1.c'::foo::funclocal\n"
213 expect {
214 -re "\\\$$decimal = 3\r\n$prompt $" {
215 pass "print 'scope1.c'::foo::funclocal"
216 }
217 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
218 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
219 exp_continue
220 }
221 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
222 timeout {
223 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
224 }
225 }
226
227 # Print scope1.c::foo::funclocal_ro, which is 203
228
229 send "print foo::funclocal_ro\n"
230 expect {
231 -re "\\\$$decimal = 203\r\n$prompt $" {
232 pass "print foo::funclocal_ro"
233 }
234 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
235 timeout {
236 fail "(timeout) print foo::funclocal_ro" ; return
237 }
238 }
239
240 setup_xfail "rs6000-*-*"
241 send "print 'scope1.c'::foo::funclocal_ro\n"
242 expect {
243 -re "\\\$$decimal = 203\r\n$prompt $" {
244 pass "print 'scope1.c'::foo::funclocal_ro" }
245 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
246 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
247 exp_continue
248 }
249 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
250 timeout {
251 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
252 }
253 }
254
255 # Print scope1.c::bar::funclocal, which is 4
256
257 send "print bar::funclocal\n"
258 expect {
259 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
260 -re "$prompt $" { fail "print bar::funclocal" ; return }
261 timeout {
262 fail "(timeout) print bar::funclocal" ; return
263 }
264 }
265
266 setup_xfail "rs6000-*-*"
267 send "print 'scope1.c'::bar::funclocal\n"
268 expect {
269 -re "\\\$$decimal = 4\r\n$prompt $" {
270 pass "print 'scope1.c'::bar::funclocal"
271 }
272 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
273 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
274 exp_continue
275 }
276 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
277 timeout {
278 fail "print 'scope1.c'::bar::funclocal" ; return
279 }
280 }
281 }
282
283 proc test_at_foo {} {
284 global prompt
285 global decimal
286 global det_file
287 global srcdir
288 global subdir
289
290 send "next\n"
291 expect {
292 -re ".*bar \[)(\]+;\r\n$prompt $" {}
293 -re "$prompt $" { fail "continue to foo()" ; return }
294 timeout { fail "(timeout) continue to foo()" ; return }
295 }
296
297 # Print scope0.c::filelocal, which is 1
298
299 setup_xfail "rs6000-*-*"
300 send "print 'scope0.c'::filelocal\n"
301 expect {
302 -re "\\\$$decimal = 1\r\n$prompt $" {
303 pass "print 'scope0.c'::filelocal at foo"
304 }
305 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
306 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
307 exp_continue
308 }
309 -re "$prompt $" { fail "print 'scope0.c'::filelocal at foo" ; return }
310 timeout {
311 fail "(timeout) print 'scope0.c'::filelocal at foo" ; return
312 }
313 }
314
315 # Print scope0.c::filelocal_bss, which is 101
316
317 setup_xfail "rs6000-*-*"
318 send "print 'scope0.c'::filelocal_bss\n"
319 expect {
320 -re "\\\$$decimal = 101\r\n$prompt $" { pass "print 'scope0.c'::filelocal_bss" }
321 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
322 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
323 exp_continue
324 }
325 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
326 timeout {
327 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
328 }
329 }
330
331 # Print scope0.c::filelocal_ro, which is 201
332
333 setup_xfail "rs6000-*-*"
334 send "print 'scope0.c'::filelocal_ro\n"
335 expect {
336 -re "\\\$$decimal = 201\r\n$prompt $" { pass "print 'scope0.c'::filelocal_ro" }
337 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
338 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
339 exp_continue
340 }
341 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
342 timeout {
343 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
344 }
345 }
346
347 # Print scope1.c::filelocal, which is 2
348
349 send "print filelocal\n"
350 expect {
351 -re "\\\$$decimal = 2\r\n$prompt $" { pass "print filelocal" }
352 -re "$prompt $" { fail "print filelocal" ; return }
353 timeout {
354 fail "(timeout) print filelocal" ; return
355 }
356 }
357
358 setup_xfail "rs6000-*-*"
359 send "print 'scope1.c'::filelocal\n"
360 expect {
361 -re "\\\$$decimal = 2\r\n$prompt $" { pass "print 'scope1.c'::filelocal" }
362 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
363 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
364 exp_continue
365 }
366 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
367 timeout {
368 fail "(timeout) print 'scope1.c'::filelocal" ; return
369 }
370 }
371
372 # Print scope1.c::filelocal_bss, which is 102
373
374 send "print filelocal_bss\n"
375 expect {
376 -re "\\\$$decimal = 102\r\n$prompt $" { pass "print filelocal_bss" }
377 -re "$prompt $" { fail "print filelocal_bss" ; return }
378 timeout {
379 fail "(timeout) print filelocal_bss" ; return
380 }
381 }
382
383 setup_xfail "rs6000-*-*"
384 send "print 'scope1.c'::filelocal_bss\n"
385 expect {
386 -re "\\\$$decimal = 102\r\n$prompt $" { pass "print 'scope1.c'::filelocal_bss" }
387 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
388 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
389 exp_continue
390 }
391 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
392 timeout {
393 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
394 }
395 }
396
397 # Print scope1.c::filelocal_ro, which is 202
398
399 send "print filelocal_ro\n"
400 expect {
401 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print filelocal_ro" }
402 -re "$prompt $" { fail "print filelocal_ro" ; return }
403 timeout {
404 fail "(timeout) print filelocal_ro" ; return
405 }
406 }
407
408 setup_xfail "rs6000-*-*"
409 send "print 'scope1.c'::filelocal_ro\n"
410 expect {
411 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print 'scope1.c'::filelocal_ro" }
412 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
413 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
414 exp_continue
415 }
416 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
417 timeout {
418 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
419 }
420 }
421
422 # Print scope1.c::foo::funclocal, which is 3
423
424 send "print funclocal\n"
425 expect {
426 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print funclocal" }
427 -re "$prompt $" { fail "print funclocal" ; return }
428 timeout {
429 fail "(timeout) print funclocal" ; return
430 }
431 }
432
433 setup_xfail "mips-*-*" 1843
434 send "print foo::funclocal\n"
435 expect {
436 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
437 -re "$prompt $" { fail "print foo::funclocal" ; return }
438 timeout {
439 fail "(timeout) print foo::funclocal" ; return
440 }
441 }
442
443 setup_xfail "rs6000-*-*"
444 send "print 'scope1.c'::foo::funclocal\n"
445 expect {
446 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal" }
447 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
448 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
449 exp_continue
450 }
451 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
452 timeout {
453 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
454 }
455 }
456
457 # Print scope1.c::foo::funclocal_bss, which is 103
458
459 send "print funclocal_bss\n"
460 expect {
461 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print funclocal_bss" }
462 -re "$prompt $" { fail "print funclocal_bss" ; return }
463 timeout {
464 fail "(timeout) print funclocal_bss" ; return
465 }
466 }
467
468 send "print foo::funclocal_bss\n"
469 expect {
470 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print foo::funclocal_bss" }
471 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
472 timeout {
473 fail "(timeout) print foo::funclocal_bss" ; return
474 }
475 }
476
477 setup_xfail "rs6000-*-*"
478 send "print 'scope1.c'::foo::funclocal_bss\n"
479 expect {
480 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal_bss" }
481 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
482 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
483 exp_continue
484 }
485 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
486 timeout {
487 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
488 }
489 }
490
491 # Print scope1.c::foo::funclocal_ro, which is 203
492
493 send "print funclocal_ro\n"
494 expect {
495 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print funclocal_ro" }
496 -re "$prompt $" { fail "print funclocal_ro" ; return }
497 timeout {
498 fail "(timeout) print funclocal_ro" ; return
499 }
500 }
501
502 send "print foo::funclocal_ro\n"
503 expect {
504 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print foo::funclocal_ro" }
505 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
506 timeout {
507 fail "(timeout) print foo::funclocal_ro" ; return
508 }
509 }
510
511 setup_xfail "rs6000-*-*"
512 send "print 'scope1.c'::foo::funclocal_ro\n"
513 expect {
514 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal_ro" }
515 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
516 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
517 exp_continue
518 }
519 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
520 timeout {
521 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
522 }
523 }
524
525 # Print scope1.c::bar::funclocal, which is 4
526
527 send "print bar::funclocal\n"
528 expect {
529 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
530 -re "$prompt $" { fail "print bar::funclocal" ; return }
531 timeout {
532 fail "(timeout) print bar::funclocal" ; return
533 }
534 }
535
536 setup_xfail "rs6000-*-*"
537 send "print 'scope1.c'::bar::funclocal\n"
538 expect {
539 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print 'scope1.c'::bar::funclocal" }
540 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
541 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
542 exp_continue
543 }
544 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
545 timeout {
546 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
547 }
548 }
549 }
550
551 proc test_at_bar {} {
552 global prompt
553 global decimal
554 global det_file
555 global srcdir
556 global subdir
557
558 send "next\n"
559 expect {
560 -re ".*$prompt $" {}
561 timeout { fail "next in bar()" ; return }
562 }
563
564 # Print scope0.c::filelocal, which is 1
565
566 setup_xfail "rs6000-*-*"
567 send "print 'scope0.c'::filelocal\n"
568 expect {
569 -re "\\\$$decimal = 1\r\n$prompt $" {
570 pass "print 'scope0.c'::filelocal at bar"
571 }
572 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
573 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
574 exp_continue
575 }
576 -re "$prompt $" { fail "print 'scope0.c'::filelocal at bar" ; return }
577 timeout {
578 fail "(timeout) print 'scope0.c'::filelocal at bar" ; return
579 }
580 }
581
582 # Print scope0.c::filelocal_bss, which is 101
583
584 setup_xfail "rs6000-*-*"
585 send "print 'scope0.c'::filelocal_bss\n"
586 expect {
587 -re "\\\$$decimal = 101\r\n$prompt $" { pass "print 'scope0.c'::filelocal_bss" }
588 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
589 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
590 exp_continue
591 }
592 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
593 timeout {
594 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
595 }
596 }
597
598 # Print scope0.c::filelocal_ro, which is 201
599
600 setup_xfail "rs6000-*-*"
601 send "print 'scope0.c'::filelocal_ro\n"
602 expect {
603 -re "\\\$$decimal = 201\r\n$prompt $" { pass "print 'scope0.c'::filelocal_ro" }
604 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
605 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
606 exp_continue
607 }
608 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
609 timeout {
610 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
611 }
612 }
613
614 # Print scope1.c::filelocal, which is 2
615
616 send "print filelocal\n"
617 expect {
618 -re "\\\$$decimal = 2\r\n$prompt $" { pass "print filelocal" }
619 -re "$prompt $" { fail "print filelocal" ; return }
620 timeout {
621 fail "(timeout) print filelocal" ; return
622 }
623 }
624
625 setup_xfail "rs6000-*-*"
626 send "print 'scope1.c'::filelocal\n"
627 expect {
628 -re "\\\$$decimal = 2\r\n$prompt $" { pass "print 'scope1.c'::filelocal" }
629 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
630 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
631 exp_continue
632 }
633 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
634 timeout {
635 fail "(timeout) print 'scope1.c'::filelocal" ; return
636 }
637 }
638
639 # Print scope1.c::filelocal_bss, which is 102
640
641 send "print filelocal_bss\n"
642 expect {
643 -re "\\\$$decimal = 102\r\n$prompt $" { pass "print filelocal_bss" }
644 -re "$prompt $" { fail "print filelocal_bss" ; return }
645 timeout {
646 fail "(timeout) print filelocal_bss" ; return
647 }
648 }
649
650 setup_xfail "rs6000-*-*"
651 send "print 'scope1.c'::filelocal_bss\n"
652 expect {
653 -re "\\\$$decimal = 102\r\n$prompt $" { pass "print 'scope1.c'::filelocal_bss" }
654 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
655 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
656 exp_continue
657 }
658 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
659 timeout {
660 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
661 }
662 }
663
664 # Print scope1.c::filelocal_ro, which is 202
665
666 send "print filelocal_ro\n"
667 expect {
668 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print filelocal_ro" }
669 -re "$prompt $" { fail "print filelocal_ro" ; return }
670 timeout {
671 fail "(timeout) print filelocal_ro" ; return
672 }
673 }
674
675 setup_xfail "rs6000-*-*"
676 send "print 'scope1.c'::filelocal_ro\n"
677 expect {
678 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print 'scope1.c'::filelocal_ro" }
679 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
680 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
681 exp_continue
682 }
683 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
684 timeout {
685 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
686 }
687 }
688
689 # Print scope1.c::foo::funclocal, which is 3
690
691 setup_xfail "mips-*-*" 1843
692 send "print foo::funclocal\n"
693 expect {
694 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
695 -re "$prompt $" { fail "print foo::funclocal" ; return }
696 timeout {
697 fail "(timeout) print foo::funclocal" ; return
698 }
699 }
700
701 setup_xfail "rs6000-*-*"
702 send "print 'scope1.c'::foo::funclocal\n"
703 expect {
704 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal" }
705 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
706 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
707 exp_continue
708 }
709 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
710 timeout {
711 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
712 }
713 }
714
715 # Print scope1.c::foo::funclocal_bss, which is 103
716
717 send "print foo::funclocal_bss\n"
718 expect {
719 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print foo::funclocal_bss" }
720 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
721 timeout {
722 fail "(timeout) print foo::funclocal_bss" ; return
723 }
724 }
725
726 setup_xfail "rs6000-*-*"
727 send "print 'scope1.c'::foo::funclocal_bss\n"
728 expect {
729 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal_bss" }
730 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
731 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
732 exp_continue
733 }
734 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
735 timeout {
736 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
737 }
738 }
739
740 # Print scope1.c::foo::funclocal_ro, which is 203
741
742 send "print foo::funclocal_ro\n"
743 expect {
744 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print foo::funclocal_ro" }
745 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
746 timeout {
747 fail "(timeout) print foo::funclocal_ro" ; return
748 }
749 }
750
751 setup_xfail "rs6000-*-*"
752 send "print 'scope1.c'::foo::funclocal_ro\n"
753 expect {
754 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal_ro" }
755 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
756 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
757 exp_continue
758 }
759 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
760 timeout {
761 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
762 }
763 }
764
765 # Print scope1.c::bar::funclocal, which is 4
766
767 send "print funclocal\n"
768 expect {
769 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print funclocal" }
770 -re "$prompt $" { fail "print funclocal" ; return }
771 timeout {
772 fail "(timeout) print funclocal" ; return
773 }
774 }
775
776 send "print bar::funclocal\n"
777 expect {
778 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
779 -re "$prompt $" { fail "print bar::funclocal" ; return }
780 timeout {
781 fail "(timeout) print bar::funclocal" ; return
782 }
783 }
784
785 setup_xfail "rs6000-*-*"
786 send "print 'scope1.c'::bar::funclocal\n"
787 expect {
788 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print 'scope1.c'::bar::funclocal" }
789 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
790 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
791 exp_continue
792 }
793 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
794 timeout {
795 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
796 }
797 }
798
799 # Print scope1.c::bar::funclocal_bss, which is 104
800
801 send "print funclocal_bss\n"
802 expect {
803 -re "\\\$$decimal = 104\r\n$prompt $" { pass "print funclocal_bss" }
804 -re "$prompt $" { fail "print funclocal_bss" ; return }
805 timeout {
806 fail "(timeout) print funclocal_bss" ; return
807 }
808 }
809
810 send "print bar::funclocal_bss\n"
811 expect {
812 -re "\\\$$decimal = 104\r\n$prompt $" { pass "print bar::funclocal_bss" }
813 -re "$prompt $" { fail "print bar::funclocal_bss" ; return }
814 timeout {
815 fail "(timeout) print bar::funclocal_bss" ; return
816 }
817 }
818
819 setup_xfail "rs6000-*-*"
820 send "print 'scope1.c'::bar::funclocal_bss\n"
821 expect {
822 -re "\\\$$decimal = 104\r\n$prompt $" { pass "print 'scope1.c'::bar::funclocal_bss" }
823 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
824 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal_bss\n"
825 exp_continue
826 }
827 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal_bss" ; return }
828 timeout {
829 fail "(timeout) print 'scope1.c'::bar::funclocal_bss" ; return
830 }
831 }
832 }
833
834 # FIXME: This test was originally part of some local scope resolution
835 # tests. It probably belongs somewhere else now.
836
837 proc test_at_autovars {} {
838 global prompt
839 global decimal
840 global hex
841 global srcfile
842
843 # Test symbol table lookup with 100 local (auto) variables.
844
845 send "break marker1\n" ; expect -re ".*$prompt $"
846
847 send "cont\n"
848 expect {
849 -re "Break.* marker1 \[)(\]+ at .*:$decimal.*$prompt $" {
850 send "up\n"
851 expect {
852 -re ".*$prompt $" {}
853 timeout { fail "up from marker1" ; return }
854 }
855 }
856 -re "$prompt $" { fail "continue to marker1" ; return }
857 timeout { fail "(timeout) continue to marker1" ; return }
858 }
859
860 set count 0
861 while {$count < 100} {
862 send "print i$count\n"
863 expect {
864 -re ".* = $count\r\n$prompt $" {}
865 -re "$prompt $" {
866 fail "bad value for auto variable i$count"; return
867 }
868 timeout {
869 fail "(timeout) bad value for auto variable i$count"; return
870 }
871 }
872 set count [expr $count+1]
873 }
874 clear_xfail "*-*-*"
875 pass "$count auto variables correctly initialized"
876
877 # Test that block variable sorting is not screwing us.
878 gdb_test "frame" "#.*autovars \\(bcd=5, abc=6\\).*" "args in correct order"
879 }
880
881 proc test_at_localscopes {} {
882 global prompt
883 global decimal
884 global hex
885 global srcfile
886
887 send "break marker2\n" ; expect -re ".*$prompt $"
888 send "break marker3\n" ; expect -re ".*$prompt $"
889 send "break marker4\n" ; expect -re ".*$prompt $"
890
891 send "cont\n"
892 expect {
893 -re "Break.* marker2 \[)(\]+ at .*:$decimal.*$prompt $" {
894 send "up\n"
895 expect {
896 -re ".*$prompt $" {}
897 timeout { fail "up from marker2" ; return }
898 }
899 }
900 -re "$prompt $" { fail "continue to marker2" ; return }
901 timeout { fail "(timeout) continue to marker2" ; return }
902 }
903
904 # Should be at first (outermost) scope. Check values.
905
906 send "print localval\n"
907 expect {
908 -re ".* = 10\r\n$prompt $" { pass "bad value for localval, outer scope" }
909 -re "$prompt $" { fail "bad value for localval, outer scope" ; return }
910 default {
911 fail "(timeout) bad value for localval, outer scope" ; return
912 }
913 }
914 send "print localval1\n"
915 expect {
916 -re ".* = 11\r\n$prompt $" { pass "bad value for localval1" }
917 -re "$prompt $" { fail "bad value for localval1" ; return }
918 timeout { fail "(timeout) bad value for localval1" ; return }
919 }
920 send "print localval2\n"
921 expect {
922 -re "No symbol \"localval2\" in current context.\r\n$prompt $" {
923 pass "bad value for localval2"
924 }
925 -re "$prompt $" { fail "bad value for localval2" ; return }
926 timeout { fail "(timeout) bad value for localval2" ; return }
927 }
928 send "print localval3\n"
929 expect {
930 -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
931 pass "bad value for localval3"
932 }
933 -re "$prompt $" { fail "bad value for localval3" ; return }
934 timeout { fail "(timeout) bad value for localval3" ; return }
935 }
936
937 send "cont\n"
938 expect {
939 -re "Break.* marker3 \[)(\]+ at .*:$decimal.*$prompt $" {
940 send "up\n"
941 expect {
942 -re ".*$prompt $" {}
943 timeout { fail "up from marker3" ; return }
944 }
945 }
946 -re "$prompt $" { fail "continue to marker3" ; return }
947 timeout { fail "(timeout) continue to marker3" ; return }
948 }
949
950 # Should be at next (first nested) scope. Check values.
951
952 send "print localval\n"
953 expect {
954 -re ".* = 20\r\n$prompt $" { pass "bad value for localval, first nested scope" }
955 -re "$prompt $" {
956 fail "bad value for localval, first nested scope" ; return
957 }
958 timeout {
959 fail "(timeout) bad value for localval, first nested scope" ;
960 return
961 }
962 }
963 send "print localval1\n"
964 expect {
965 -re ".* = 11\r\n$prompt $" { pass "bad value for localval1" }
966 -re "$prompt $" { fail "bad value for localval1" ; return }
967 timeout { fail "(timeout) bad value for localval1" ; return }
968 }
969 send "print localval2\n"
970 expect {
971 -re ".* = 12\r\n$prompt $" { pass "bad value for localval2" }
972 -re "$prompt $" { fail "bad value for localval2" ; return }
973 timeout { fail "(timeout) bad value for localval2" ; return }
974 }
975 send "print localval3\n"
976 expect {
977 -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
978 pass "bad value for localval3"
979 }
980 -re "$prompt $" { fail "bad value for localval3" ; return }
981 timeout { fail "(timeout) bad value for localval3" ; return }
982 }
983
984 # This test will only fail if the file was compiled by gcc, but
985 # there's no way to check that.
986 setup_xfail "mips-*-*" 1868
987 setup_xfail "a29k-*-udi" 2423
988 send "cont\n"
989 expect {
990 -re "Break.* marker4.*at .*:$decimal.*$prompt $" {
991 send "up\n"
992 expect {
993 -re ".*$prompt $" {}
994 timeout { fail "up from marker4" ; return }
995 }
996 }
997 -re "$prompt $" { fail "continue to marker4" ; return }
998 timeout { fail "(timeout) continue to marker4" ; return }
999 }
1000
1001 send "print localval\n"
1002 expect {
1003 -re ".* = 30\r\n$prompt $" { pass "bad value for localval, innermost scope" }
1004 -re "$prompt $" {
1005 fail "bad value for localval, innermost scope" ; return
1006 }
1007 timeout {
1008 fail "(timeout) bad value for localval, innermost scope" ; return
1009 }
1010 }
1011 send "print localval1\n"
1012 expect {
1013 -re ".* = 11\r\n$prompt $" { pass "bad value for localval1" }
1014 -re "$prompt $" { fail "bad value for localval1" ; return }
1015 timeout { fail "(timeout) bad value for localval1" ; return }
1016 }
1017 send "print localval2\n"
1018 expect {
1019 -re ".* = 12\r\n$prompt $" { pass "bad value for localval2" }
1020 -re "$prompt $" { fail "bad value for localval2" ; return }
1021 timeout { fail "(timeout) bad value for localval2" ; return }
1022 }
1023 send "print localval3\n"
1024 expect {
1025 -re ".* = 13\r\n$prompt $" { pass "bad value for localval3" }
1026 -re "$prompt $" { fail "bad value for localval3" ; return }
1027 timeout { fail "(timeout) bad value for localval3" ; return }
1028 }
1029 }
1030
1031 # Start with a fresh gdb.
1032
1033 gdb_exit
1034 gdb_start
1035 gdb_reinitialize_dir $srcdir/$subdir
1036 gdb_load $objdir/$subdir/$binfile
1037
1038 if [istarget "*-*-vxworks"] {
1039 set timeout 120
1040 }
1041
1042 # Test that variables in various segments print out correctly before
1043 # the program is run.
1044
1045 # AIX--sections get mapped to the same address so we can't get the right one.
1046 setup_xfail "rs6000-*-*"
1047
1048 gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
1049
1050 # gdb currently cannot access bss memory on some targets if the inferior
1051 # is not running.
1052 send "print 'scope0.c'::filelocal_bss\n"
1053 expect {
1054 -re "= 0.*$prompt $" {
1055 pass "print 'scope0.c'::filelocal_bss"
1056 }
1057 -re "Cannot access memory.*$prompt $" {
1058 setup_xfail "*-*-*"
1059 fail "print 'scope0.c'::filelocal_bss"
1060 }
1061 -re ".*$prompt $" {
1062 fail "print 'scope0.c'::filelocal_bss"
1063 }
1064 default {
1065 fail "print 'scope0.c'::filelocal_bss"
1066 }
1067 }
1068
1069 # AIX--sections get mapped to the same address so we can't get the right one.
1070 setup_xfail "rs6000-*-*"
1071
1072 gdb_test "print 'scope0.c'::filelocal" "= 1" \
1073 "print 'scope0.c'::filelocal before run"
1074
1075 if [runto main] then { test_at_main }
1076 if [istarget "mips-idt-*"] then {
1077 # Restart because IDT/SIM runs out of file descriptors.
1078 gdb_exit
1079 gdb_start
1080 gdb_reinitialize_dir $srcdir/$subdir
1081 gdb_load $objdir/$subdir/$binfile
1082 }
1083 if [runto foo] then { test_at_foo }
1084 if [istarget "mips-idt-*"] then {
1085 # Restart because IDT/SIM runs out of file descriptors.
1086 gdb_exit
1087 gdb_start
1088 gdb_reinitialize_dir $srcdir/$subdir
1089 gdb_load $objdir/$subdir/$binfile
1090 }
1091 if [runto bar] then { test_at_bar }
1092 if [istarget "mips-idt-*"] then {
1093 # Restart because IDT/SIM runs out of file descriptors.
1094 gdb_exit
1095 gdb_start
1096 gdb_reinitialize_dir $srcdir/$subdir
1097 gdb_load $objdir/$subdir/$binfile
1098 }
1099 if [runto localscopes] then { test_at_localscopes }
1100 if [istarget "mips-idt-*"] then {
1101 # Restart because IDT/SIM runs out of file descriptors.
1102 gdb_exit
1103 gdb_start
1104 gdb_reinitialize_dir $srcdir/$subdir
1105 gdb_load $objdir/$subdir/$binfile
1106 }
1107 if [runto autovars] then { test_at_autovars }
1108
1109 if [istarget "*-*-vxworks"] {
1110 set timeout 120
1111 }
This page took 0.054671 seconds and 5 git commands to generate.