* lib/gdb.exp (runto): Rewrite in terms of gdb_run_cmd.
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / scope.exp
1 # Copyright (C) 1992 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 2 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, write to the Free Software
15 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
16
17 # Please email any bugs, comments, and/or additions to this file to:
18 # bug-gdb@prep.ai.mit.edu
19
20 # This file was written by Fred Fish. (fnf@cygnus.com)
21
22 if $tracelevel then {
23 strace $tracelevel
24 }
25
26 set prms_id 0
27 set bug_id 0
28
29 set binfile "scope"
30 set srcfile $binfile.c
31
32 if ![file exists $objdir/$subdir/$binfile] then {
33 perror "$objdir/$subdir/$binfile does not exist."
34 return 0
35 }
36
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.
40
41 proc test_at_main {} {
42 global prompt
43 global decimal
44 global det_file
45 global srcdir
46 global subdir
47
48 set passcount 0
49
50 # skip past init. There may be a call to __main at the start of
51 # main, so the first next may only get us to the init call.
52 send "next\n"
53 expect {
54 -re "$decimal.*foo \[)(\]+;\r\n$prompt $" {}
55 -re "$decimal.*init \[)(\]+;\r\n$prompt $"\
56 { send "next\n" ; exp_continue }
57 -re "$prompt $" { fail "next over init() in main" ; return }
58 timeout { fail "(timeout) next over init() in main" ; return }
59 }
60
61 # Print scope0.c::filelocal, which is 1
62
63 send "print filelocal\n"
64 expect {
65 -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
66 -re "$prompt $" { fail "print filelocal" ; return }
67 timeout {
68 fail "(timeout) print filelocal" ; return
69 }
70 }
71
72 # The RS/6000 does not seem to be handle print 'file'::var.
73 setup_xfail "rs6000-*-*"
74 # This used to work, but is now broken for some reason.
75 setup_xfail "*-*-*"
76 send "print 'scope0.c'::filelocal\n"
77 expect {
78 -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
79 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
80 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
81 exp_continue
82 }
83 -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
84 timeout {
85 fail "(timeout) print 'scope0.c'::filelocal" ; return
86 }
87 }
88
89 # Print scope0.c::filelocal_bss, which is 101
90
91 send "print filelocal_bss\n"
92 expect {
93 -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
94 -re "$prompt $" { print filelocal_bss" ; return }
95 timeout {
96 fail "(timeout) print filelocal_bss" ; return
97 }
98 }
99
100 setup_xfail "rs6000-*-*"
101 send "print 'scope0.c'::filelocal_bss\n"
102 expect {
103 -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
104 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
105 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
106 exp_continue
107 }
108 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
109 timeout {
110 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
111 }
112 }
113
114 # Print scope0.c::filelocal_ro, which is 201
115
116 send "print filelocal_ro\n"
117 expect {
118 -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
119 -re "$prompt $" { fail "print filelocal_ro" ; return }
120 timeout {
121 fail "(timeout) print filelocal_ro" ; return
122 }
123 }
124
125 setup_xfail "rs6000-*-*"
126 send "print 'scope0.c'::filelocal_ro\n"
127 expect {
128 -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
129 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
130 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
131 exp_continue
132 }
133 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
134 timeout {
135 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
136 }
137 }
138
139 # Print scope1.c::filelocal, which is 2
140
141 setup_xfail "rs6000-*-*"
142 send "print 'scope1.c'::filelocal\n"
143 expect {
144 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
145 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
146 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
147 exp_continue
148 }
149 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
150 timeout {
151 fail "(timeout) print 'scope1.c'::filelocal" ; return
152 }
153 }
154
155 # Print scope1.c::filelocal_bss, which is 102
156
157 setup_xfail "rs6000-*-*"
158 send "print 'scope1.c'::filelocal_bss\n"
159 expect {
160 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
161 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
162 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
163 exp_continue
164 }
165 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
166 timeout {
167 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
168 }
169 }
170
171 # Print scope1.c::filelocal_ro, which is 202
172
173 setup_xfail "rs6000-*-*"
174 send "print 'scope1.c'::filelocal_ro\n"
175 expect {
176 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
177 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
178 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
179 exp_continue
180 }
181 -re "$prompt " {fail "print 'scope1.c'::filelocal_ro" ; return }
182 timeout {
183 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
184 }
185 }
186
187 # Print scope1.c::foo::funclocal, which is 3
188
189 setup_xfail "mips-*-*" 1843
190 send "print foo::funclocal\n"
191 expect {
192 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
193 -re "$prompt $" { fail "print foo::funclocal" ; return }
194 timeout {
195 fail "(timeout) print foo::funclocal" ; return
196 }
197 }
198
199 setup_xfail "rs6000-*-*"
200 send "print 'scope1.c'::foo::funclocal\n"
201 expect {
202 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
203 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
204 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
205 exp_continue
206 }
207 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
208 timeout {
209 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
210 }
211 }
212
213 # Print scope1.c::foo::funclocal_ro, which is 203
214
215 send "print foo::funclocal_ro\n"
216 expect {
217 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
218 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
219 timeout {
220 fail "(timeout) print foo::funclocal_ro" ; return
221 }
222 }
223
224 setup_xfail "rs6000-*-*"
225 send "print 'scope1.c'::foo::funclocal_ro\n"
226 expect {
227 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
228 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
229 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
230 exp_continue
231 }
232 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
233 timeout {
234 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
235 }
236 }
237
238 # Print scope1.c::bar::funclocal, which is 4
239
240 send "print bar::funclocal\n"
241 expect {
242 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
243 -re "$prompt $" { fail "print bar::funclocal" ; return }
244 timeout {
245 fail "(timeout) print bar::funclocal" ; return
246 }
247 }
248
249 setup_xfail "rs6000-*-*"
250 send "print 'scope1.c'::bar::funclocal\n"
251 expect {
252 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
253 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
254 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
255 exp_continue
256 }
257 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
258 timeout {
259 fail "print 'scope1.c'::bar::funclocal" ; return
260 }
261 }
262
263 clear_xfail "*-*-*"
264 pass "$passcount correct scope resolutions from main()"
265 }
266
267 proc test_at_foo {} {
268 global prompt
269 global decimal
270 global det_file
271 global srcdir
272 global subdir
273
274 set passcount 0
275
276 send "next\n"
277 expect {
278 -re ".*bar \[)(\]+;\r\n$prompt $" {}
279 -re "$prompt $" { fail "continue to foo()" ; return }
280 timeout { fail "(timeout) continue to foo()" ; return }
281 }
282
283 # Print scope0.c::filelocal, which is 1
284
285 setup_xfail "rs6000-*-*"
286 # This used to work, but is now broken for some reason.
287 setup_xfail "*-*-*"
288 send "print 'scope0.c'::filelocal\n"
289 expect {
290 -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
291 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
292 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
293 exp_continue
294 }
295 -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
296 timeout {
297 fail "(timeout) print 'scope0.c'::filelocal" ; return
298 }
299 }
300
301 # Print scope0.c::filelocal_bss, which is 101
302
303 setup_xfail "rs6000-*-*"
304 send "print 'scope0.c'::filelocal_bss\n"
305 expect {
306 -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
307 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
308 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
309 exp_continue
310 }
311 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
312 timeout {
313 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
314 }
315 }
316
317 # Print scope0.c::filelocal_ro, which is 201
318
319 setup_xfail "rs6000-*-*"
320 send "print 'scope0.c'::filelocal_ro\n"
321 expect {
322 -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
323 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
324 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
325 exp_continue
326 }
327 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
328 timeout {
329 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
330 }
331 }
332
333 # Print scope1.c::filelocal, which is 2
334
335 send "print filelocal\n"
336 expect {
337 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
338 -re "$prompt $" { fail "print filelocal" ; return }
339 timeout {
340 fail "(timeout) print filelocal" ; return
341 }
342 }
343
344 setup_xfail "rs6000-*-*"
345 send "print 'scope1.c'::filelocal\n"
346 expect {
347 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
348 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
349 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
350 exp_continue
351 }
352 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
353 timeout {
354 fail "(timeout) print 'scope1.c'::filelocal" ; return
355 }
356 }
357
358 # Print scope1.c::filelocal_bss, which is 102
359
360 send "print filelocal_bss\n"
361 expect {
362 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
363 -re "$prompt $" { fail "print filelocal_bss" ; return }
364 timeout {
365 fail "(timeout) print filelocal_bss" ; return
366 }
367 }
368
369 setup_xfail "rs6000-*-*"
370 send "print 'scope1.c'::filelocal_bss\n"
371 expect {
372 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
373 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
374 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
375 exp_continue
376 }
377 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
378 timeout {
379 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
380 }
381 }
382
383 # Print scope1.c::filelocal_ro, which is 202
384
385 send "print filelocal_ro\n"
386 expect {
387 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
388 -re "$prompt $" { fail "print filelocal_ro" ; return }
389 timeout {
390 fail "(timeout) print filelocal_ro" ; return
391 }
392 }
393
394 setup_xfail "rs6000-*-*"
395 send "print 'scope1.c'::filelocal_ro\n"
396 expect {
397 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
398 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
399 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
400 exp_continue
401 }
402 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
403 timeout {
404 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
405 }
406 }
407
408 # Print scope1.c::foo::funclocal, which is 3
409
410 send "print funclocal\n"
411 expect {
412 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
413 -re "$prompt $" { fail "print funclocal" ; return }
414 timeout {
415 fail "(timeout) print funclocal" ; return
416 }
417 }
418
419 setup_xfail "mips-*-*" 1843
420 send "print foo::funclocal\n"
421 expect {
422 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
423 -re "$prompt $" { fail "print foo::funclocal" ; return }
424 timeout {
425 fail "(timeout) print foo::funclocal" ; return
426 }
427 }
428
429 setup_xfail "rs6000-*-*"
430 send "print 'scope1.c'::foo::funclocal\n"
431 expect {
432 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
433 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
434 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
435 exp_continue
436 }
437 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
438 timeout {
439 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
440 }
441 }
442
443 # Print scope1.c::foo::funclocal_bss, which is 103
444
445 send "print funclocal_bss\n"
446 expect {
447 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
448 -re "$prompt $" { fail "print funclocal_bss" ; return }
449 timeout {
450 fail "(timeout) print funclocal_bss" ; return
451 }
452 }
453
454 send "print foo::funclocal_bss\n"
455 expect {
456 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
457 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
458 timeout {
459 fail "(timeout) print foo::funclocal_bss" ; return
460 }
461 }
462
463 setup_xfail "rs6000-*-*"
464 send "print 'scope1.c'::foo::funclocal_bss\n"
465 expect {
466 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
467 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
468 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
469 exp_continue
470 }
471 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
472 timeout {
473 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
474 }
475 }
476
477 # Print scope1.c::foo::funclocal_ro, which is 203
478
479 send "print funclocal_ro\n"
480 expect {
481 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
482 -re "$prompt $" { fail "print funclocal_ro" ; return }
483 timeout {
484 fail "(timeout) print funclocal_ro" ; return
485 }
486 }
487
488 send "print foo::funclocal_ro\n"
489 expect {
490 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
491 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
492 timeout {
493 fail "(timeout) print foo::funclocal_ro" ; return
494 }
495 }
496
497 setup_xfail "rs6000-*-*"
498 send "print 'scope1.c'::foo::funclocal_ro\n"
499 expect {
500 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
501 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
502 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
503 exp_continue
504 }
505 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
506 timeout {
507 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
508 }
509 }
510
511 # Print scope1.c::bar::funclocal, which is 4
512
513 send "print bar::funclocal\n"
514 expect {
515 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
516 -re "$prompt $" { fail "print bar::funclocal" ; return }
517 timeout {
518 fail "(timeout) print bar::funclocal" ; return
519 }
520 }
521
522 setup_xfail "rs6000-*-*"
523 send "print 'scope1.c'::bar::funclocal\n"
524 expect {
525 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
526 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
527 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
528 exp_continue
529 }
530 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
531 timeout {
532 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
533 }
534 }
535
536 clear_xfail "*-*-*"
537 pass "$passcount correct scope resolutions from foo()"
538 }
539
540 proc test_at_bar {} {
541 global prompt
542 global decimal
543 global det_file
544 global srcdir
545 global subdir
546
547 set passcount 0
548
549 send "next\n"
550 expect {
551 -re ".*$prompt $" {}
552 timeout { fail "next in bar()" ; return }
553 }
554
555 # Print scope0.c::filelocal, which is 1
556
557 setup_xfail "rs6000-*-*"
558 # This used to work, but is now broken for some reason.
559 setup_xfail "*-*-*"
560 send "print 'scope0.c'::filelocal\n"
561 expect {
562 -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
563 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
564 send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
565 exp_continue
566 }
567 -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
568 timeout {
569 fail "(timeout) print 'scope0.c'::filelocal" ; return
570 }
571 }
572
573 # Print scope0.c::filelocal_bss, which is 101
574
575 setup_xfail "rs6000-*-*"
576 send "print 'scope0.c'::filelocal_bss\n"
577 expect {
578 -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
579 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
580 send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
581 exp_continue
582 }
583 -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
584 timeout {
585 fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
586 }
587 }
588
589 # Print scope0.c::filelocal_ro, which is 201
590
591 setup_xfail "rs6000-*-*"
592 send "print 'scope0.c'::filelocal_ro\n"
593 expect {
594 -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
595 -re "No symbol \"scope0.c\" in current context.*$prompt $" {
596 send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
597 exp_continue
598 }
599 -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
600 timeout {
601 fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
602 }
603 }
604
605 # Print scope1.c::filelocal, which is 2
606
607 send "print filelocal\n"
608 expect {
609 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
610 -re "$prompt $" { fail "print filelocal" ; return }
611 timeout {
612 fail "(timeout) print filelocal" ; return
613 }
614 }
615
616 setup_xfail "rs6000-*-*"
617 send "print 'scope1.c'::filelocal\n"
618 expect {
619 -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
620 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
621 send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
622 exp_continue
623 }
624 -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
625 timeout {
626 fail "(timeout) print 'scope1.c'::filelocal" ; return
627 }
628 }
629
630 # Print scope1.c::filelocal_bss, which is 102
631
632 send "print filelocal_bss\n"
633 expect {
634 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
635 -re "$prompt $" { fail "print filelocal_bss" ; return }
636 timeout {
637 fail "(timeout) print filelocal_bss" ; return
638 }
639 }
640
641 setup_xfail "rs6000-*-*"
642 send "print 'scope1.c'::filelocal_bss\n"
643 expect {
644 -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
645 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
646 send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
647 exp_continue
648 }
649 -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
650 timeout {
651 fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
652 }
653 }
654
655 # Print scope1.c::filelocal_ro, which is 202
656
657 send "print filelocal_ro\n"
658 expect {
659 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
660 -re "$prompt $" { fail "print filelocal_ro" ; return }
661 timeout {
662 fail "(timeout) print filelocal_ro" ; return
663 }
664 }
665
666 setup_xfail "rs6000-*-*"
667 send "print 'scope1.c'::filelocal_ro\n"
668 expect {
669 -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
670 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
671 send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
672 exp_continue
673 }
674 -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
675 timeout {
676 fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
677 }
678 }
679
680 # Print scope1.c::foo::funclocal, which is 3
681
682 setup_xfail "mips-*-*" 1843
683 send "print foo::funclocal\n"
684 expect {
685 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
686 -re "$prompt $" { fail "print foo::funclocal" ; return }
687 timeout {
688 fail "(timeout) print foo::funclocal" ; return
689 }
690 }
691
692 setup_xfail "rs6000-*-*"
693 send "print 'scope1.c'::foo::funclocal\n"
694 expect {
695 -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
696 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
697 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
698 exp_continue
699 }
700 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
701 timeout {
702 fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
703 }
704 }
705
706 # Print scope1.c::foo::funclocal_bss, which is 103
707
708 send "print foo::funclocal_bss\n"
709 expect {
710 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
711 -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
712 timeout {
713 fail "(timeout) print foo::funclocal_bss" ; return
714 }
715 }
716
717 setup_xfail "rs6000-*-*"
718 send "print 'scope1.c'::foo::funclocal_bss\n"
719 expect {
720 -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
721 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
722 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
723 exp_continue
724 }
725 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
726 timeout {
727 fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
728 }
729 }
730
731 # Print scope1.c::foo::funclocal_ro, which is 203
732
733 send "print foo::funclocal_ro\n"
734 expect {
735 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
736 -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
737 timeout {
738 fail "(timeout) print foo::funclocal_ro" ; return
739 }
740 }
741
742 setup_xfail "rs6000-*-*"
743 send "print 'scope1.c'::foo::funclocal_ro\n"
744 expect {
745 -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
746 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
747 send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
748 exp_continue
749 }
750 -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
751 timeout {
752 fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
753 }
754 }
755
756 # Print scope1.c::bar::funclocal, which is 4
757
758 send "print funclocal\n"
759 expect {
760 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
761 -re "$prompt $" { fail "print funclocal" ; return }
762 timeout {
763 fail "(timeout) print funclocal" ; return
764 }
765 }
766
767 send "print bar::funclocal\n"
768 expect {
769 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
770 -re "$prompt $" { fail "print bar::funclocal" ; return }
771 timeout {
772 fail "(timeout) print bar::funclocal" ; return
773 }
774 }
775
776 setup_xfail "rs6000-*-*"
777 send "print 'scope1.c'::bar::funclocal\n"
778 expect {
779 -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
780 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
781 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
782 exp_continue
783 }
784 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
785 timeout {
786 fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
787 }
788 }
789
790 # Print scope1.c::bar::funclocal_bss, which is 104
791
792 send "print funclocal_bss\n"
793 expect {
794 -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
795 -re "$prompt $" { fail "print funclocal_bss" ; return }
796 timeout {
797 fail "(timeout) print funclocal_bss" ; return
798 }
799 }
800
801 send "print bar::funclocal_bss\n"
802 expect {
803 -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
804 -re "$prompt $" { fail "print bar::funclocal_bss" ; return }
805 timeout {
806 fail "(timeout) print bar::funclocal_bss" ; return
807 }
808 }
809
810 setup_xfail "rs6000-*-*"
811 send "print 'scope1.c'::bar::funclocal_bss\n"
812 expect {
813 -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
814 -re "No symbol \"scope1.c\" in current context.*$prompt $" {
815 send "print '$srcdir/$subdir/scope1.c'::bar::funclocal_bss\n"
816 exp_continue
817 }
818 -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal_bss" ; return }
819 timeout {
820 fail "(timeout) print 'scope1.c'::bar::funclocal_bss" ; return
821 }
822 }
823
824 clear_xfail "*-*-*"
825 pass "$passcount correct scope resolutions from bar()"
826 }
827
828 # FIXME: This test was originally part of some local scope resolution
829 # tests. It probably belongs somewhere else now.
830
831 proc test_at_autovars {} {
832 global prompt
833 global decimal
834 global hex
835 global srcfile
836
837 # Test symbol table lookup with 100 local (auto) variables.
838
839 send "break marker1\n" ; expect -re ".*$prompt $"
840
841 send "cont\n"
842 expect {
843 -re "Break.* marker1 \[)(\]+ at .*:$decimal.*$prompt $" {
844 send "up\n"
845 expect {
846 -re ".*$prompt $" {}
847 timeout { fail "up from marker1" ; return }
848 }
849 }
850 -re "$prompt $" { fail "continue to marker1" ; return }
851 timeout { fail "(timeout) continue to marker1" ; return }
852 }
853
854 set count 0
855 while {$count < 100} {
856 send "print i$count\n"
857 expect {
858 -re ".* = $count\r\n$prompt $" {}
859 -re "$prompt $" {
860 fail "bad value for auto variable i$count"; return
861 }
862 timeout {
863 fail "(timeout) bad value for auto variable i$count"; return
864 }
865 }
866 set count [expr $count+1]
867 }
868 clear_xfail "*-*-*"
869 pass "$count auto variables correctly initialized"
870
871 # Test that block variable sorting is not screwing us.
872 gdb_test "frame" "#.*autovars \[(\]+bcd=5, abc=6\[)\]+" "args in correct order"
873 }
874
875 proc test_at_localscopes {} {
876 global prompt
877 global decimal
878 global hex
879 global srcfile
880
881 set passcount 0
882
883 send "break marker2\n" ; expect -re ".*$prompt $"
884 send "break marker3\n" ; expect -re ".*$prompt $"
885 send "break marker4\n" ; expect -re ".*$prompt $"
886
887 send "cont\n"
888 expect {
889 -re "Break.* marker2 \[)(\]+ at .*:$decimal.*$prompt $" {
890 send "up\n"
891 expect {
892 -re ".*$prompt $" {}
893 timeout { fail "up from marker2" ; return }
894 }
895 }
896 -re "$prompt $" { fail "continue to marker2" ; return }
897 timeout { fail "(timeout) continue to marker2" ; return }
898 }
899
900 # Should be at first (outermost) scope. Check values.
901
902 send "print localval\n"
903 expect {
904 -re ".* = 10\r\n$prompt $" { incr passcount }
905 -re "$prompt $" { fail "bad value for localval, outer scope" ; return }
906 default {
907 fail "(timeout) bad value for localval, outer scope" ; return
908 }
909 }
910 send "print localval1\n"
911 expect {
912 -re ".* = 11\r\n$prompt $" { incr passcount }
913 -re "$prompt $" { fail "bad value for localval1" ; return }
914 timeout { fail "(timeout) bad value for localval1" ; return }
915 }
916 send "print localval2\n"
917 expect {
918 -re "No symbol \"localval2\" in current context.\r\n$prompt $" {
919 incr passcount
920 }
921 -re "$prompt $" { fail "bad value for localval2" ; return }
922 timeout { fail "(timeout) bad value for localval2" ; return }
923 }
924 send "print localval3\n"
925 expect {
926 -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
927 incr passcount
928 }
929 -re "$prompt $" { fail "bad value for localval3" ; return }
930 timeout { fail "(timeout) bad value for localval3" ; return }
931 }
932
933 send "cont\n"
934 expect {
935 -re "Break.* marker3 \[)(\]+ at .*:$decimal.*$prompt $" {
936 send "up\n"
937 expect {
938 -re ".*$prompt $" {}
939 timeout { fail "up from marker3" ; return }
940 }
941 }
942 -re "$prompt $" { fail "continue to marker3" ; return }
943 timeout { fail "(timeout) continue to marker3" ; return }
944 }
945
946 # Should be at next (first nested) scope. Check values.
947
948 send "print localval\n"
949 expect {
950 -re ".* = 20\r\n$prompt $" { incr passcount }
951 -re "$prompt $" {
952 fail "bad value for localval, first nested scope" ; return
953 }
954 timeout {
955 fail "(timeout) bad value for localval, first nested scope" ;
956 return
957 }
958 }
959 send "print localval1\n"
960 expect {
961 -re ".* = 11\r\n$prompt $" { incr passcount }
962 -re "$prompt $" { fail "bad value for localval1" ; return }
963 timeout { fail "(timeout) bad value for localval1" ; return }
964 }
965 send "print localval2\n"
966 expect {
967 -re ".* = 12\r\n$prompt $" { incr passcount }
968 -re "$prompt $" { fail "bad value for localval2" ; return }
969 timeout { fail "(timeout) bad value for localval2" ; return }
970 }
971 send "print localval3\n"
972 expect {
973 -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
974 incr passcount
975 }
976 -re "$prompt $" { fail "bad value for localval3" ; return }
977 timeout { fail "(timeout) bad value for localval3" ; return }
978 }
979
980 # This test will only fail if the file was compiled by gcc, but
981 # there's no way to check that.
982 setup_xfail "mips-*-*" 1868
983 setup_xfail "a29k-*-udi" 2423
984 send "cont\n"
985 expect {
986 -re "Break.* marker4.*at .*:$decimal.*$prompt $" {
987 send "up\n"
988 expect {
989 -re ".*$prompt $" {}
990 timeout { fail "up from marker4" ; return }
991 }
992 }
993 -re "$prompt $" { fail "continue to marker4" ; return }
994 timeout { fail "(timeout) continue to marker4" ; return }
995 }
996
997 send "print localval\n"
998 expect {
999 -re ".* = 30\r\n$prompt $" { incr passcount }
1000 -re "$prompt $" {
1001 fail "bad value for localval, innermost scope" ; return
1002 }
1003 timeout {
1004 fail "(timeout) bad value for localval, innermost scope" ; return
1005 }
1006 }
1007 send "print localval1\n"
1008 expect {
1009 -re ".* = 11\r\n$prompt $" { incr passcount }
1010 -re "$prompt $" { fail "bad value for localval1" ; return }
1011 timeout { fail "(timeout) bad value for localval1" ; return }
1012 }
1013 send "print localval2\n"
1014 expect {
1015 -re ".* = 12\r\n$prompt $" { incr passcount }
1016 -re "$prompt $" { fail "bad value for localval2" ; return }
1017 timeout { fail "(timeout) bad value for localval2" ; return }
1018 }
1019 send "print localval3\n"
1020 expect {
1021 -re ".* = 13\r\n$prompt $" { incr passcount }
1022 -re "$prompt $" { fail "bad value for localval3" ; return }
1023 timeout { fail "(timeout) bad value for localval3" ; return }
1024 }
1025
1026 clear_xfail "*-*-*"
1027 pass "$passcount correct scope resolutions from localscopes()"
1028 }
1029
1030 # Start with a fresh gdb.
1031
1032 gdb_exit
1033 gdb_start
1034 gdb_reinitialize_dir $srcdir/$subdir
1035 gdb_load $objdir/$subdir/$binfile
1036
1037 if [istarget "*-*-vxworks"] {
1038 set timeout 120
1039 }
1040
1041 # Test that variables in various segments print out correctly before
1042 # the program is run.
1043
1044 # AIX--sections get mapped to the same address so we can't get the right one.
1045 setup_xfail "rs6000-*-*"
1046
1047 gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
1048
1049 # gdb currently cannot access bss memory on some targets if the inferior
1050 # is not running.
1051 send "print 'scope0.c'::filelocal_bss\n"
1052 expect {
1053 -re "= 0.*$prompt $" {
1054 pass "print 'scope0.c'::filelocal_bss"
1055 }
1056 -re "Cannot access memory.*$prompt $" {
1057 setup_xfail "*-*-*"
1058 fail "print 'scope0.c'::filelocal_bss"
1059 }
1060 -re ".*$prompt $" {
1061 fail "print 'scope0.c'::filelocal_bss"
1062 }
1063 default {
1064 fail "print 'scope0.c'::filelocal_bss"
1065 }
1066 }
1067
1068 # AIX--sections get mapped to the same address so we can't get the right one.
1069 setup_xfail "rs6000-*-*"
1070
1071 gdb_test "print 'scope0.c'::filelocal" "= 1"
1072
1073 if [runto main] then { test_at_main }
1074 if [istarget "mips-idt-*"] then {
1075 # Restart because IDT/SIM runs out of file descriptors.
1076 gdb_exit
1077 gdb_start
1078 gdb_reinitialize_dir $srcdir/$subdir
1079 gdb_load $objdir/$subdir/$binfile
1080 }
1081 if [istarget "a29k-*-udi"] then {
1082 # FIXME: If PR 2415 is fixed, this is not needed.
1083 gdb_target_udi
1084 gdb_load $objdir/$subdir/$binfile
1085 }
1086 if [runto foo] then { test_at_foo }
1087 if [istarget "mips-idt-*"] then {
1088 # Restart because IDT/SIM runs out of file descriptors.
1089 gdb_exit
1090 gdb_start
1091 gdb_reinitialize_dir $srcdir/$subdir
1092 gdb_load $objdir/$subdir/$binfile
1093 }
1094 if [istarget "a29k-*-udi"] then {
1095 # FIXME: If PR 2415 is fixed, this is not needed.
1096 gdb_target_udi
1097 gdb_load $objdir/$subdir/$binfile
1098 }
1099 if [runto bar] then { test_at_bar }
1100 if [istarget "mips-idt-*"] then {
1101 # Restart because IDT/SIM runs out of file descriptors.
1102 gdb_exit
1103 gdb_start
1104 gdb_reinitialize_dir $srcdir/$subdir
1105 gdb_load $objdir/$subdir/$binfile
1106 }
1107 if [istarget "a29k-*-udi"] then {
1108 # FIXME: If PR 2415 is fixed, this is not needed.
1109 gdb_target_udi
1110 gdb_load $objdir/$subdir/$binfile
1111 }
1112 if [runto localscopes] then { test_at_localscopes }
1113 if [istarget "mips-idt-*"] then {
1114 # Restart because IDT/SIM runs out of file descriptors.
1115 gdb_exit
1116 gdb_start
1117 gdb_reinitialize_dir $srcdir/$subdir
1118 gdb_load $objdir/$subdir/$binfile
1119 }
1120 if [istarget "a29k-*-udi"] then {
1121 # FIXME: If PR 2415 is fixed, this is not needed.
1122 gdb_target_udi
1123 gdb_load $objdir/$subdir/$binfile
1124 }
1125 if [runto autovars] then { test_at_autovars }
1126
1127 if [istarget "a29k-*-udi"] then {
1128 # FIXME: If PR 2415 is fixed, this is not needed.
1129 gdb_target_udi
1130 }
1131
1132 if [istarget "*-*-vxworks"] {
1133 set timeout 120
1134 }
This page took 0.054813 seconds and 4 git commands to generate.