1 # Copyright (C) 1992, 1994 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 {} {
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.
52 -re "$decimal.*foo \[)(\]+;\r\n$prompt $" {
53 pass "next over init() in main"
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 $" { pass "print filelocal" }
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 send "print 'scope0.c'::filelocal\n"
76 -re "\\\$$decimal = 1\r\n$prompt $" {
77 pass "print 'scope0.c'::filelocal at main"
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 at main" ; return }
85 fail "(timeout) print 'scope0.c'::filelocal at main" ; return
89 # Print scope0.c::filelocal_bss, which is 101
91 send "print filelocal_bss\n"
93 -re "\\\$$decimal = 101\r\n$prompt $" {
94 pass "print filelocal_bss"
96 -re "$prompt $" { fail "print filelocal_bss" ; return }
98 fail "(timeout) print filelocal_bss" ; return
102 setup_xfail "rs6000-*-*"
103 send "print 'scope0.c'::filelocal_bss\n"
105 -re "\\\$$decimal = 101\r\n$prompt $" {
106 pass "print 'scope0.c'::filelocal_bss"
108 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
109 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
112 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
114 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
118 # Print scope0.c::filelocal_ro, which is 201
120 send "print filelocal_ro\n"
122 -re "\\\$$decimal = 201\r\n$prompt $" { pass "print filelocal_ro" }
123 -re "$prompt $" { fail "print filelocal_ro" ; return }
125 fail "(timeout) print filelocal_ro" ; return
129 setup_xfail "rs6000-*-*"
130 send "print 'scope0.c'::filelocal_ro\n"
132 -re "\\\$$decimal = 201\r\n$prompt $" {
133 pass "print 'scope0.c'::filelocal_ro"
135 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
136 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
139 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
141 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
145 # Print scope1.c::filelocal, which is 2
147 setup_xfail "rs6000-*-*"
148 send "print 'scope1.c'::filelocal\n"
150 -re "\\\$$decimal = 2\r\n$prompt $" {
151 pass "print 'scope1.c'::filelocal"
153 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
154 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
157 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
159 fail "(timeout) print 'scope1.c'::filelocal" ; return
163 # Print scope1.c::filelocal_bss, which is 102
165 setup_xfail "rs6000-*-*"
166 send "print 'scope1.c'::filelocal_bss\n"
168 -re "\\\$$decimal = 102\r\n$prompt $" {
169 pass "print 'scope1.c'::filelocal_bss"
171 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
172 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
175 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
177 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
181 # Print scope1.c::filelocal_ro, which is 202
183 setup_xfail "rs6000-*-*"
184 send "print 'scope1.c'::filelocal_ro\n"
186 -re "\\\$$decimal = 202\r\n$prompt $" {
187 pass "print 'scope1.c'::filelocal_ro"
189 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
190 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
193 -re "$prompt " {fail "print 'scope1.c'::filelocal_ro" ; return }
195 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
199 # Print scope1.c::foo::funclocal, which is 3
201 setup_xfail "mips-*-*" 1843
202 send "print foo::funclocal\n"
204 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
205 -re "$prompt $" { fail "print foo::funclocal" ; return }
207 fail "(timeout) print foo::funclocal" ; return
211 setup_xfail "rs6000-*-*"
212 send "print 'scope1.c'::foo::funclocal\n"
214 -re "\\\$$decimal = 3\r\n$prompt $" {
215 pass "print 'scope1.c'::foo::funclocal"
217 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
218 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
221 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
223 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
227 # Print scope1.c::foo::funclocal_ro, which is 203
229 send "print foo::funclocal_ro\n"
231 -re "\\\$$decimal = 203\r\n$prompt $" {
232 pass "print foo::funclocal_ro"
234 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
236 fail "(timeout) print foo::funclocal_ro" ; return
240 setup_xfail "rs6000-*-*"
241 send "print 'scope1.c'::foo::funclocal_ro\n"
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"
249 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
251 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
255 # Print scope1.c::bar::funclocal, which is 4
257 send "print bar::funclocal\n"
259 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
260 -re "$prompt $" { fail "print bar::funclocal" ; return }
262 fail "(timeout) print bar::funclocal" ; return
266 setup_xfail "rs6000-*-*"
267 send "print 'scope1.c'::bar::funclocal\n"
269 -re "\\\$$decimal = 4\r\n$prompt $" {
270 pass "print 'scope1.c'::bar::funclocal"
272 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
273 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
276 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
278 fail "print 'scope1.c'::bar::funclocal" ; return
283 proc test_at_foo {} {
292 -re ".*bar \[)(\]+;\r\n$prompt $" {}
293 -re "$prompt $" { fail "continue to foo()" ; return }
294 timeout { fail "(timeout) continue to foo()" ; return }
297 # Print scope0.c::filelocal, which is 1
299 setup_xfail "rs6000-*-*"
300 send "print 'scope0.c'::filelocal\n"
302 -re "\\\$$decimal = 1\r\n$prompt $" {
303 pass "print 'scope0.c'::filelocal at foo"
305 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
306 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
309 -re "$prompt $" { fail "print 'scope0.c'::filelocal at foo" ; return }
311 fail "(timeout) print 'scope0.c'::filelocal at foo" ; return
315 # Print scope0.c::filelocal_bss, which is 101
317 setup_xfail "rs6000-*-*"
318 send "print 'scope0.c'::filelocal_bss\n"
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"
325 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
327 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
331 # Print scope0.c::filelocal_ro, which is 201
333 setup_xfail "rs6000-*-*"
334 send "print 'scope0.c'::filelocal_ro\n"
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"
341 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
343 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
347 # Print scope1.c::filelocal, which is 2
349 send "print filelocal\n"
351 -re "\\\$$decimal = 2\r\n$prompt $" { pass "print filelocal" }
352 -re "$prompt $" { fail "print filelocal" ; return }
354 fail "(timeout) print filelocal" ; return
358 setup_xfail "rs6000-*-*"
359 send "print 'scope1.c'::filelocal\n"
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"
366 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
368 fail "(timeout) print 'scope1.c'::filelocal" ; return
372 # Print scope1.c::filelocal_bss, which is 102
374 send "print filelocal_bss\n"
376 -re "\\\$$decimal = 102\r\n$prompt $" { pass "print filelocal_bss" }
377 -re "$prompt $" { fail "print filelocal_bss" ; return }
379 fail "(timeout) print filelocal_bss" ; return
383 setup_xfail "rs6000-*-*"
384 send "print 'scope1.c'::filelocal_bss\n"
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"
391 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
393 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
397 # Print scope1.c::filelocal_ro, which is 202
399 send "print filelocal_ro\n"
401 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print filelocal_ro" }
402 -re "$prompt $" { fail "print filelocal_ro" ; return }
404 fail "(timeout) print filelocal_ro" ; return
408 setup_xfail "rs6000-*-*"
409 send "print 'scope1.c'::filelocal_ro\n"
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"
416 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
418 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
422 # Print scope1.c::foo::funclocal, which is 3
424 send "print funclocal\n"
426 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print funclocal" }
427 -re "$prompt $" { fail "print funclocal" ; return }
429 fail "(timeout) print funclocal" ; return
433 setup_xfail "mips-*-*" 1843
434 send "print foo::funclocal\n"
436 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
437 -re "$prompt $" { fail "print foo::funclocal" ; return }
439 fail "(timeout) print foo::funclocal" ; return
443 setup_xfail "rs6000-*-*"
444 send "print 'scope1.c'::foo::funclocal\n"
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"
451 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
453 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
457 # Print scope1.c::foo::funclocal_bss, which is 103
459 send "print funclocal_bss\n"
461 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print funclocal_bss" }
462 -re "$prompt $" { fail "print funclocal_bss" ; return }
464 fail "(timeout) print funclocal_bss" ; return
468 send "print foo::funclocal_bss\n"
470 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print foo::funclocal_bss" }
471 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
473 fail "(timeout) print foo::funclocal_bss" ; return
477 setup_xfail "rs6000-*-*"
478 send "print 'scope1.c'::foo::funclocal_bss\n"
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"
485 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
487 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
491 # Print scope1.c::foo::funclocal_ro, which is 203
493 send "print funclocal_ro\n"
495 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print funclocal_ro" }
496 -re "$prompt $" { fail "print funclocal_ro" ; return }
498 fail "(timeout) print funclocal_ro" ; return
502 send "print foo::funclocal_ro\n"
504 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print foo::funclocal_ro" }
505 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
507 fail "(timeout) print foo::funclocal_ro" ; return
511 setup_xfail "rs6000-*-*"
512 send "print 'scope1.c'::foo::funclocal_ro\n"
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"
519 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
521 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
525 # Print scope1.c::bar::funclocal, which is 4
527 send "print bar::funclocal\n"
529 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
530 -re "$prompt $" { fail "print bar::funclocal" ; return }
532 fail "(timeout) print bar::funclocal" ; return
536 setup_xfail "rs6000-*-*"
537 send "print 'scope1.c'::bar::funclocal\n"
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"
544 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
546 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
551 proc test_at_bar {} {
561 timeout { fail "next in bar()" ; return }
564 # Print scope0.c::filelocal, which is 1
566 setup_xfail "rs6000-*-*"
567 send "print 'scope0.c'::filelocal\n"
569 -re "\\\$$decimal = 1\r\n$prompt $" {
570 pass "print 'scope0.c'::filelocal at bar"
572 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
573 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
576 -re "$prompt $" { fail "print 'scope0.c'::filelocal at bar" ; return }
578 fail "(timeout) print 'scope0.c'::filelocal at bar" ; return
582 # Print scope0.c::filelocal_bss, which is 101
584 setup_xfail "rs6000-*-*"
585 send "print 'scope0.c'::filelocal_bss\n"
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"
592 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
594 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
598 # Print scope0.c::filelocal_ro, which is 201
600 setup_xfail "rs6000-*-*"
601 send "print 'scope0.c'::filelocal_ro\n"
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"
608 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
610 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
614 # Print scope1.c::filelocal, which is 2
616 send "print filelocal\n"
618 -re "\\\$$decimal = 2\r\n$prompt $" { pass "print filelocal" }
619 -re "$prompt $" { fail "print filelocal" ; return }
621 fail "(timeout) print filelocal" ; return
625 setup_xfail "rs6000-*-*"
626 send "print 'scope1.c'::filelocal\n"
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"
633 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
635 fail "(timeout) print 'scope1.c'::filelocal" ; return
639 # Print scope1.c::filelocal_bss, which is 102
641 send "print filelocal_bss\n"
643 -re "\\\$$decimal = 102\r\n$prompt $" { pass "print filelocal_bss" }
644 -re "$prompt $" { fail "print filelocal_bss" ; return }
646 fail "(timeout) print filelocal_bss" ; return
650 setup_xfail "rs6000-*-*"
651 send "print 'scope1.c'::filelocal_bss\n"
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"
658 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
660 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
664 # Print scope1.c::filelocal_ro, which is 202
666 send "print filelocal_ro\n"
668 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print filelocal_ro" }
669 -re "$prompt $" { fail "print filelocal_ro" ; return }
671 fail "(timeout) print filelocal_ro" ; return
675 setup_xfail "rs6000-*-*"
676 send "print 'scope1.c'::filelocal_ro\n"
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"
683 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
685 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
689 # Print scope1.c::foo::funclocal, which is 3
691 setup_xfail "mips-*-*" 1843
692 send "print foo::funclocal\n"
694 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
695 -re "$prompt $" { fail "print foo::funclocal" ; return }
697 fail "(timeout) print foo::funclocal" ; return
701 setup_xfail "rs6000-*-*"
702 send "print 'scope1.c'::foo::funclocal\n"
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"
709 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
711 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
715 # Print scope1.c::foo::funclocal_bss, which is 103
717 send "print foo::funclocal_bss\n"
719 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print foo::funclocal_bss" }
720 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
722 fail "(timeout) print foo::funclocal_bss" ; return
726 setup_xfail "rs6000-*-*"
727 send "print 'scope1.c'::foo::funclocal_bss\n"
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"
734 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
736 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
740 # Print scope1.c::foo::funclocal_ro, which is 203
742 send "print foo::funclocal_ro\n"
744 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print foo::funclocal_ro" }
745 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
747 fail "(timeout) print foo::funclocal_ro" ; return
751 setup_xfail "rs6000-*-*"
752 send "print 'scope1.c'::foo::funclocal_ro\n"
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"
759 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
761 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
765 # Print scope1.c::bar::funclocal, which is 4
767 send "print funclocal\n"
769 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print funclocal" }
770 -re "$prompt $" { fail "print funclocal" ; return }
772 fail "(timeout) print funclocal" ; return
776 send "print bar::funclocal\n"
778 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
779 -re "$prompt $" { fail "print bar::funclocal" ; return }
781 fail "(timeout) print bar::funclocal" ; return
785 setup_xfail "rs6000-*-*"
786 send "print 'scope1.c'::bar::funclocal\n"
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"
793 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
795 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
799 # Print scope1.c::bar::funclocal_bss, which is 104
801 send "print funclocal_bss\n"
803 -re "\\\$$decimal = 104\r\n$prompt $" { pass "print funclocal_bss" }
804 -re "$prompt $" { fail "print funclocal_bss" ; return }
806 fail "(timeout) print funclocal_bss" ; return
810 send "print bar::funclocal_bss\n"
812 -re "\\\$$decimal = 104\r\n$prompt $" { pass "print bar::funclocal_bss" }
813 -re "$prompt $" { fail "print bar::funclocal_bss" ; return }
815 fail "(timeout) print bar::funclocal_bss" ; return
819 setup_xfail "rs6000-*-*"
820 send "print 'scope1.c'::bar::funclocal_bss\n"
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"
827 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal_bss" ; return }
829 fail "(timeout) print 'scope1.c'::bar::funclocal_bss" ; return
834 # FIXME: This test was originally part of some local scope resolution
835 # tests. It probably belongs somewhere else now.
837 proc test_at_autovars {} {
843 # Test symbol table lookup with 100 local (auto) variables.
845 send "break marker1\n" ; expect -re ".*$prompt $"
849 -re "Break.* marker1 \[)(\]+ at .*:$decimal.*$prompt $" {
853 timeout { fail "up from marker1" ; return }
856 -re "$prompt $" { fail "continue to marker1" ; return }
857 timeout { fail "(timeout) continue to marker1" ; return }
861 while {$count < 100} {
862 send "print i$count\n"
864 -re ".* = $count\r\n$prompt $" {}
866 fail "bad value for auto variable i$count"; return
869 fail "(timeout) bad value for auto variable i$count"; return
872 set count [expr $count+1]
875 pass "$count auto variables correctly initialized"
877 # Test that block variable sorting is not screwing us.
878 gdb_test "frame" "#.*autovars \\(bcd=5, abc=6\\).*" "args in correct order"
881 proc test_at_localscopes {} {
887 send "break marker2\n" ; expect -re ".*$prompt $"
888 send "break marker3\n" ; expect -re ".*$prompt $"
889 send "break marker4\n" ; expect -re ".*$prompt $"
893 -re "Break.* marker2 \[)(\]+ at .*:$decimal.*$prompt $" {
897 timeout { fail "up from marker2" ; return }
900 -re "$prompt $" { fail "continue to marker2" ; return }
901 timeout { fail "(timeout) continue to marker2" ; return }
904 # Should be at first (outermost) scope. Check values.
906 send "print localval\n"
908 -re ".* = 10\r\n$prompt $" { pass "bad value for localval, outer scope" }
909 -re "$prompt $" { fail "bad value for localval, outer scope" ; return }
911 fail "(timeout) bad value for localval, outer scope" ; return
914 send "print localval1\n"
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 }
920 send "print localval2\n"
922 -re "No symbol \"localval2\" in current context.\r\n$prompt $" {
923 pass "bad value for localval2"
925 -re "$prompt $" { fail "bad value for localval2" ; return }
926 timeout { fail "(timeout) bad value for localval2" ; return }
928 send "print localval3\n"
930 -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
931 pass "bad value for localval3"
933 -re "$prompt $" { fail "bad value for localval3" ; return }
934 timeout { fail "(timeout) bad value for localval3" ; return }
939 -re "Break.* marker3 \[)(\]+ at .*:$decimal.*$prompt $" {
943 timeout { fail "up from marker3" ; return }
946 -re "$prompt $" { fail "continue to marker3" ; return }
947 timeout { fail "(timeout) continue to marker3" ; return }
950 # Should be at next (first nested) scope. Check values.
952 send "print localval\n"
954 -re ".* = 20\r\n$prompt $" { pass "bad value for localval, first nested scope" }
956 fail "bad value for localval, first nested scope" ; return
959 fail "(timeout) bad value for localval, first nested scope" ;
963 send "print localval1\n"
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 }
969 send "print localval2\n"
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 }
975 send "print localval3\n"
977 -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
978 pass "bad value for localval3"
980 -re "$prompt $" { fail "bad value for localval3" ; return }
981 timeout { fail "(timeout) bad value for localval3" ; return }
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
990 -re "Break.* marker4.*at .*:$decimal.*$prompt $" {
994 timeout { fail "up from marker4" ; return }
997 -re "$prompt $" { fail "continue to marker4" ; return }
998 timeout { fail "(timeout) continue to marker4" ; return }
1001 send "print localval\n"
1003 -re ".* = 30\r\n$prompt $" { pass "bad value for localval, innermost scope" }
1005 fail "bad value for localval, innermost scope" ; return
1008 fail "(timeout) bad value for localval, innermost scope" ; return
1011 send "print localval1\n"
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 }
1017 send "print localval2\n"
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 }
1023 send "print localval3\n"
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 }
1031 # Start with a fresh gdb.
1035 gdb_reinitialize_dir $srcdir/$subdir
1036 gdb_load $objdir/$subdir/$binfile
1038 if [istarget "*-*-vxworks"] {
1042 # Test that variables in various segments print out correctly before
1043 # the program is run.
1045 # AIX--sections get mapped to the same address so we can't get the right one.
1046 setup_xfail "rs6000-*-*"
1048 gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
1050 # gdb currently cannot access bss memory on some targets if the inferior
1052 send "print 'scope0.c'::filelocal_bss\n"
1054 -re "= 0.*$prompt $" {
1055 pass "print 'scope0.c'::filelocal_bss"
1057 -re "Cannot access memory.*$prompt $" {
1059 fail "print 'scope0.c'::filelocal_bss"
1062 fail "print 'scope0.c'::filelocal_bss"
1065 fail "print 'scope0.c'::filelocal_bss"
1069 # AIX--sections get mapped to the same address so we can't get the right one.
1070 setup_xfail "rs6000-*-*"
1072 gdb_test "print 'scope0.c'::filelocal" "= 1" \
1073 "print 'scope0.c'::filelocal before run"
1075 if [runto main] then { test_at_main }
1076 if [istarget "mips-idt-*"] then {
1077 # Restart because IDT/SIM runs out of file descriptors.
1080 gdb_reinitialize_dir $srcdir/$subdir
1081 gdb_load $objdir/$subdir/$binfile
1083 if [runto foo] then { test_at_foo }
1084 if [istarget "mips-idt-*"] then {
1085 # Restart because IDT/SIM runs out of file descriptors.
1088 gdb_reinitialize_dir $srcdir/$subdir
1089 gdb_load $objdir/$subdir/$binfile
1091 if [runto bar] then { test_at_bar }
1092 if [istarget "mips-idt-*"] then {
1093 # Restart because IDT/SIM runs out of file descriptors.
1096 gdb_reinitialize_dir $srcdir/$subdir
1097 gdb_load $objdir/$subdir/$binfile
1099 if [runto localscopes] then { test_at_localscopes }
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 [runto autovars] then { test_at_autovars }
1109 if [istarget "*-*-vxworks"] {