1# Copyright 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003,
2# 2004 Free Software Foundation, Inc.
3
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License as published by
6# the Free Software Foundation; either version 2 of the License, or
7# (at your option) any later version.
8#
9# This program is distributed in the hope that it will be useful,
10# but WITHOUT ANY WARRANTY; without even the implied warranty of
11# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12# GNU General Public License for more details.
13#
14# You should have received a copy of the GNU General Public License
15# along with this program; if not, write to the Free Software
16# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17
18# Please email any bugs, comments, and/or additions to this file to:
19# bug-gdb@prep.ai.mit.edu
20
21# This file was written by Fred Fish. (fnf@cygnus.com)
22
23if $tracelevel then {
24	strace $tracelevel
25}
26
27set prms_id 0
28set bug_id 0
29
30set testfile "scope"
31set binfile ${objdir}/${subdir}/${testfile}
32
33
34if  { [gdb_compile "${srcdir}/${subdir}/scope0.c" "${binfile}0.o" object {debug}] != "" } {
35     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
36}
37
38if  { [gdb_compile "${srcdir}/${subdir}/scope1.c" "${binfile}1.o" object {debug}] != "" } {
39     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
40}
41
42if  { [gdb_compile "${binfile}0.o ${binfile}1.o" ${binfile} executable {debug}] != "" } {
43     gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
44}
45
46# Create and source the file that provides information about the compiler
47# used to compile the test case.
48if [get_compiler_info ${binfile}] {
49    return -1;
50}
51
52# Test locating various things when stopped just inside main, after
53# running init0().  To prevent cascading of errors, we report the
54# first one and quit.  If all pass, then we print the pass results.
55
56proc test_at_main {} {
57    global gdb_prompt
58    global decimal
59    global det_file
60    global srcdir
61    global subdir
62    global hp_cc_compiler
63
64    # skip past init.  There may be a call to __main at the start of
65    # main, so the first next may only get us to the init0 call.
66    if [gdb_test "next" "$decimal.*foo \\(\\);" "next over init0() in main"  "$decimal.*init0 \\(\\);" "next"] {
67      gdb_suppress_tests ;
68    }
69
70
71    # Print scope0.c::filelocal, which is 1
72
73    if [gdb_test "print filelocal" "\\\$$decimal = 1" "print filelocal" ] {
74      gdb_suppress_tests ;
75    }
76
77
78    if [gdb_test "print 'scope0.c'::filelocal" "\\\$$decimal = 1" "print 'scope0.c'::filelocal at main"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal"] {
79      gdb_suppress_tests ;
80    }
81
82
83    # Print scope0.c::filelocal_bss, which is 101
84
85    if [gdb_test "print filelocal_bss" "\\\$$decimal = 101" "print filelocal_bss" ] {
86      gdb_suppress_tests ;
87    }
88
89
90    if [gdb_test "print 'scope0.c'::filelocal_bss" "\\\$$decimal = 101" "print 'scope0.c'::filelocal_bss in test_at_main"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_bss"] {
91      gdb_suppress_tests ;
92    }
93
94
95    # Print scope0.c::filelocal_ro, which is 201
96
97    # No clue why the powerpc fails this test.
98    setup_xfail "powerpc-*-*"
99    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
100    if [gdb_test "print filelocal_ro" "\\\$$decimal = 201" "print filelocal_ro in test_at_main" ] {
101      gdb_suppress_tests ;
102    }
103
104
105    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
106    setup_xfail "powerpc-*-*"
107    if [gdb_test "print 'scope0.c'::filelocal_ro" "\\\$$decimal = 201" "print 'scope0.c'::filelocal_ro"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_ro"] {
108      gdb_suppress_tests ;
109    }
110
111
112    # Print scope1.c::filelocal, which is 2
113
114    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
115    if [gdb_test "print 'scope1.c'::filelocal" "\\\$$decimal = 2" "print 'scope1.c'::filelocal"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal"] {
116      gdb_suppress_tests ;
117    }
118
119
120    # Print scope1.c::filelocal_bss, which is 102
121
122    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
123    if [gdb_test "print 'scope1.c'::filelocal_bss" "\\\$$decimal = 102" "print 'scope1.c'::filelocal_bss"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_bss"] {
124      gdb_suppress_tests ;
125    }
126
127
128    # Print scope1.c::filelocal_ro, which is 202
129
130    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
131    if {$hp_cc_compiler} then { setup_xfail "hppa2.0w-*-*" 11747CLLbs}
132    if [gdb_test "print 'scope1.c'::filelocal_ro" "\\\$$decimal = 202" "print 'scope1.c'::filelocal_ro"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_ro"] {
133      gdb_suppress_tests ;
134    }
135
136
137    # Print scope1.c::foo::funclocal, which is 3
138
139    if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal" ] {
140      gdb_suppress_tests ;
141    }
142
143
144    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
145    if [gdb_test "print 'scope1.c'::foo::funclocal" "\\\$$decimal = 3" "print 'scope1.c'::foo::funclocal"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal"] {
146      gdb_suppress_tests ;
147    }
148
149
150    # Print scope1.c::foo::funclocal_ro, which is 203
151
152    if [gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" "print foo::funclocal_ro" ] {
153      gdb_suppress_tests ;
154    }
155
156
157    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
158    if [gdb_test "print 'scope1.c'::foo::funclocal_ro" "\\\$$decimal = 203" "print 'scope1.c'::foo::funclocal_ro"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro"] {
159      gdb_suppress_tests ;
160    }
161
162
163    # Print scope1.c::bar::funclocal, which is 4
164
165    if [gdb_test "print bar::funclocal" "\\\$$decimal = 4" "print bar::funclocal" ] {
166      gdb_suppress_tests ;
167    }
168
169
170    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
171    if [gdb_test "print 'scope1.c'::bar::funclocal" "\\\$$decimal = 4" "print 'scope1.c'::bar::funclocal"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::bar::funclocal"] {
172      gdb_suppress_tests ;
173    }
174    gdb_stop_suppressing_tests;
175
176}
177
178proc test_at_foo {} {
179    global gdb_prompt
180    global decimal
181    global det_file
182    global srcdir
183    global subdir
184
185    if [gdb_test "next" ".*bar \\(\\);" "" ] {
186      gdb_suppress_tests ;
187    }
188
189
190    # Print scope0.c::filelocal, which is 1
191
192    if [gdb_test "print 'scope0.c'::filelocal" "\\\$$decimal = 1" "print 'scope0.c'::filelocal at foo"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal"] {
193      gdb_suppress_tests ;
194    }
195
196
197    # Print scope0.c::filelocal_bss, which is 101
198
199    if [gdb_test "print 'scope0.c'::filelocal_bss" "\\\$$decimal = 101" "print 'scope0.c'::filelocal_bss in test_at_foo"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_bss"] {
200      gdb_suppress_tests ;
201    }
202
203
204    # Print scope0.c::filelocal_ro, which is 201
205
206    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
207    setup_xfail "powerpc-*-*"
208    if [gdb_test "print 'scope0.c'::filelocal_ro" "\\\$$decimal = 201" "print 'scope0.c'::filelocal_ro"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_ro"] {
209      gdb_suppress_tests ;
210    }
211
212
213    gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at foo"
214
215    # Print scope1.c::filelocal, which is 2
216
217    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
218    if [gdb_test "print 'scope1.c'::filelocal" "\\\$$decimal = 2" "print 'scope1.c'::filelocal at foo"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal"] {
219      gdb_suppress_tests ;
220    }
221
222
223    gdb_test "print filelocal_bss" "\\\$$decimal = 102" \
224	"print filelocal_bss at foo"
225
226    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
227    gdb_test "print 'scope1.c'::filelocal_bss" "\\\$$decimal = 102" "print 'scope1.c'::filelocal_bss at foo"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_bss"
228
229
230    gdb_test "print filelocal_ro" "\\\$$decimal = 202" \
231	"print filelocal_ro at foo"
232
233    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
234    gdb_test "print 'scope1.c'::filelocal_ro" "\\\$$decimal = 202" "print 'scope1.c'::filelocal_ro at foo"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_ro"
235
236
237    # Print scope1.c::foo::funclocal, which is 3
238
239    gdb_test "print funclocal" "\\\$$decimal = 3" "print funclocal at foo"
240
241    gdb_test "print foo::funclocal" "\\\$$decimal = 3" \
242	"print foo::funclocal at foo"
243
244    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
245    gdb_test "print 'scope1.c'::foo::funclocal" "\\\$$decimal = 3" "print 'scope1.c'::foo::funclocal at foo"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal"
246
247
248    # Print scope1.c::foo::funclocal_bss, which is 103
249
250    gdb_test "print funclocal_bss" "\\\$$decimal = 103" \
251	"print funclocal_bss at foo"
252
253    gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" \
254	"print foo::funclocal_bss at foo"
255
256    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
257    gdb_test "print 'scope1.c'::foo::funclocal_bss" "\\\$$decimal = 103" "print 'scope1.c'::foo::funclocal_bss at foo"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss"
258
259
260    # Print scope1.c::foo::funclocal_ro, which is 203
261
262    gdb_test "print funclocal_ro" "\\\$$decimal = 203" \
263	"print funclocal_ro at foo"
264
265    gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" \
266	"print foo::funclocal_ro at foo"
267
268    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
269    gdb_test "print 'scope1.c'::foo::funclocal_ro" "\\\$$decimal = 203" "print 'scope1.c'::foo::funclocal_ro at foo"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro"
270
271
272    # Print scope1.c::bar::funclocal, which is 4
273
274    gdb_test "print bar::funclocal" "\\\$$decimal = 4" \
275	"print bar::funclocal at foo"
276
277    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
278    gdb_test "print 'scope1.c'::bar::funclocal" "\\\$$decimal = 4" "print 'scope1.c'::bar::funclocal at foo"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::bar::funclocal"
279    gdb_stop_suppressing_tests;
280
281}
282
283proc test_at_bar {} {
284    global gdb_prompt
285    global decimal
286    global det_file
287    global srcdir
288    global subdir
289
290    if [gdb_test "next" ".*" "" ] {
291      gdb_suppress_tests ;
292    }
293
294
295    # Print scope0.c::filelocal, which is 1
296
297    if [gdb_test "print 'scope0.c'::filelocal" "\\\$$decimal = 1" "print 'scope0.c'::filelocal at bar"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal"] {
298      gdb_suppress_tests ;
299    }
300
301
302   # Print scope0.c::filelocal_bss, which is 101
303
304    if [gdb_test "print 'scope0.c'::filelocal_bss" "\\\$$decimal = 101" "print 'scope0.c'::filelocal_bss in test_at_bar"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_bss"] {
305      gdb_suppress_tests ;
306    }
307
308
309   # Print scope0.c::filelocal_ro, which is 201
310
311    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
312    setup_xfail "powerpc-*-*"
313    if [gdb_test "print 'scope0.c'::filelocal_ro" "\\\$$decimal = 201" "print 'scope0.c'::filelocal_ro at bar"  "No symbol \"scope0.c\" in current context.*" "print '$srcdir/$subdir/scope0.c'::filelocal_ro"] {
314      gdb_suppress_tests ;
315    }
316
317
318    # Print scope1.c::filelocal, which is 2
319
320    if [gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at bar" ] {
321      gdb_suppress_tests ;
322    }
323
324
325    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
326    if [gdb_test "print 'scope1.c'::filelocal" "\\\$$decimal = 2" "print 'scope1.c'::filelocal at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal"] {
327      gdb_suppress_tests ;
328    }
329
330
331    # Print scope1.c::filelocal_bss, which is 102
332
333    if [gdb_test "print filelocal_bss" "\\\$$decimal = 102" "print filelocal_bss at bar" ] {
334      gdb_suppress_tests ;
335    }
336
337
338    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
339    if [gdb_test "print 'scope1.c'::filelocal_bss" "\\\$$decimal = 102" "print 'scope1.c'::filelocal_bss at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_bss"] {
340      gdb_suppress_tests ;
341    }
342
343
344    # Print scope1.c::filelocal_ro, which is 202
345
346    if [gdb_test "print filelocal_ro" "\\\$$decimal = 202" "print filelocal_ro in test_at_bar" ] {
347      gdb_suppress_tests ;
348    }
349
350
351    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
352    if [gdb_test "print 'scope1.c'::filelocal_ro" "\\\$$decimal = 202" "print 'scope1.c'::filelocal_ro at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_ro"] {
353      gdb_suppress_tests ;
354    }
355
356
357    # Print scope1.c::foo::funclocal, which is 3
358
359    if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal at bar" ] {
360      gdb_suppress_tests ;
361    }
362
363
364    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
365    if [gdb_test "print 'scope1.c'::foo::funclocal" "\\\$$decimal = 3" "print 'scope1.c'::foo::funclocal at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal"] {
366      gdb_suppress_tests ;
367    }
368
369
370    # Print scope1.c::foo::funclocal_bss, which is 103
371
372    if [gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" "print foo::funclocal_bss at bar" ] {
373      gdb_suppress_tests ;
374    }
375
376
377    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
378    if [gdb_test "print 'scope1.c'::foo::funclocal_bss" "\\\$$decimal = 103" "print 'scope1.c'::foo::funclocal_bss at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss"] {
379      gdb_suppress_tests ;
380    }
381
382
383    # Print scope1.c::foo::funclocal_ro, which is 203
384
385    if [gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" "print foo::funclocal_ro at bar" ] {
386      gdb_suppress_tests ;
387    }
388
389
390    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
391    if [gdb_test "print 'scope1.c'::foo::funclocal_ro" "\\\$$decimal = 203" "print 'scope1.c'::foo::funclocal_ro at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro"] {
392      gdb_suppress_tests ;
393    }
394
395
396    # Print scope1.c::bar::funclocal, which is 4
397
398    if [gdb_test "print funclocal" "\\\$$decimal = 4" "print funclocal at bar" ] {
399      gdb_suppress_tests ;
400    }
401
402
403    if [gdb_test "print bar::funclocal" "\\\$$decimal = 4" "print bar::funclocal at bar" ] {
404      gdb_suppress_tests ;
405    }
406
407
408    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
409    if [gdb_test "print 'scope1.c'::bar::funclocal" "\\\$$decimal = 4" "print 'scope1.c'::bar::funclocal at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::bar::funclocal"] {
410      gdb_suppress_tests ;
411    }
412
413
414    # Print scope1.c::bar::funclocal_bss, which is 104
415
416    if [gdb_test "print funclocal_bss" "\\\$$decimal = 104" "print funclocal_bss at bar" ] {
417      gdb_suppress_tests ;
418    }
419
420
421    if [gdb_test "print bar::funclocal_bss" "\\\$$decimal = 104" "print bar::funclocal_bss at bar" ] {
422      gdb_suppress_tests ;
423    }
424
425
426    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
427    if [gdb_test "print 'scope1.c'::bar::funclocal_bss" "\\\$$decimal = 104" "print 'scope1.c'::bar::funclocal_bss at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::bar::funclocal_bss"] {
428      gdb_suppress_tests ;
429    }
430    gdb_stop_suppressing_tests;
431
432}
433
434# This test has little to do with local scopes, but it is in scope.exp anyway.
435# That's life.
436
437proc test_at_autovars {} {
438    global gdb_prompt
439    global decimal
440    global hex
441    global srcfile
442
443    # Test symbol table lookup with 100 local (auto) variables.
444
445    gdb_breakpoint marker1
446
447    if [gdb_test "cont" "Break.* marker1 \\(\\) at .*:$decimal.*" "continue to marker1"] {
448	gdb_suppress_tests;
449    }
450
451    if [gdb_test "up" ".*autovars.*" "up from marker1 in scope.exp" ] {
452	gdb_suppress_tests ;
453    }
454
455    set count 0
456    while {$count < 100} {
457	if [gdb_test "print i$count" ".* = $count" "" ] {
458	  gdb_suppress_tests ;
459	}
460
461	set count [expr $count+1]
462    }
463    clear_xfail "*-*-*"
464    pass "$count auto variables correctly initialized"
465
466    # Test that block variable sorting is not screwing us.
467    gdb_test "frame" "#.*autovars \\(bcd=5, abc=6\\).*" "args in correct order"
468}
469
470proc test_at_localscopes {} {
471    global gdb_prompt
472    global decimal
473    global hex
474    global srcfile
475
476    gdb_breakpoint marker2
477    gdb_breakpoint marker3
478    gdb_breakpoint marker4
479
480    if [gdb_test "cont" "Break.* marker2 \\(\\) at .*:$decimal.*" "continue to marker2"] {
481	gdb_suppress_tests;
482    }
483    if [gdb_test "up" ".*localscopes.*" "up from marker2 in scopes.exp" ] {
484	gdb_suppress_tests ;
485    }
486
487    # Should be at first (outermost) scope.  Check values.
488
489    gdb_test "print localval" " = 10" "print localval, outer scope"
490    gdb_test "print localval1" " = 11" "print localval1, outer scope"
491    gdb_test "print localval2" "No symbol \"localval2\" in current context." \
492	"print localval2, outer scope"
493    gdb_test "print localval3" "No symbol \"localval3\" in current context." \
494	"print localval3, outer scope"
495
496    if [gdb_test "cont" "Break.* marker3 \\(\\) at .*:$decimal.*" \
497	"continue to marker3 in scope.exp"] then { gdb_suppress_tests }
498    if [gdb_test "up" ".*localscopes.*" "up from marker3 in scope.exp"] {
499	gdb_suppress_tests
500    }
501
502    # Should be at next (first nested) scope.  Check values.
503
504    gdb_test "print localval" " = 20" \
505	"print localval, first nested scope"
506    gdb_test "print localval1" " = 11" "print localval1, first nested scope"
507    gdb_test "print localval2" " = 12" "print localval2, first nested scope"
508    gdb_test "print localval3" "No symbol \"localval3\" in current context." \
509	"print localval3, first nested scope"
510
511    # This test will only fail if the file was compiled by gcc, but
512    # there's no way to check that.
513    if [gdb_test "cont" "Break.* marker4.*at .*:$decimal.*" \
514	"continue to marker4 in scope.exp"] then { gdb_suppress_tests }
515    if [gdb_test "up" ".*localscopes.*" "up from marker4 in scope.exp"] {
516	gdb_suppress_tests
517    }
518
519    gdb_test "print localval" " = 30" "print localval, innermost scope"
520    gdb_test "print localval1" " = 11" "print localval1, innermost scope"
521    gdb_test "print localval2" " = 12" "print localval2, innermost scope"
522    gdb_test "print localval3" " = 13" "print localval3, innermost scope"
523    gdb_stop_suppressing_tests;
524}
525
526# Start with a fresh gdb.
527
528gdb_exit
529gdb_start
530gdb_reinitialize_dir $srcdir/$subdir
531gdb_load ${binfile}
532
533if [istarget "*-*-vxworks*"] {
534    set timeout 120
535    verbose "Timeout is now $timeout seconds" 2
536}
537
538# Test that variables in various segments print out correctly before
539# the program is run.
540
541# AIX--sections get mapped to the same address so we can't get the right one.
542setup_xfail "rs6000-*-*"
543setup_xfail "powerpc-*-*"
544
545gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
546
547# gdb currently cannot access bss memory on some targets if the inferior
548# is not running.
549#
550# For PA boards using monitor/remote-pa.c, the bss test is going to
551# randomly fail.  We've already put remote-pa on the target stack,
552# so we actually read memory from the board.  Problem is crt0.o
553# is responsible for clearing bss and that hasnt' happened yet.
554#
555# This is a problem for all non-native targets. -- manson
556if [is_remote target] {
557    unsupported "print 'scope0.c'::filelocal_bss before run"
558} else {
559    gdb_test "print 'scope0.c'::filelocal_bss" "= 0" \
560	"print 'scope0.c'::filelocal_bss before run"
561}
562
563gdb_test "print 'scope0.c'::filelocal" "= 1" \
564    "print 'scope0.c'::filelocal before run"
565
566if [runto_main] then { test_at_main }
567if [istarget "mips-idt-*"] then {
568    # Restart because IDT/SIM runs out of file descriptors.
569    gdb_exit
570    gdb_start
571    gdb_reinitialize_dir $srcdir/$subdir
572    gdb_load ${binfile}
573}
574if [runto foo] then { test_at_foo }
575if [istarget "mips-idt-*"] then {
576    # Restart because IDT/SIM runs out of file descriptors.
577    gdb_exit
578    gdb_start
579    gdb_reinitialize_dir $srcdir/$subdir
580    gdb_load ${binfile}
581}
582if [runto bar] then { test_at_bar }
583if [istarget "mips-idt-*"] then {
584    # Restart because IDT/SIM runs out of file descriptors.
585    gdb_exit
586    gdb_start
587    gdb_reinitialize_dir $srcdir/$subdir
588    gdb_load ${binfile}
589}
590if [runto localscopes] then { test_at_localscopes }
591if [istarget "mips-idt-*"] then {
592    # Restart because IDT/SIM runs out of file descriptors.
593    gdb_exit
594    gdb_start
595    gdb_reinitialize_dir $srcdir/$subdir
596    gdb_load ${binfile}
597}
598if [runto autovars] then { test_at_autovars }
599
600if [istarget "*-*-vxworks*"] {
601    set timeout 120
602    verbose "Timeout is now $timeout seconds" 2
603}
604