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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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 in test_at_main"
108 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
109 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
113 fail "print 'scope0.c'::filelocal_bss in test_at_main" ; return
116 fail "(timeout) print 'scope0.c'::filelocal_bss in test_at_main"
121 # Print scope0.c::filelocal_ro, which is 201
123 # No clue why the powerpc fails this test.
124 setup_xfail "powerpc-*-*"
125 send "print filelocal_ro\n"
127 -re "\\\$$decimal = 201\r\n$prompt $" { pass "print filelocal_ro" }
128 -re "$prompt $" { fail "print filelocal_ro" ; return }
130 fail "(timeout) print filelocal_ro" ; return
134 setup_xfail "rs6000-*-*"
135 setup_xfail "powerpc-*-*"
136 send "print 'scope0.c'::filelocal_ro\n"
138 -re "\\\$$decimal = 201\r\n$prompt $" {
139 pass "print 'scope0.c'::filelocal_ro"
141 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
142 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
145 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
147 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
151 # Print scope1.c::filelocal, which is 2
153 setup_xfail "rs6000-*-*"
154 send "print 'scope1.c'::filelocal\n"
156 -re "\\\$$decimal = 2\r\n$prompt $" {
157 pass "print 'scope1.c'::filelocal"
159 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
160 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
163 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
165 fail "(timeout) print 'scope1.c'::filelocal" ; return
169 # Print scope1.c::filelocal_bss, which is 102
171 setup_xfail "rs6000-*-*"
172 send "print 'scope1.c'::filelocal_bss\n"
174 -re "\\\$$decimal = 102\r\n$prompt $" {
175 pass "print 'scope1.c'::filelocal_bss"
177 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
178 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
181 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
183 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
187 # Print scope1.c::filelocal_ro, which is 202
189 setup_xfail "rs6000-*-*"
190 send "print 'scope1.c'::filelocal_ro\n"
192 -re "\\\$$decimal = 202\r\n$prompt $" {
193 pass "print 'scope1.c'::filelocal_ro"
195 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
196 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
199 -re "$prompt " {fail "print 'scope1.c'::filelocal_ro" ; return }
201 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
205 # Print scope1.c::foo::funclocal, which is 3
207 send "print foo::funclocal\n"
209 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
210 -re "$prompt $" { fail "print foo::funclocal" ; return }
212 fail "(timeout) print foo::funclocal" ; return
216 setup_xfail "rs6000-*-*"
217 send "print 'scope1.c'::foo::funclocal\n"
219 -re "\\\$$decimal = 3\r\n$prompt $" {
220 pass "print 'scope1.c'::foo::funclocal"
222 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
223 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
226 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
228 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
232 # Print scope1.c::foo::funclocal_ro, which is 203
234 send "print foo::funclocal_ro\n"
236 -re "\\\$$decimal = 203\r\n$prompt $" {
237 pass "print foo::funclocal_ro"
239 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
241 fail "(timeout) print foo::funclocal_ro" ; return
245 setup_xfail "rs6000-*-*"
246 send "print 'scope1.c'::foo::funclocal_ro\n"
248 -re "\\\$$decimal = 203\r\n$prompt $" {
249 pass "print 'scope1.c'::foo::funclocal_ro" }
250 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
251 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
254 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
256 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
260 # Print scope1.c::bar::funclocal, which is 4
262 send "print bar::funclocal\n"
264 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
265 -re "$prompt $" { fail "print bar::funclocal" ; return }
267 fail "(timeout) print bar::funclocal" ; return
271 setup_xfail "rs6000-*-*"
272 send "print 'scope1.c'::bar::funclocal\n"
274 -re "\\\$$decimal = 4\r\n$prompt $" {
275 pass "print 'scope1.c'::bar::funclocal"
277 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
278 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
281 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
283 fail "print 'scope1.c'::bar::funclocal" ; return
288 proc test_at_foo {} {
297 -re ".*bar \\(\\);\r\n$prompt $" {}
298 -re "$prompt $" { fail "continue to foo()" ; return }
299 timeout { fail "(timeout) continue to foo()" ; return }
302 # Print scope0.c::filelocal, which is 1
304 setup_xfail "rs6000-*-*"
305 send "print 'scope0.c'::filelocal\n"
307 -re "\\\$$decimal = 1\r\n$prompt $" {
308 pass "print 'scope0.c'::filelocal at foo"
310 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
311 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
314 -re "$prompt $" { fail "print 'scope0.c'::filelocal at foo" ; return }
316 fail "(timeout) print 'scope0.c'::filelocal at foo" ; return
320 # Print scope0.c::filelocal_bss, which is 101
322 setup_xfail "rs6000-*-*"
323 send "print 'scope0.c'::filelocal_bss\n"
325 -re "\\\$$decimal = 101\r\n$prompt $" {
326 pass "print 'scope0.c'::filelocal_bss in test_at_foo"
328 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
329 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
333 fail "print 'scope0.c'::filelocal_bss in test_at_foo"
337 fail "(timeout) print 'scope0.c'::filelocal_bss in test_at_foo"
342 # Print scope0.c::filelocal_ro, which is 201
344 setup_xfail "rs6000-*-*"
345 setup_xfail "powerpc-*-*"
346 send "print 'scope0.c'::filelocal_ro\n"
348 -re "\\\$$decimal = 201\r\n$prompt $" { pass "print 'scope0.c'::filelocal_ro" }
349 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
350 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
353 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
355 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
359 gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at foo"
361 # Print scope1.c::filelocal, which is 2
363 setup_xfail "rs6000-*-*"
364 send "print 'scope1.c'::filelocal\n"
366 -re "\\\$$decimal = 2\r\n$prompt $" {
367 pass "print 'scope1.c'::filelocal at foo"
369 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
370 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
373 -re "$prompt $" { fail "print 'scope1.c'::filelocal at foo" ; return }
375 fail "(timeout) print 'scope1.c'::filelocal at foo" ; return
379 gdb_test "print filelocal_bss" "\\\$$decimal = 102" \
380 "print filelocal_bss at foo"
382 setup_xfail "rs6000-*-*"
383 send "print 'scope1.c'::filelocal_bss\n"
385 -re "\\\$$decimal = 102\r\n$prompt $" {
386 pass "print 'scope1.c'::filelocal_bss at foo"
388 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
389 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
392 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss at foo" }
394 fail "(timeout) print 'scope1.c'::filelocal_bss at foo"
398 gdb_test "print filelocal_ro" "\\\$$decimal = 202" \
399 "print filelocal_ro at foo"
401 setup_xfail "rs6000-*-*"
402 send "print 'scope1.c'::filelocal_ro\n"
404 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print 'scope1.c'::filelocal_ro at foo" }
405 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
406 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
409 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro at foo" }
411 fail "(timeout) print 'scope1.c'::filelocal_ro at foo"
415 # Print scope1.c::foo::funclocal, which is 3
417 gdb_test "print funclocal" "\\\$$decimal = 3" "print funclocal at foo"
419 gdb_test "print foo::funclocal" "\\\$$decimal = 3" \
420 "print foo::funclocal at foo"
422 setup_xfail "rs6000-*-*"
423 send "print 'scope1.c'::foo::funclocal\n"
425 -re "\\\$$decimal = 3\r\n$prompt $" {
426 pass "print 'scope1.c'::foo::funclocal at foo"
428 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
429 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
432 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal at foo" }
434 fail "(timeout) print 'scope1.c'::foo::funclocal at foo"
438 # Print scope1.c::foo::funclocal_bss, which is 103
440 gdb_test "print funclocal_bss" "\\\$$decimal = 103" \
441 "print funclocal_bss at foo"
443 gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" \
444 "print foo::funclocal_bss at foo"
446 setup_xfail "rs6000-*-*"
447 send "print 'scope1.c'::foo::funclocal_bss\n"
449 -re "\\\$$decimal = 103\r\n$prompt $" {
450 pass "print 'scope1.c'::foo::funclocal_bss at foo"
452 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
453 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
457 fail "print 'scope1.c'::foo::funclocal_bss at foo"
460 fail "(timeout) print 'scope1.c'::foo::funclocal_bss at foo"
464 # Print scope1.c::foo::funclocal_ro, which is 203
466 gdb_test "print funclocal_ro" "\\\$$decimal = 203" \
467 "print funclocal_ro at foo"
469 gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" \
470 "print foo::funclocal_ro at foo"
472 setup_xfail "rs6000-*-*"
473 send "print 'scope1.c'::foo::funclocal_ro\n"
475 -re "\\\$$decimal = 203\r\n$prompt $" {
476 pass "print 'scope1.c'::foo::funclocal_ro at foo"
478 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
479 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
482 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro at foo" }
484 fail "(timeout) print 'scope1.c'::foo::funclocal_ro at foo"
488 # Print scope1.c::bar::funclocal, which is 4
490 gdb_test "print bar::funclocal" "\\\$$decimal = 4" \
491 "print bar::funclocal at foo"
493 setup_xfail "rs6000-*-*"
494 send "print 'scope1.c'::bar::funclocal\n"
496 -re "\\\$$decimal = 4\r\n$prompt $" {
497 pass "print 'scope1.c'::bar::funclocal at foo"
499 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
500 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
503 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal at foo" }
505 fail "(timeout) print 'scope1.c'::bar::funclocal at foo"
510 proc test_at_bar {} {
520 timeout { fail "next in bar()" ; return }
523 # Print scope0.c::filelocal, which is 1
525 setup_xfail "rs6000-*-*"
526 send "print 'scope0.c'::filelocal\n"
528 -re "\\\$$decimal = 1\r\n$prompt $" {
529 pass "print 'scope0.c'::filelocal at bar"
531 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
532 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
535 -re "$prompt $" { fail "print 'scope0.c'::filelocal at bar" ; return }
537 fail "(timeout) print 'scope0.c'::filelocal at bar" ; return
541 # Print scope0.c::filelocal_bss, which is 101
543 setup_xfail "rs6000-*-*"
544 send "print 'scope0.c'::filelocal_bss\n"
546 -re "\\\$$decimal = 101\r\n$prompt $" {
547 pass "print 'scope0.c'::filelocal_bss in test_at_bar"
549 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
550 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
554 fail "print 'scope0.c'::filelocal_bss in test_at_bar"
558 fail "(timeout) print 'scope0.c'::filelocal_bss in test_at_bar"
563 # Print scope0.c::filelocal_ro, which is 201
565 setup_xfail "rs6000-*-*"
566 setup_xfail "powerpc-*-*"
567 send "print 'scope0.c'::filelocal_ro\n"
569 -re "\\\$$decimal = 201\r\n$prompt $" { pass "print 'scope0.c'::filelocal_ro" }
570 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
571 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
574 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
576 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
580 # Print scope1.c::filelocal, which is 2
582 send "print filelocal\n"
584 -re "\\\$$decimal = 2\r\n$prompt $" { pass "print filelocal" }
585 -re "$prompt $" { fail "print filelocal" ; return }
587 fail "(timeout) print filelocal" ; return
591 setup_xfail "rs6000-*-*"
592 send "print 'scope1.c'::filelocal\n"
594 -re "\\\$$decimal = 2\r\n$prompt $" { pass "print 'scope1.c'::filelocal" }
595 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
596 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
599 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
601 fail "(timeout) print 'scope1.c'::filelocal" ; return
605 # Print scope1.c::filelocal_bss, which is 102
607 send "print filelocal_bss\n"
609 -re "\\\$$decimal = 102\r\n$prompt $" { pass "print filelocal_bss" }
610 -re "$prompt $" { fail "print filelocal_bss" ; return }
612 fail "(timeout) print filelocal_bss" ; return
616 setup_xfail "rs6000-*-*"
617 send "print 'scope1.c'::filelocal_bss\n"
619 -re "\\\$$decimal = 102\r\n$prompt $" { pass "print 'scope1.c'::filelocal_bss" }
620 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
621 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
624 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
626 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
630 # Print scope1.c::filelocal_ro, which is 202
632 send "print filelocal_ro\n"
634 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print filelocal_ro" }
635 -re "$prompt $" { fail "print filelocal_ro" ; return }
637 fail "(timeout) print filelocal_ro" ; return
641 setup_xfail "rs6000-*-*"
642 send "print 'scope1.c'::filelocal_ro\n"
644 -re "\\\$$decimal = 202\r\n$prompt $" { pass "print 'scope1.c'::filelocal_ro" }
645 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
646 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
649 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
651 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
655 # Print scope1.c::foo::funclocal, which is 3
657 send "print foo::funclocal\n"
659 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
660 -re "$prompt $" { fail "print foo::funclocal" ; return }
662 fail "(timeout) print foo::funclocal" ; return
666 setup_xfail "rs6000-*-*"
667 send "print 'scope1.c'::foo::funclocal\n"
669 -re "\\\$$decimal = 3\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal" }
670 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
671 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
674 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
676 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
680 # Print scope1.c::foo::funclocal_bss, which is 103
682 send "print foo::funclocal_bss\n"
684 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print foo::funclocal_bss" }
685 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
687 fail "(timeout) print foo::funclocal_bss" ; return
691 setup_xfail "rs6000-*-*"
692 send "print 'scope1.c'::foo::funclocal_bss\n"
694 -re "\\\$$decimal = 103\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal_bss" }
695 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
696 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
699 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
701 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
705 # Print scope1.c::foo::funclocal_ro, which is 203
707 send "print foo::funclocal_ro\n"
709 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print foo::funclocal_ro" }
710 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
712 fail "(timeout) print foo::funclocal_ro" ; return
716 setup_xfail "rs6000-*-*"
717 send "print 'scope1.c'::foo::funclocal_ro\n"
719 -re "\\\$$decimal = 203\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal_ro" }
720 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
721 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
724 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
726 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
730 # Print scope1.c::bar::funclocal, which is 4
732 send "print funclocal\n"
734 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print funclocal" }
735 -re "$prompt $" { fail "print funclocal" ; return }
737 fail "(timeout) print funclocal" ; return
741 send "print bar::funclocal\n"
743 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
744 -re "$prompt $" { fail "print bar::funclocal" ; return }
746 fail "(timeout) print bar::funclocal" ; return
750 setup_xfail "rs6000-*-*"
751 send "print 'scope1.c'::bar::funclocal\n"
753 -re "\\\$$decimal = 4\r\n$prompt $" { pass "print 'scope1.c'::bar::funclocal" }
754 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
755 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
758 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
760 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
764 # Print scope1.c::bar::funclocal_bss, which is 104
766 send "print funclocal_bss\n"
768 -re "\\\$$decimal = 104\r\n$prompt $" { pass "print funclocal_bss" }
769 -re "$prompt $" { fail "print funclocal_bss" ; return }
771 fail "(timeout) print funclocal_bss" ; return
775 send "print bar::funclocal_bss\n"
777 -re "\\\$$decimal = 104\r\n$prompt $" { pass "print bar::funclocal_bss" }
778 -re "$prompt $" { fail "print bar::funclocal_bss" ; return }
780 fail "(timeout) print bar::funclocal_bss" ; return
784 setup_xfail "rs6000-*-*"
785 send "print 'scope1.c'::bar::funclocal_bss\n"
787 -re "\\\$$decimal = 104\r\n$prompt $" { pass "print 'scope1.c'::bar::funclocal_bss" }
788 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
789 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal_bss\n"
792 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal_bss" ; return }
794 fail "(timeout) print 'scope1.c'::bar::funclocal_bss" ; return
799 # This test has little to do with local scopes, but it is in scope.exp anyway.
802 proc test_at_autovars {} {
808 # Test symbol table lookup with 100 local (auto) variables.
810 send "break marker1\n" ; expect -re ".*$prompt $"
814 -re "Break.* marker1 \\(\\) at .*:$decimal.*$prompt $" {
818 timeout { fail "up from marker1" ; return }
821 -re "$prompt $" { fail "continue to marker1" ; return }
822 timeout { fail "(timeout) continue to marker1" ; return }
826 while {$count < 100} {
827 send "print i$count\n"
829 -re ".* = $count\r\n$prompt $" {}
831 fail "bad value for auto variable i$count"; return
834 fail "(timeout) bad value for auto variable i$count"; return
837 set count [expr $count+1]
840 pass "$count auto variables correctly initialized"
842 # Test that block variable sorting is not screwing us.
843 gdb_test "frame" "#.*autovars \\(bcd=5, abc=6\\).*" "args in correct order"
846 proc test_at_localscopes {} {
852 send "break marker2\n" ; expect -re ".*$prompt $"
853 send "break marker3\n" ; expect -re ".*$prompt $"
854 send "break marker4\n" ; expect -re ".*$prompt $"
858 -re "Break.* marker2 \\(\\) at .*:$decimal.*$prompt $" {
862 timeout { fail "up from marker2" ; return }
865 -re "$prompt $" { fail "continue to marker2" ; return }
866 timeout { fail "(timeout) continue to marker2" ; return }
869 # Should be at first (outermost) scope. Check values.
871 gdb_test "print localval" " = 10" "print localval, outer scope"
872 gdb_test "print localval1" " = 11" "print localval1, outer scope"
873 gdb_test "print localval2" "No symbol \"localval2\" in current context." \
874 "print localval2, outer scope"
875 gdb_test "print localval3" "No symbol \"localval3\" in current context." \
876 "print localval3, outer scope"
878 if [gdb_test "cont" "Break.* marker3 \\(\\) at .*:$decimal.*" \
879 "continue to marker3 in scope.exp"] then { return }
880 if [gdb_test "up" "" "up from marker3 in scope.exp"] then { return }
882 # Should be at next (first nested) scope. Check values.
884 gdb_test "print localval" " = 20" \
885 "print localval, first nested scope"
886 gdb_test "print localval1" " = 11" "print localval1, first nested scope"
887 gdb_test "print localval2" " = 12" "print localval2, first nested scope"
888 gdb_test "print localval3" "No symbol \"localval3\" in current context." \
889 "print localval3, first nested scope"
891 # This test will only fail if the file was compiled by gcc, but
892 # there's no way to check that.
893 setup_xfail "a29k-*-udi" 2423
894 if [gdb_test "cont" "Break.* marker4.*at .*:$decimal.*" \
895 "continue to marker4 in scope.exp"] then { return }
896 if [gdb_test "up" "" "up from marker4 in scope.exp"] then { return }
898 gdb_test "print localval" " = 30" "print localval, innermost scope"
899 gdb_test "print localval1" " = 11" "print localval1, innermost scope"
900 gdb_test "print localval2" " = 12" "print localval2, innermost scope"
901 gdb_test "print localval3" " = 13" "print localval3, innermost scope"
904 # Start with a fresh gdb.
908 gdb_reinitialize_dir $srcdir/$subdir
909 gdb_load $objdir/$subdir/$binfile
911 if [istarget "*-*-vxworks*"] {
915 # Test that variables in various segments print out correctly before
916 # the program is run.
918 # AIX--sections get mapped to the same address so we can't get the right one.
919 setup_xfail "rs6000-*-*"
920 setup_xfail "powerpc-*-*"
922 gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
924 # gdb currently cannot access bss memory on some targets if the inferior
926 send "print 'scope0.c'::filelocal_bss\n"
928 -re " = 0\r\n$prompt $" {
929 pass "print 'scope0.c'::filelocal_bss before run"
931 -re "Cannot access memory.*$prompt $" {
933 fail "print 'scope0.c'::filelocal_bss before run"
936 fail "print 'scope0.c'::filelocal_bss before run"
939 fail "print 'scope0.c'::filelocal_bss before run"
943 # AIX--sections get mapped to the same address so we can't get the right one.
944 setup_xfail "rs6000-*-*"
946 gdb_test "print 'scope0.c'::filelocal" "= 1" \
947 "print 'scope0.c'::filelocal before run"
949 if [runto_main] then { test_at_main }
950 if [istarget "mips-idt-*"] then {
951 # Restart because IDT/SIM runs out of file descriptors.
954 gdb_reinitialize_dir $srcdir/$subdir
955 gdb_load $objdir/$subdir/$binfile
957 if [runto foo] then { test_at_foo }
958 if [istarget "mips-idt-*"] then {
959 # Restart because IDT/SIM runs out of file descriptors.
962 gdb_reinitialize_dir $srcdir/$subdir
963 gdb_load $objdir/$subdir/$binfile
965 if [runto bar] then { test_at_bar }
966 if [istarget "mips-idt-*"] then {
967 # Restart because IDT/SIM runs out of file descriptors.
970 gdb_reinitialize_dir $srcdir/$subdir
971 gdb_load $objdir/$subdir/$binfile
973 if [runto localscopes] then { test_at_localscopes }
974 if [istarget "mips-idt-*"] then {
975 # Restart because IDT/SIM runs out of file descriptors.
978 gdb_reinitialize_dir $srcdir/$subdir
979 gdb_load $objdir/$subdir/$binfile
981 if [runto autovars] then { test_at_autovars }
983 if [istarget "*-*-vxworks*"] {