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