xref: /netbsd-src/external/gpl3/gdb.old/dist/gdb/testsuite/gdb.base/scope.exp (revision a45db23f655e22f0c2354600d3b3c2cb98abf2dc)
1# Copyright 1992-2020 Free Software Foundation, Inc.
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 3 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16# This file was written by Fred Fish. (fnf@cygnus.com)
17
18
19standard_testfile scope0.c scope1.c
20
21if {[build_executable "failed to build" ${testfile} \
22	 [list $srcfile $srcfile2] {debug}]} {
23    return -1
24}
25
26# Create and source the file that provides information about the compiler
27# used to compile the test case.
28if [get_compiler_info] {
29    return -1
30}
31
32# Test locating various things when stopped just inside main, after
33# running init0().  To prevent cascading of errors, we report the
34# first one and quit.  If all pass, then we print the pass results.
35
36proc test_at_main {} {
37    global gdb_prompt
38    global decimal
39    global det_file
40    global srcdir
41    global subdir
42
43    # skip past init0.
44    # This used to do an extra "next" if the first one didn't get us
45    # over the call to init0, to handle calls to __main in the
46    # prologue, etc.  But if a breakpoint at main doesn't leave us on
47    # the first line of real code in the function, that's a GDB bug.
48    gdb_test "next" "$decimal.*foo \\(\\);" "next over init0() in main"
49
50    # Print scope0.c::filelocal, which is 1
51
52    if [gdb_test "print filelocal" "\\\$$decimal = 1"] {
53      gdb_suppress_tests
54    }
55
56
57    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"] {
58      gdb_suppress_tests
59    }
60
61
62    # Print scope0.c::filelocal_bss, which is 101
63
64    if [gdb_test "print filelocal_bss" "\\\$$decimal = 101"] {
65      gdb_suppress_tests
66    }
67
68
69    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"] {
70      gdb_suppress_tests
71    }
72
73
74    # Print scope0.c::filelocal_ro, which is 201
75
76    # No clue why the rs6000 fails this test.
77    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
78    if [gdb_test "print filelocal_ro" "\\\$$decimal = 201" "print filelocal_ro in test_at_main" ] {
79      gdb_suppress_tests
80    }
81
82
83    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
84    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"] {
85      gdb_suppress_tests
86    }
87
88
89    # Print scope1.c::filelocal, which is 2
90
91    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
92    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"] {
93      gdb_suppress_tests
94    }
95
96
97    # Print scope1.c::filelocal_bss, which is 102
98
99    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
100    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"] {
101      gdb_suppress_tests
102    }
103
104
105    # Print scope1.c::filelocal_ro, which is 202
106
107    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
108    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"] {
109      gdb_suppress_tests
110    }
111
112
113    # Print scope1.c::foo::funclocal, which is 3
114
115    if [gdb_test "print foo::funclocal" "\\\$$decimal = 3"] {
116      gdb_suppress_tests
117    }
118
119
120    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
121    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"] {
122      gdb_suppress_tests
123    }
124
125
126    # Print scope1.c::foo::funclocal_ro, which is 203
127
128    if [gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203"] {
129      gdb_suppress_tests
130    }
131
132
133    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
134    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"] {
135      gdb_suppress_tests
136    }
137
138
139    # Print scope1.c::bar::funclocal, which is 4
140
141    if [gdb_test "print bar::funclocal" "\\\$$decimal = 4"] {
142      gdb_suppress_tests
143    }
144
145
146    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
147    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"] {
148      gdb_suppress_tests
149    }
150    gdb_stop_suppressing_tests
151
152}
153
154proc test_at_foo {} {
155    global gdb_prompt
156    global decimal
157    global det_file
158    global srcdir
159    global subdir
160
161    if [gdb_test "next" ".*bar \\(\\);" "" ] {
162      gdb_suppress_tests
163    }
164
165
166    # Print scope0.c::filelocal, which is 1
167
168    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"] {
169      gdb_suppress_tests
170    }
171
172
173    # Print scope0.c::filelocal_bss, which is 101
174
175    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"] {
176      gdb_suppress_tests
177    }
178
179
180    # Print scope0.c::filelocal_ro, which is 201
181
182    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
183    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"] {
184      gdb_suppress_tests
185    }
186
187
188    gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at foo"
189
190    # Print scope1.c::filelocal, which is 2
191
192    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
193    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"] {
194      gdb_suppress_tests
195    }
196
197
198    gdb_test "print filelocal_bss" "\\\$$decimal = 102" \
199	"print filelocal_bss at foo"
200
201    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
202    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"
203
204
205    gdb_test "print filelocal_ro" "\\\$$decimal = 202" \
206	"print filelocal_ro at foo"
207
208    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
209    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"
210
211
212    # Print scope1.c::foo::funclocal, which is 3
213
214    gdb_test "print funclocal" "\\\$$decimal = 3" "print funclocal at foo"
215
216    gdb_test "print foo::funclocal" "\\\$$decimal = 3" \
217	"print foo::funclocal at foo"
218
219    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
220    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"
221
222
223    # Print scope1.c::foo::funclocal_bss, which is 103
224
225    gdb_test "print funclocal_bss" "\\\$$decimal = 103" \
226	"print funclocal_bss at foo"
227
228    gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" \
229	"print foo::funclocal_bss at foo"
230
231    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
232    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"
233
234
235    # Print scope1.c::foo::funclocal_ro, which is 203
236
237    gdb_test "print funclocal_ro" "\\\$$decimal = 203" \
238	"print funclocal_ro at foo"
239
240    gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" \
241	"print foo::funclocal_ro at foo"
242
243    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
244    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"
245
246
247    # Print scope1.c::bar::funclocal, which is 4
248
249    gdb_test "print bar::funclocal" "\\\$$decimal = 4" \
250	"print bar::funclocal at foo"
251
252    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
253    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"
254    gdb_stop_suppressing_tests
255
256}
257
258proc test_at_bar {} {
259    global gdb_prompt
260    global decimal
261    global det_file
262    global srcdir
263    global subdir
264
265    if [gdb_test "next" ".*" "" ] {
266      gdb_suppress_tests
267    }
268
269
270    # Print scope0.c::filelocal, which is 1
271
272    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"] {
273      gdb_suppress_tests
274    }
275
276
277   # Print scope0.c::filelocal_bss, which is 101
278
279    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"] {
280      gdb_suppress_tests
281    }
282
283
284   # Print scope0.c::filelocal_ro, which is 201
285
286    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
287    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"] {
288      gdb_suppress_tests
289    }
290
291
292    # Print scope1.c::filelocal, which is 2
293
294    if [gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at bar" ] {
295      gdb_suppress_tests
296    }
297
298
299    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
300    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"] {
301      gdb_suppress_tests
302    }
303
304
305    # Print scope1.c::filelocal_bss, which is 102
306
307    if [gdb_test "print filelocal_bss" "\\\$$decimal = 102" "print filelocal_bss at bar" ] {
308      gdb_suppress_tests
309    }
310
311
312    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
313    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"] {
314      gdb_suppress_tests
315    }
316
317
318    # Print scope1.c::filelocal_ro, which is 202
319
320    if [gdb_test "print filelocal_ro" "\\\$$decimal = 202" "print filelocal_ro in test_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_ro" "\\\$$decimal = 202" "print 'scope1.c'::filelocal_ro at bar"  "No symbol \"scope1.c\" in current context.*" "print '$srcdir/$subdir/scope1.c'::filelocal_ro"] {
327      gdb_suppress_tests
328    }
329
330
331    # Print scope1.c::foo::funclocal, which is 3
332
333    if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal 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'::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"] {
340      gdb_suppress_tests
341    }
342
343
344    # Print scope1.c::foo::funclocal_bss, which is 103
345
346    if [gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" "print foo::funclocal_bss 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'::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"] {
353      gdb_suppress_tests
354    }
355
356
357    # Print scope1.c::foo::funclocal_ro, which is 203
358
359    if [gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" "print foo::funclocal_ro 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_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"] {
366      gdb_suppress_tests
367    }
368
369
370    # Print scope1.c::bar::funclocal, which is 4
371
372    if [gdb_test "print funclocal" "\\\$$decimal = 4" "print funclocal at bar" ] {
373      gdb_suppress_tests
374    }
375
376
377    if [gdb_test "print bar::funclocal" "\\\$$decimal = 4" "print bar::funclocal at bar" ] {
378      gdb_suppress_tests
379    }
380
381
382    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
383    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"] {
384      gdb_suppress_tests
385    }
386
387
388    # Print scope1.c::bar::funclocal_bss, which is 104
389
390    if [gdb_test "print funclocal_bss" "\\\$$decimal = 104" "print funclocal_bss at bar" ] {
391      gdb_suppress_tests
392    }
393
394
395    if [gdb_test "print bar::funclocal_bss" "\\\$$decimal = 104" "print bar::funclocal_bss at bar" ] {
396      gdb_suppress_tests
397    }
398
399
400    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
401    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"] {
402      gdb_suppress_tests
403    }
404    gdb_stop_suppressing_tests
405
406}
407
408# This test has little to do with local scopes, but it is in scope.exp anyway.
409# That's life.
410
411proc test_at_autovars {} {
412    global gdb_prompt
413    global decimal
414    global hex
415    global srcfile
416
417    # Test symbol table lookup with 100 local (auto) variables.
418
419    gdb_breakpoint marker1
420
421    if [gdb_test "cont" "Break.* marker1 \\(\\) at .*:$decimal.*" "continue to marker1"] {
422	gdb_suppress_tests
423    }
424
425    if [gdb_test "up" ".*autovars.*" "up from marker1 in scope.exp" ] {
426	gdb_suppress_tests
427    }
428
429    set count 0
430    while {$count < 100} {
431	if [gdb_test "print i$count" ".* = $count" "" ] {
432	  gdb_suppress_tests
433	}
434
435	set count [expr $count+1]
436    }
437    clear_xfail "*-*-*"
438    pass "$count auto variables correctly initialized"
439
440    # Test that block variable sorting is not screwing us.
441    gdb_test "frame" "#.*autovars \\(bcd=5, abc=6\\).*" "args in correct order"
442}
443
444proc test_at_localscopes {} {
445    global gdb_prompt
446    global decimal
447    global hex
448    global srcfile
449
450    gdb_breakpoint marker2
451    gdb_breakpoint marker3
452    gdb_breakpoint marker4
453
454    if [gdb_test "cont" "Break.* marker2 \\(\\) at .*:$decimal.*" "continue to marker2"] {
455	gdb_suppress_tests
456    }
457    if [gdb_test "up" ".*localscopes.*" "up from marker2 in scopes.exp" ] {
458	gdb_suppress_tests
459    }
460
461    # Should be at first (outermost) scope.  Check values.
462
463    gdb_test "print localval" " = 10" "print localval, outer scope"
464    gdb_test "print localval1" " = 11" "print localval1, outer scope"
465    gdb_test "print localval2" "No symbol \"localval2\" in current context." \
466	"print localval2, outer scope"
467    gdb_test "print localval3" "No symbol \"localval3\" in current context." \
468	"print localval3, outer scope"
469
470    if [gdb_test "cont" "Break.* marker3 \\(\\) at .*:$decimal.*" \
471	"continue to marker3 in scope.exp"] then { gdb_suppress_tests }
472    if [gdb_test "up" ".*localscopes.*" "up from marker3 in scope.exp"] {
473	gdb_suppress_tests
474    }
475
476    # Should be at next (first nested) scope.  Check values.
477
478    gdb_test "print localval" " = 20" \
479	"print localval, first nested scope"
480    gdb_test "print localval1" " = 11" "print localval1, first nested scope"
481    gdb_test "print localval2" " = 12" "print localval2, first nested scope"
482    gdb_test "print localval3" "No symbol \"localval3\" in current context." \
483	"print localval3, first nested scope"
484
485    # This test will only fail if the file was compiled by gcc, but
486    # there's no way to check that.
487    if [gdb_test "cont" "Break.* marker4.*at .*:$decimal.*" \
488	"continue to marker4 in scope.exp"] then { gdb_suppress_tests }
489    if [gdb_test "up" ".*localscopes.*" "up from marker4 in scope.exp"] {
490	gdb_suppress_tests
491    }
492
493    gdb_test "print localval" " = 30" "print localval, innermost scope"
494    gdb_test "print localval1" " = 11" "print localval1, innermost scope"
495    gdb_test "print localval2" " = 12" "print localval2, innermost scope"
496    gdb_test "print localval3" " = 13" "print localval3, innermost scope"
497    gdb_stop_suppressing_tests
498}
499
500# Note, we don't pass a binfile to clean_restart because we need to
501# avoid gdb_load here.  With remote targets, gdb_load connects to the
502# remote target, and we specificaly want the following tests to run
503# before the program is started.
504clean_restart
505gdb_file_cmd $binfile
506
507# Test that variables in various segments print out correctly before
508# the program is run.
509
510# AIX--sections get mapped to the same address so we can't get the right one.
511setup_xfail "rs6000-*-*"
512
513gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
514
515# Check that gdb can access bss memory if the inferior is not running.
516#
517# Note the care above about avoiding gdb_load.  Otherwise, for
518# embedded stub-like boards, this test would randomly fail.  If we'd
519# already put target remote on the target stack, we'd read memory from
520# the board instead of the program's binary, and we would have
521# connected before crt0.o had had a chance to clear bss.
522gdb_test "print 'scope0.c'::filelocal_bss" "= 0" \
523    "print 'scope0.c'::filelocal_bss before run"
524
525gdb_test "print 'scope0.c'::filelocal" "= 1" \
526    "print 'scope0.c'::filelocal before run"
527
528if [runto_main] then { test_at_main }
529if [runto foo] then { test_at_foo }
530if [runto bar] then { test_at_bar }
531if [runto localscopes] then { test_at_localscopes }
532if [runto autovars] then { test_at_autovars }
533