home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / gdb-4.9 / gdb / testsuite / gdb.t12 / scope.exp < prev    next >
Encoding:
Text File  |  1993-05-12  |  30.0 KB  |  1,056 lines

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