1 # Copyright (C) 1992 Free Software Foundation, Inc.
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.
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.
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. */
17 # Please email any bugs, comments, and/or additions to this file to:
18 # bug-gdb@prep.ai.mit.edu
20 # This file was written by Fred Fish. (fnf@cygnus.com)
30 set srcfile $binfile.c
32 if ![file exists $objdir/$subdir/$binfile] then {
33 perror "$objdir/$subdir/$binfile does not exist."
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.
41 proc test_at_main {} {
50 # skip past init. There may be a call to __main at the start of
51 # main, so the first next may only get us to the init call.
54 -re "$decimal.*foo \[)(\]+;\r\n$prompt $" {}
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 }
61 # Print scope0.c::filelocal, which is 1
63 send "print filelocal\n"
65 -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
66 -re "$prompt $" { fail "print filelocal" ; return }
68 fail "(timeout) print filelocal" ; return
72 # The RS/6000 does not seem to be handle print 'file'::var.
73 setup_xfail "rs6000-*-*"
74 # This used to work, but is now broken for some reason.
76 send "print 'scope0.c'::filelocal\n"
78 -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
79 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
80 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
83 -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
85 fail "(timeout) print 'scope0.c'::filelocal" ; return
89 # Print scope0.c::filelocal_bss, which is 101
91 send "print filelocal_bss\n"
93 -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
94 -re "$prompt $" { print filelocal_bss" ; return }
96 fail "(timeout) print filelocal_bss" ; return
100 setup_xfail "rs6000-*-*"
101 send "print 'scope0.c'::filelocal_bss\n"
103 -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
104 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
105 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
108 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
110 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
114 # Print scope0.c::filelocal_ro, which is 201
116 send "print filelocal_ro\n"
118 -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
119 -re "$prompt $" { fail "print filelocal_ro" ; return }
121 fail "(timeout) print filelocal_ro" ; return
125 setup_xfail "rs6000-*-*"
126 send "print 'scope0.c'::filelocal_ro\n"
128 -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
129 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
130 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
133 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
135 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
139 # Print scope1.c::filelocal, which is 2
141 setup_xfail "rs6000-*-*"
142 send "print 'scope1.c'::filelocal\n"
144 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
145 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
146 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
149 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
151 fail "(timeout) print 'scope1.c'::filelocal" ; return
155 # Print scope1.c::filelocal_bss, which is 102
157 setup_xfail "rs6000-*-*"
158 send "print 'scope1.c'::filelocal_bss\n"
160 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
161 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
162 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
165 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
167 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
171 # Print scope1.c::filelocal_ro, which is 202
173 setup_xfail "rs6000-*-*"
174 send "print 'scope1.c'::filelocal_ro\n"
176 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
177 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
178 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
181 -re "$prompt " {fail "print 'scope1.c'::filelocal_ro" ; return }
183 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
187 # Print scope1.c::foo::funclocal, which is 3
189 setup_xfail "mips-*-*" 1843
190 send "print foo::funclocal\n"
192 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
193 -re "$prompt $" { fail "print foo::funclocal" ; return }
195 fail "(timeout) print foo::funclocal" ; return
199 setup_xfail "rs6000-*-*"
200 send "print 'scope1.c'::foo::funclocal\n"
202 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
203 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
204 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
207 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
209 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
213 # Print scope1.c::foo::funclocal_ro, which is 203
215 send "print foo::funclocal_ro\n"
217 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
218 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
220 fail "(timeout) print foo::funclocal_ro" ; return
224 setup_xfail "rs6000-*-*"
225 send "print 'scope1.c'::foo::funclocal_ro\n"
227 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
228 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
229 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
232 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
234 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
238 # Print scope1.c::bar::funclocal, which is 4
240 send "print bar::funclocal\n"
242 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
243 -re "$prompt $" { fail "print bar::funclocal" ; return }
245 fail "(timeout) print bar::funclocal" ; return
249 setup_xfail "rs6000-*-*"
250 send "print 'scope1.c'::bar::funclocal\n"
252 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
253 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
254 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
257 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
259 fail "print 'scope1.c'::bar::funclocal" ; return
264 pass "$passcount correct scope resolutions from main()"
267 proc test_at_foo {} {
278 -re ".*bar \[)(\]+;\r\n$prompt $" {}
279 -re "$prompt $" { fail "continue to foo()" ; return }
280 timeout { fail "(timeout) continue to foo()" ; return }
283 # Print scope0.c::filelocal, which is 1
285 setup_xfail "rs6000-*-*"
286 # This used to work, but is now broken for some reason.
288 send "print 'scope0.c'::filelocal\n"
290 -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
291 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
292 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
295 -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
297 fail "(timeout) print 'scope0.c'::filelocal" ; return
301 # Print scope0.c::filelocal_bss, which is 101
303 setup_xfail "rs6000-*-*"
304 send "print 'scope0.c'::filelocal_bss\n"
306 -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
307 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
308 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
311 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
313 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
317 # Print scope0.c::filelocal_ro, which is 201
319 setup_xfail "rs6000-*-*"
320 send "print 'scope0.c'::filelocal_ro\n"
322 -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
323 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
324 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
327 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
329 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
333 # Print scope1.c::filelocal, which is 2
335 send "print filelocal\n"
337 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
338 -re "$prompt $" { fail "print filelocal" ; return }
340 fail "(timeout) print filelocal" ; return
344 setup_xfail "rs6000-*-*"
345 send "print 'scope1.c'::filelocal\n"
347 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
348 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
349 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
352 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
354 fail "(timeout) print 'scope1.c'::filelocal" ; return
358 # Print scope1.c::filelocal_bss, which is 102
360 send "print filelocal_bss\n"
362 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
363 -re "$prompt $" { fail "print filelocal_bss" ; return }
365 fail "(timeout) print filelocal_bss" ; return
369 setup_xfail "rs6000-*-*"
370 send "print 'scope1.c'::filelocal_bss\n"
372 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
373 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
374 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
377 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
379 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
383 # Print scope1.c::filelocal_ro, which is 202
385 send "print filelocal_ro\n"
387 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
388 -re "$prompt $" { fail "print filelocal_ro" ; return }
390 fail "(timeout) print filelocal_ro" ; return
394 setup_xfail "rs6000-*-*"
395 send "print 'scope1.c'::filelocal_ro\n"
397 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
398 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
399 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
402 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
404 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
408 # Print scope1.c::foo::funclocal, which is 3
410 send "print funclocal\n"
412 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
413 -re "$prompt $" { fail "print funclocal" ; return }
415 fail "(timeout) print funclocal" ; return
419 setup_xfail "mips-*-*" 1843
420 send "print foo::funclocal\n"
422 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
423 -re "$prompt $" { fail "print foo::funclocal" ; return }
425 fail "(timeout) print foo::funclocal" ; return
429 setup_xfail "rs6000-*-*"
430 send "print 'scope1.c'::foo::funclocal\n"
432 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
433 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
434 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
437 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
439 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
443 # Print scope1.c::foo::funclocal_bss, which is 103
445 send "print funclocal_bss\n"
447 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
448 -re "$prompt $" { fail "print funclocal_bss" ; return }
450 fail "(timeout) print funclocal_bss" ; return
454 send "print foo::funclocal_bss\n"
456 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
457 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
459 fail "(timeout) print foo::funclocal_bss" ; return
463 setup_xfail "rs6000-*-*"
464 send "print 'scope1.c'::foo::funclocal_bss\n"
466 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
467 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
468 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
471 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
473 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
477 # Print scope1.c::foo::funclocal_ro, which is 203
479 send "print funclocal_ro\n"
481 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
482 -re "$prompt $" { fail "print funclocal_ro" ; return }
484 fail "(timeout) print funclocal_ro" ; return
488 send "print foo::funclocal_ro\n"
490 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
491 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
493 fail "(timeout) print foo::funclocal_ro" ; return
497 setup_xfail "rs6000-*-*"
498 send "print 'scope1.c'::foo::funclocal_ro\n"
500 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
501 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
502 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
505 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
507 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
511 # Print scope1.c::bar::funclocal, which is 4
513 send "print bar::funclocal\n"
515 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
516 -re "$prompt $" { fail "print bar::funclocal" ; return }
518 fail "(timeout) print bar::funclocal" ; return
522 setup_xfail "rs6000-*-*"
523 send "print 'scope1.c'::bar::funclocal\n"
525 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
526 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
527 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
530 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
532 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
537 pass "$passcount correct scope resolutions from foo()"
540 proc test_at_bar {} {
552 timeout { fail "next in bar()" ; return }
555 # Print scope0.c::filelocal, which is 1
557 setup_xfail "rs6000-*-*"
558 # This used to work, but is now broken for some reason.
560 send "print 'scope0.c'::filelocal\n"
562 -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
563 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
564 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
567 -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
569 fail "(timeout) print 'scope0.c'::filelocal" ; return
573 # Print scope0.c::filelocal_bss, which is 101
575 setup_xfail "rs6000-*-*"
576 send "print 'scope0.c'::filelocal_bss\n"
578 -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
579 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
580 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
583 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
585 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
589 # Print scope0.c::filelocal_ro, which is 201
591 setup_xfail "rs6000-*-*"
592 send "print 'scope0.c'::filelocal_ro\n"
594 -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
595 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
596 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
599 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
601 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
605 # Print scope1.c::filelocal, which is 2
607 send "print filelocal\n"
609 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
610 -re "$prompt $" { fail "print filelocal" ; return }
612 fail "(timeout) print filelocal" ; return
616 setup_xfail "rs6000-*-*"
617 send "print 'scope1.c'::filelocal\n"
619 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
620 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
621 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
624 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
626 fail "(timeout) print 'scope1.c'::filelocal" ; return
630 # Print scope1.c::filelocal_bss, which is 102
632 send "print filelocal_bss\n"
634 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
635 -re "$prompt $" { fail "print filelocal_bss" ; return }
637 fail "(timeout) print filelocal_bss" ; return
641 setup_xfail "rs6000-*-*"
642 send "print 'scope1.c'::filelocal_bss\n"
644 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
645 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
646 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
649 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
651 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
655 # Print scope1.c::filelocal_ro, which is 202
657 send "print filelocal_ro\n"
659 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
660 -re "$prompt $" { fail "print filelocal_ro" ; return }
662 fail "(timeout) print filelocal_ro" ; return
666 setup_xfail "rs6000-*-*"
667 send "print 'scope1.c'::filelocal_ro\n"
669 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
670 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
671 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
674 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
676 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
680 # Print scope1.c::foo::funclocal, which is 3
682 setup_xfail "mips-*-*" 1843
683 send "print foo::funclocal\n"
685 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
686 -re "$prompt $" { fail "print foo::funclocal" ; return }
688 fail "(timeout) print foo::funclocal" ; return
692 setup_xfail "rs6000-*-*"
693 send "print 'scope1.c'::foo::funclocal\n"
695 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
696 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
697 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
700 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
702 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
706 # Print scope1.c::foo::funclocal_bss, which is 103
708 send "print foo::funclocal_bss\n"
710 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
711 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
713 fail "(timeout) print foo::funclocal_bss" ; return
717 setup_xfail "rs6000-*-*"
718 send "print 'scope1.c'::foo::funclocal_bss\n"
720 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
721 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
722 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
725 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
727 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
731 # Print scope1.c::foo::funclocal_ro, which is 203
733 send "print foo::funclocal_ro\n"
735 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
736 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
738 fail "(timeout) print foo::funclocal_ro" ; return
742 setup_xfail "rs6000-*-*"
743 send "print 'scope1.c'::foo::funclocal_ro\n"
745 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
746 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
747 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
750 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
752 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
756 # Print scope1.c::bar::funclocal, which is 4
758 send "print funclocal\n"
760 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
761 -re "$prompt $" { fail "print funclocal" ; return }
763 fail "(timeout) print funclocal" ; return
767 send "print bar::funclocal\n"
769 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
770 -re "$prompt $" { fail "print bar::funclocal" ; return }
772 fail "(timeout) print bar::funclocal" ; return
776 setup_xfail "rs6000-*-*"
777 send "print 'scope1.c'::bar::funclocal\n"
779 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
780 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
781 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
784 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
786 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
790 # Print scope1.c::bar::funclocal_bss, which is 104
792 send "print funclocal_bss\n"
794 -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
795 -re "$prompt $" { fail "print funclocal_bss" ; return }
797 fail "(timeout) print funclocal_bss" ; return
801 send "print bar::funclocal_bss\n"
803 -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
804 -re "$prompt $" { fail "print bar::funclocal_bss" ; return }
806 fail "(timeout) print bar::funclocal_bss" ; return
810 setup_xfail "rs6000-*-*"
811 send "print 'scope1.c'::bar::funclocal_bss\n"
813 -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
814 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
815 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal_bss\n"
818 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal_bss" ; return }
820 fail "(timeout) print 'scope1.c'::bar::funclocal_bss" ; return
825 pass "$passcount correct scope resolutions from bar()"
828 # FIXME: This test was originally part of some local scope resolution
829 # tests. It probably belongs somewhere else now.
831 proc test_at_autovars {} {
837 # Test symbol table lookup with 100 local (auto) variables.
839 send "break marker1\n" ; expect -re ".*$prompt $"
843 -re "Break.* marker1 \[)(\]+ at .*:$decimal.*$prompt $" {
847 timeout { fail "up from marker1" ; return }
850 -re "$prompt $" { fail "continue to marker1" ; return }
851 timeout { fail "(timeout) continue to marker1" ; return }
855 while {$count < 100} {
856 send "print i$count\n"
858 -re ".* = $count\r\n$prompt $" {}
860 fail "bad value for auto variable i$count"; return
863 fail "(timeout) bad value for auto variable i$count"; return
866 set count [expr $count+1]
869 pass "$count auto variables correctly initialized"
871 # Test that block variable sorting is not screwing us.
872 gdb_test "frame" "#.*autovars \[(\]+bcd=5, abc=6\[)\]+" "args in correct order"
875 proc test_at_localscopes {} {
883 send "break marker2\n" ; expect -re ".*$prompt $"
884 send "break marker3\n" ; expect -re ".*$prompt $"
885 send "break marker4\n" ; expect -re ".*$prompt $"
889 -re "Break.* marker2 \[)(\]+ at .*:$decimal.*$prompt $" {
893 timeout { fail "up from marker2" ; return }
896 -re "$prompt $" { fail "continue to marker2" ; return }
897 timeout { fail "(timeout) continue to marker2" ; return }
900 # Should be at first (outermost) scope. Check values.
902 send "print localval\n"
904 -re ".* = 10\r\n$prompt $" { incr passcount }
905 -re "$prompt $" { fail "bad value for localval, outer scope" ; return }
907 fail "(timeout) bad value for localval, outer scope" ; return
910 send "print localval1\n"
912 -re ".* = 11\r\n$prompt $" { incr passcount }
913 -re "$prompt $" { fail "bad value for localval1" ; return }
914 timeout { fail "(timeout) bad value for localval1" ; return }
916 send "print localval2\n"
918 -re "No symbol \"localval2\" in current context.\r\n$prompt $" {
921 -re "$prompt $" { fail "bad value for localval2" ; return }
922 timeout { fail "(timeout) bad value for localval2" ; return }
924 send "print localval3\n"
926 -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
929 -re "$prompt $" { fail "bad value for localval3" ; return }
930 timeout { fail "(timeout) bad value for localval3" ; return }
935 -re "Break.* marker3 \[)(\]+ at .*:$decimal.*$prompt $" {
939 timeout { fail "up from marker3" ; return }
942 -re "$prompt $" { fail "continue to marker3" ; return }
943 timeout { fail "(timeout) continue to marker3" ; return }
946 # Should be at next (first nested) scope. Check values.
948 send "print localval\n"
950 -re ".* = 20\r\n$prompt $" { incr passcount }
952 fail "bad value for localval, first nested scope" ; return
955 fail "(timeout) bad value for localval, first nested scope" ;
959 send "print localval1\n"
961 -re ".* = 11\r\n$prompt $" { incr passcount }
962 -re "$prompt $" { fail "bad value for localval1" ; return }
963 timeout { fail "(timeout) bad value for localval1" ; return }
965 send "print localval2\n"
967 -re ".* = 12\r\n$prompt $" { incr passcount }
968 -re "$prompt $" { fail "bad value for localval2" ; return }
969 timeout { fail "(timeout) bad value for localval2" ; return }
971 send "print localval3\n"
973 -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
976 -re "$prompt $" { fail "bad value for localval3" ; return }
977 timeout { fail "(timeout) bad value for localval3" ; return }
980 # This test will only fail if the file was compiled by gcc, but
981 # there's no way to check that.
982 setup_xfail "mips-*-*" 1868
983 setup_xfail "a29k-*-udi" 2423
986 -re "Break.* marker4.*at .*:$decimal.*$prompt $" {
990 timeout { fail "up from marker4" ; return }
993 -re "$prompt $" { fail "continue to marker4" ; return }
994 timeout { fail "(timeout) continue to marker4" ; return }
997 send "print localval\n"
999 -re ".* = 30\r\n$prompt $" { incr passcount }
1001 fail "bad value for localval, innermost scope" ; return
1004 fail "(timeout) bad value for localval, innermost scope" ; return
1007 send "print localval1\n"
1009 -re ".* = 11\r\n$prompt $" { incr passcount }
1010 -re "$prompt $" { fail "bad value for localval1" ; return }
1011 timeout { fail "(timeout) bad value for localval1" ; return }
1013 send "print localval2\n"
1015 -re ".* = 12\r\n$prompt $" { incr passcount }
1016 -re "$prompt $" { fail "bad value for localval2" ; return }
1017 timeout { fail "(timeout) bad value for localval2" ; return }
1019 send "print localval3\n"
1021 -re ".* = 13\r\n$prompt $" { incr passcount }
1022 -re "$prompt $" { fail "bad value for localval3" ; return }
1023 timeout { fail "(timeout) bad value for localval3" ; return }
1027 pass "$passcount correct scope resolutions from localscopes()"
1030 # Start with a fresh gdb.
1034 gdb_reinitialize_dir $srcdir/$subdir
1035 gdb_load $objdir/$subdir/$binfile
1037 if [istarget "*-*-vxworks"] {
1041 # Test that variables in various segments print out correctly before
1042 # the program is run.
1044 # AIX--sections get mapped to the same address so we can't get the right one.
1045 setup_xfail "rs6000-*-*"
1047 gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
1049 # gdb currently cannot access bss memory on some targets if the inferior
1051 send "print 'scope0.c'::filelocal_bss\n"
1053 -re "= 0.*$prompt $" {
1054 pass "print 'scope0.c'::filelocal_bss"
1056 -re "Cannot access memory.*$prompt $" {
1058 fail "print 'scope0.c'::filelocal_bss"
1061 fail "print 'scope0.c'::filelocal_bss"
1064 fail "print 'scope0.c'::filelocal_bss"
1068 # AIX--sections get mapped to the same address so we can't get the right one.
1069 setup_xfail "rs6000-*-*"
1071 gdb_test "print 'scope0.c'::filelocal" "= 1"
1073 if [runto main] then { test_at_main }
1074 if [istarget "mips-idt-*"] then {
1075 # Restart because IDT/SIM runs out of file descriptors.
1078 gdb_reinitialize_dir $srcdir/$subdir
1079 gdb_load $objdir/$subdir/$binfile
1081 if [istarget "a29k-*-udi"] then {
1082 # FIXME: If PR 2415 is fixed, this is not needed.
1084 gdb_load $objdir/$subdir/$binfile
1086 if [runto foo] then { test_at_foo }
1087 if [istarget "mips-idt-*"] then {
1088 # Restart because IDT/SIM runs out of file descriptors.
1091 gdb_reinitialize_dir $srcdir/$subdir
1092 gdb_load $objdir/$subdir/$binfile
1094 if [istarget "a29k-*-udi"] then {
1095 # FIXME: If PR 2415 is fixed, this is not needed.
1097 gdb_load $objdir/$subdir/$binfile
1099 if [runto bar] then { test_at_bar }
1100 if [istarget "mips-idt-*"] then {
1101 # Restart because IDT/SIM runs out of file descriptors.
1104 gdb_reinitialize_dir $srcdir/$subdir
1105 gdb_load $objdir/$subdir/$binfile
1107 if [istarget "a29k-*-udi"] then {
1108 # FIXME: If PR 2415 is fixed, this is not needed.
1110 gdb_load $objdir/$subdir/$binfile
1112 if [runto localscopes] then { test_at_localscopes }
1113 if [istarget "mips-idt-*"] then {
1114 # Restart because IDT/SIM runs out of file descriptors.
1117 gdb_reinitialize_dir $srcdir/$subdir
1118 gdb_load $objdir/$subdir/$binfile
1120 if [istarget "a29k-*-udi"] then {
1121 # FIXME: If PR 2415 is fixed, this is not needed.
1123 gdb_load $objdir/$subdir/$binfile
1125 if [runto autovars] then { test_at_autovars }
1127 if [istarget "a29k-*-udi"] then {
1128 # FIXME: If PR 2415 is fixed, this is not needed.
1132 if [istarget "*-*-vxworks"] {