]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/testsuite/gdb.base/scope.exp
* config/sh/tm-sh.h (BELIEVE_PCC_PROMOTION): Define, so that
[thirdparty/binutils-gdb.git] / gdb / testsuite / gdb.base / scope.exp
index d1ba89eb3cd7a8cd987a14d48cc7d6f2ee936ff0..9a8292bbfb15c7136710e06f787128f1b378943f 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 1992 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1994 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -12,7 +12,7 @@
 # 
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 # Please email any bugs, comments, and/or additions to this file to:
 # bug-gdb@prep.ai.mit.edu
@@ -26,12 +26,17 @@ if $tracelevel then {
 set prms_id 0
 set bug_id 0
 
-set binfile "scope"
-set srcfile $binfile.c
+set testfile "scope"
+set binfile ${objdir}/${subdir}/${testfile}
+if  { [gdb_compile "${srcdir}/${subdir}/scope0.c ${srcdir}/${subdir}/scope1.c" "${binfile}" executable {debug}] != "" } {
+    perror "Couldn't compile scope0.c to object"
+    return -1
+}
 
-if ![file exists $objdir/$subdir/$binfile] then {
-    perror "$objdir/$subdir/$binfile does not exist."
-    return 0
+# Create and source the file that provides information about the compiler
+# used to compile the test case.
+if [get_compiler_info ${binfile}] {
+    return -1;
 }
 
 # Test locating various things when stopped just inside main, after
@@ -39,992 +44,477 @@ if ![file exists $objdir/$subdir/$binfile] then {
 # first one and quit.  If all pass, then we print the pass results.
 
 proc test_at_main {} {
-    global prompt
+    global gdb_prompt
     global decimal
     global det_file
     global srcdir
     global subdir
-
-    set passcount 0
+    global gcc_compiled
 
     # skip past init.  There may be a call to __main at the start of
     # main, so the first next may only get us to the init call.
-    send "next\n"
-    expect {
-       -re "$decimal.*foo \[)(\]+;\r\n$prompt $" {}
-       -re "$decimal.*init \[)(\]+;\r\n$prompt $"\
-               { send "next\n" ; exp_continue }
-       -re "$prompt $" { fail "next over init() in main" ; return }
-       timeout { fail "(timeout) next over init() in main" ; return }
+    if [gdb_test "next" "$decimal.*foo \\(\\);" "next over init() in main"  "$decimal.*init \\(\\);" "next"] { 
+      return ; 
     }
 
+
     # Print scope0.c::filelocal, which is 1
 
-    send "print filelocal\n"
-    expect {
-       -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print filelocal" ; return }
-       timeout {
-           fail "(timeout) print filelocal" ; return
-       }
+    if [gdb_test "print filelocal" "\\\$$decimal = 1" "print filelocal" ] { 
+      return ; 
     }
 
-    # The RS/6000 does not seem to be handle print 'file'::var.
-    setup_xfail "rs6000-*-*"
-    # This used to work, but is now broken for some reason.
-    setup_xfail "*-*-*"
-    send "print 'scope0.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal" ; return
-       }
+
+    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"] { 
+      return ; 
     }
 
+
     # Print scope0.c::filelocal_bss, which is 101
 
-    send "print filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { print filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print filelocal_bss" ; return
-       }
+    if [gdb_test "print filelocal_bss" "\\\$$decimal = 101" "print filelocal_bss" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope0.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
-       }
+
+    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"] { 
+      return ; 
     }
 
+
     # Print scope0.c::filelocal_ro, which is 201
 
-    send "print filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print filelocal_ro" ; return
-       }
+    # No clue why the powerpc fails this test.
+    setup_xfail "powerpc-*-*"
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    if [gdb_test "print filelocal_ro" "\\\$$decimal = 201" "print filelocal_ro in test_at_main" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope0.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    setup_xfail "powerpc-*-*"
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::filelocal, which is 2
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal" ; return
-       }
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::filelocal_bss, which is 102
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
-       }
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::filelocal_ro, which is 202
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt " {fail "print 'scope1.c'::filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
-       }
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::foo::funclocal, which is 3
 
-    setup_xfail "mips-*-*" 1843
-    send "print foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print foo::funclocal" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal" ; return
-       }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::foo::funclocal_ro, which is 203
 
-    send "print foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal_ro" ; return
-       }
+    if [gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" "print foo::funclocal_ro" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::bar::funclocal, which is 4
 
-    send "print bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print bar::funclocal" ; return }
-       timeout {
-           fail "(timeout) print bar::funclocal" ; return
-       }
+    if [gdb_test "print bar::funclocal" "\\\$$decimal = 4" "print bar::funclocal" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
-       timeout {
-           fail "print 'scope1.c'::bar::funclocal" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
-    clear_xfail "*-*-*"
-    pass "$passcount correct scope resolutions from main()"
 }
 
 proc test_at_foo {} {
-    global prompt
+    global gdb_prompt
     global decimal
     global det_file
     global srcdir
     global subdir
+    global gcc_compiled
 
-    set passcount 0
-
-    send "next\n"
-    expect {
-       -re ".*bar \[)(\]+;\r\n$prompt $" {}
-       -re "$prompt $" { fail "continue to foo()" ; return }
-       timeout { fail "(timeout) continue to foo()" ; return }
+    if [gdb_test "next" ".*bar \\(\\);" "" ] { 
+      return ; 
     }
 
+
     # Print scope0.c::filelocal, which is 1
 
-    setup_xfail "rs6000-*-*"
-    # This used to work, but is now broken for some reason.
-    setup_xfail "*-*-*"
-    send "print 'scope0.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal" ; return
-       }
+    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"] { 
+      return ; 
     }
 
-   # Print scope0.c::filelocal_bss, which is 101
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope0.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
-       }
+    # Print scope0.c::filelocal_bss, which is 101
+
+    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"] { 
+      return ; 
     }
 
-   # Print scope0.c::filelocal_ro, which is 201
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope0.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
-       }
+    # Print scope0.c::filelocal_ro, which is 201
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    setup_xfail "powerpc-*-*"
+    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"] { 
+      return ; 
     }
 
+
+    gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at foo"
+
     # Print scope1.c::filelocal, which is 2
 
-    send "print filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print filelocal" ; return }
-       timeout {
-           fail "(timeout) print filelocal" ; return
-       }
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal" ; return
-       }
-    }
 
-    # Print scope1.c::filelocal_bss, which is 102
+    gdb_test "print filelocal_bss" "\\\$$decimal = 102" \
+       "print filelocal_bss at foo"
 
-    send "print filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print filelocal_bss" ; return
-       }
-    }
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
-       }
-    }
 
-    # Print scope1.c::filelocal_ro, which is 202
+    gdb_test "print filelocal_ro" "\\\$$decimal = 202" \
+       "print filelocal_ro at foo"
 
-    send "print filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print filelocal_ro" ; return
-       }
-    }
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
-       }
-    }
 
     # Print scope1.c::foo::funclocal, which is 3
 
-    send "print funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print funclocal" ; return }
-       timeout {
-           fail "(timeout) print funclocal" ; return
-       }
-    }
+    gdb_test "print funclocal" "\\\$$decimal = 3" "print funclocal at foo"
 
-    setup_xfail "mips-*-*" 1843
-    send "print foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print foo::funclocal" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal" ; return
-       }
-    }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    gdb_test "print foo::funclocal" "\\\$$decimal = 3" \
+       "print foo::funclocal at foo"
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    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"
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
-       }
-    }
 
     # Print scope1.c::foo::funclocal_bss, which is 103
 
-    send "print funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print funclocal_bss" ; return }
-       timeout {
-           fail "(timeout) print funclocal_bss" ; return
-       }
-    }
+    gdb_test "print funclocal_bss" "\\\$$decimal = 103" \
+       "print funclocal_bss at foo"
 
-    send "print foo::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal_bss" ; return
-       }
-    }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" \
+       "print foo::funclocal_bss at foo"
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    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"
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::foo::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
-       }
-    }
 
     # Print scope1.c::foo::funclocal_ro, which is 203
 
-    send "print funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print funclocal_ro" ; return }
-       timeout {
-           fail "(timeout) print funclocal_ro" ; return
-       }
-    }
+    gdb_test "print funclocal_ro" "\\\$$decimal = 203" \
+       "print funclocal_ro at foo"
 
-    send "print foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal_ro" ; return
-       }
-    }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" \
+       "print foo::funclocal_ro at foo"
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    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"
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
-       }
-    }
 
     # Print scope1.c::bar::funclocal, which is 4
 
-    send "print bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print bar::funclocal" ; return }
-       timeout {
-           fail "(timeout) print bar::funclocal" ; return
-       }
-    }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    gdb_test "print bar::funclocal" "\\\$$decimal = 4" \
+       "print bar::funclocal at foo"
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
-       }
-    }
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    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"
 
-    clear_xfail "*-*-*"
-    pass "$passcount correct scope resolutions from foo()"
 }
 
 proc test_at_bar {} {
-    global prompt
+    global gdb_prompt
     global decimal
     global det_file
     global srcdir
     global subdir
+    global gcc_compiled
 
-    set passcount 0
-
-    send "next\n"
-    expect {
-       -re ".*$prompt $" {}
-       timeout { fail "next in bar()" ; return }
+    if [gdb_test "next" ".*" "" ] { 
+      return ; 
     }
 
+
     # Print scope0.c::filelocal, which is 1
 
-    setup_xfail "rs6000-*-*"
-    # This used to work, but is now broken for some reason.
-    setup_xfail "*-*-*"
-    send "print 'scope0.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 1\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal" ; return
-       }
+    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"] { 
+      return ; 
     }
 
+
    # Print scope0.c::filelocal_bss, which is 101
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope0.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 101\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_bss" ; return
-       }
+    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"] { 
+      return ; 
     }
 
+
    # Print scope0.c::filelocal_ro, which is 201
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope0.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 201\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope0.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope0.c'::filelocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope0.c'::filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_ro" ; return
-       }
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    setup_xfail "powerpc-*-*"
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::filelocal, which is 2
 
-    send "print filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print filelocal" ; return }
-       timeout {
-           fail "(timeout) print filelocal" ; return
-       }
+    if [gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at bar" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::filelocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::filelocal_bss, which is 102
 
-    send "print filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print filelocal_bss" ; return
-       }
+    if [gdb_test "print filelocal_bss" "\\\$$decimal = 102" "print filelocal_bss at bar" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal_bss" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::filelocal_ro, which is 202
 
-    send "print filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print filelocal_ro" ; return
-       }
+    if [gdb_test "print filelocal_ro" "\\\$$decimal = 202" "print filelocal_ro in test_at_bar" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::filelocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::filelocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal_ro" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::foo::funclocal, which is 3
 
-    setup_xfail "mips-*-*" 1843
-    send "print foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print foo::funclocal" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal" ; return
-       }
+    if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
+    if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal at bar" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::foo::funclocal_bss, which is 103
 
-    send "print foo::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print foo::funclocal_bss" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal_bss" ; return
-       }
+    if [gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" "print foo::funclocal_bss at bar" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::foo::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 103\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal_bss" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::foo::funclocal_ro, which is 203
 
-    send "print foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print foo::funclocal_ro" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal_ro" ; return
-       }
+    if [gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" "print foo::funclocal_ro at bar" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::foo::funclocal_ro\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::foo::funclocal_ro" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal_ro" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::bar::funclocal, which is 4
 
-    send "print funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print funclocal" ; return }
-       timeout {
-           fail "(timeout) print funclocal" ; return
-       }
+    if [gdb_test "print funclocal" "\\\$$decimal = 4" "print funclocal at bar" ] { 
+      return ; 
     }
 
-    send "print bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print bar::funclocal" ; return }
-       timeout {
-           fail "(timeout) print bar::funclocal" ; return
-       }
+
+    if [gdb_test "print bar::funclocal" "\\\$$decimal = 4" "print bar::funclocal at bar" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::bar::funclocal\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::bar::funclocal" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
+
     # Print scope1.c::bar::funclocal_bss, which is 104
 
-    send "print funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print funclocal_bss" ; return }
-       timeout {
-           fail "(timeout) print funclocal_bss" ; return
-       }
+    if [gdb_test "print funclocal_bss" "\\\$$decimal = 104" "print funclocal_bss at bar" ] { 
+      return ; 
     }
 
-    send "print bar::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "print bar::funclocal_bss" ; return }
-       timeout {
-           fail "(timeout) print bar::funclocal_bss" ; return
-       }
+
+    if [gdb_test "print bar::funclocal_bss" "\\\$$decimal = 104" "print bar::funclocal_bss at bar" ] { 
+      return ; 
     }
 
-    setup_xfail "rs6000-*-*"
-    send "print 'scope1.c'::bar::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 104\r\n$prompt $" { incr passcount }
-       -re "No symbol \"scope1.c\" in current context.*$prompt $" {
-           send "print '$srcdir/$subdir/scope1.c'::bar::funclocal_bss\n"
-           exp_continue
-       }
-       -re "$prompt $" { fail "print 'scope1.c'::bar::funclocal_bss" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::bar::funclocal_bss" ; return
-       }
+
+    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      return ; 
     }
 
-    clear_xfail "*-*-*"
-    pass "$passcount correct scope resolutions from bar()"
 }
 
-# FIXME:  This test was originally part of some local scope resolution
-# tests.  It probably belongs somewhere else now.
+# This test has little to do with local scopes, but it is in scope.exp anyway.
+# That's life.
 
 proc test_at_autovars {} {
-    global prompt
+    global gdb_prompt
     global decimal
     global hex
     global srcfile
 
     # Test symbol table lookup with 100 local (auto) variables.
 
-    send "break marker1\n" ; expect -re ".*$prompt $"
+    gdb_breakpoint marker1
 
-    send "cont\n"
-    expect {
-       -re "Break.* marker1 \[)(\]+ at .*:$decimal.*$prompt $" {
-           send "up\n"
-           expect {
-               -re ".*$prompt $" {}
-               timeout { fail "up from marker1" ; return }
-           }
-       }
-       -re "$prompt $" { fail "continue to marker1" ; return }
-       timeout { fail "(timeout) continue to marker1" ; return }
+    if [gdb_test "cont" "Break.* marker1 \\(\\) at .*:$decimal.*" "continue to marker1"] {
+       return;
+    }
+
+    if [gdb_test "up" ".*" "" ] { 
+       return ; 
     }
 
     set count 0
     while {$count < 100} {
-       send "print i$count\n"
-       expect {
-           -re ".* = $count\r\n$prompt $" {}
-           -re "$prompt $" {
-               fail "bad value for auto variable i$count"; return
-           }
-           timeout {
-               fail "(timeout) bad value for auto variable i$count"; return
-           }
+       if [gdb_test "print i$count" ".* = $count" "" ] { 
+         return ; 
        }
+
        set count [expr $count+1]
     }
     clear_xfail "*-*-*"
     pass "$count auto variables correctly initialized"
 
     # Test that block variable sorting is not screwing us.
-    gdb_test "frame" "#.*autovars \[(\]+bcd=5, abc=6\[)\]+" "args in correct order"
+    gdb_test "frame" "#.*autovars \\(bcd=5, abc=6\\).*" "args in correct order"
 }
 
 proc test_at_localscopes {} {
-    global prompt
+    global gdb_prompt
     global decimal
     global hex
     global srcfile
 
-    set passcount 0
+    gdb_breakpoint marker2
+    gdb_breakpoint marker3
+    gdb_breakpoint marker4
 
-    send "break marker2\n" ; expect -re ".*$prompt $"
-    send "break marker3\n" ; expect -re ".*$prompt $"
-    send "break marker4\n" ; expect -re ".*$prompt $"
-
-    send "cont\n"
-    expect {
-       -re "Break.* marker2 \[)(\]+ at .*:$decimal.*$prompt $" {
-           send "up\n"
-           expect {
-               -re ".*$prompt $" {}
-               timeout { fail "up from marker2" ; return }
-           }
-       }
-       -re "$prompt $" { fail "continue to marker2" ; return }
-       timeout { fail "(timeout) continue to marker2" ; return }
+    if [gdb_test "cont" "Break.* marker2 \\(\\) at .*:$decimal.*" "continue to marker2"] {
+       return;
+    }
+    if [gdb_test "up" ".*" "" ] { 
+       return ; 
     }
 
     # Should be at first (outermost) scope.  Check values.
 
-    send "print localval\n"
-    expect {
-       -re ".* = 10\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "bad value for localval, outer scope" ; return }
-       default { 
-           fail "(timeout) bad value for localval, outer scope" ; return
-       }
-    }
-    send "print localval1\n"
-    expect {
-       -re ".* = 11\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "bad value for localval1" ; return }
-       timeout { fail "(timeout) bad value for localval1" ; return }
-    }
-    send "print localval2\n"
-    expect {
-       -re "No symbol \"localval2\" in current context.\r\n$prompt $" {
-           incr passcount
-       }
-       -re "$prompt $" { fail "bad value for localval2" ; return }
-       timeout { fail "(timeout) bad value for localval2" ; return }
-    }
-    send "print localval3\n"
-    expect {
-       -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
-           incr passcount
-       }
-       -re "$prompt $" { fail "bad value for localval3" ; return }
-       timeout { fail "(timeout) bad value for localval3" ; return }
-    }
+    gdb_test "print localval" " = 10" "print localval, outer scope"
+    gdb_test "print localval1" " = 11" "print localval1, outer scope"
+    gdb_test "print localval2" "No symbol \"localval2\" in current context." \
+       "print localval2, outer scope"
+    gdb_test "print localval3" "No symbol \"localval3\" in current context." \
+       "print localval3, outer scope"
 
-    send "cont\n"
-    expect {
-       -re "Break.* marker3 \[)(\]+ at .*:$decimal.*$prompt $" {
-           send "up\n"
-           expect {
-               -re ".*$prompt $" {}
-               timeout { fail "up from marker3" ; return }
-           }
-       }
-       -re "$prompt $" { fail "continue to marker3" ; return }
-       timeout { fail "(timeout) continue to marker3" ; return }
-    }
+    if [gdb_test "cont" "Break.* marker3 \\(\\) at .*:$decimal.*" \
+       "continue to marker3 in scope.exp"] then { return }
+    if [gdb_test "up" "" "up from marker3 in scope.exp"] then { return }
 
     # Should be at next (first nested) scope.  Check values.
 
-    send "print localval\n"
-    expect {
-       -re ".* = 20\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { 
-           fail "bad value for localval, first nested scope" ; return
-       }
-       timeout { 
-           fail "(timeout) bad value for localval, first nested scope" ; 
-           return
-       }
-    }
-    send "print localval1\n"
-    expect {
-       -re ".* = 11\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "bad value for localval1" ; return }
-       timeout { fail "(timeout) bad value for localval1" ; return }
-    }
-    send "print localval2\n"
-    expect {
-       -re ".* = 12\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "bad value for localval2" ; return }
-       timeout { fail "(timeout) bad value for localval2" ; return }
-    }
-    send "print localval3\n"
-    expect {
-       -re "No symbol \"localval3\" in current context.\r\n$prompt $" {
-           incr passcount
-       }
-       -re "$prompt $" { fail "bad value for localval3" ; return }
-       timeout { fail "(timeout) bad value for localval3" ; return }
-    }
+    gdb_test "print localval" " = 20" \
+       "print localval, first nested scope"
+    gdb_test "print localval1" " = 11" "print localval1, first nested scope"
+    gdb_test "print localval2" " = 12" "print localval2, first nested scope"
+    gdb_test "print localval3" "No symbol \"localval3\" in current context." \
+       "print localval3, first nested scope"
 
     # This test will only fail if the file was compiled by gcc, but
     # there's no way to check that.
-    setup_xfail "mips-*-*" 1868
     setup_xfail "a29k-*-udi" 2423
-    send "cont\n"
-    expect {
-       -re "Break.* marker4.*at .*:$decimal.*$prompt $" {
-           send "up\n"
-           expect {
-               -re ".*$prompt $" {}
-               timeout { fail "up from marker4" ; return }
-           }
-       }
-       -re "$prompt $" { fail "continue to marker4" ; return }
-       timeout { fail "(timeout) continue to marker4" ; return }
-    }
-
-    send "print localval\n"
-    expect {
-       -re ".* = 30\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { 
-           fail "bad value for localval, innermost scope" ; return
-       }
-       timeout { 
-           fail "(timeout) bad value for localval, innermost scope" ; return 
-       }
-    }
-    send "print localval1\n"
-    expect {
-       -re ".* = 11\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "bad value for localval1" ; return }
-       timeout { fail "(timeout) bad value for localval1" ; return }
-    }
-    send "print localval2\n"
-    expect {
-       -re ".* = 12\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "bad value for localval2" ; return }
-       timeout { fail "(timeout) bad value for localval2" ; return }
-    }
-    send "print localval3\n"
-    expect {
-       -re ".* = 13\r\n$prompt $" { incr passcount }
-       -re "$prompt $" { fail "bad value for localval3" ; return }
-       timeout { fail "(timeout) bad value for localval3" ; return }
-    }
-
-    clear_xfail "*-*-*"
-    pass "$passcount correct scope resolutions from localscopes()"
+    if [gdb_test "cont" "Break.* marker4.*at .*:$decimal.*" \
+       "continue to marker4 in scope.exp"] then { return }
+    if [gdb_test "up" "" "up from marker4 in scope.exp"] then { return }
+
+    gdb_test "print localval" " = 30" "print localval, innermost scope"
+    gdb_test "print localval1" " = 11" "print localval1, innermost scope"
+    gdb_test "print localval2" " = 12" "print localval2, innermost scope"
+    gdb_test "print localval3" " = 13" "print localval3, innermost scope"
 }
 
 # Start with a fresh gdb.
@@ -1032,10 +522,11 @@ proc test_at_localscopes {} {
 gdb_exit
 gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
-gdb_load $objdir/$subdir/$binfile
+gdb_load ${binfile}
 
-if [istarget "*-*-vxworks"] {
+if [istarget "*-*-vxworks*"] {
     set timeout 120
+    verbose "Timeout is now $timeout seconds" 2
 }
 
 # Test that variables in various segments print out correctly before
@@ -1043,45 +534,45 @@ if [istarget "*-*-vxworks"] {
 
 # AIX--sections get mapped to the same address so we can't get the right one.
 setup_xfail "rs6000-*-*"
+setup_xfail "powerpc-*-*"
 
 gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
 
 # gdb currently cannot access bss memory on some targets if the inferior
 # is not running.
-send "print 'scope0.c'::filelocal_bss\n"
-expect {
-    -re "= 0.*$prompt $" {
-       pass "print 'scope0.c'::filelocal_bss"
-    }
-    -re "Cannot access memory.*$prompt $" {
+#
+# For PA boards using monitor/remote-pa.c, the bss test is going to 
+# randomly fail.  We've already put remote-pa on the target stack,
+# so we actually read memory from the board.  Problem is crt0.o
+# is responsible for clearing bss and that hasnt' happened yet.
+setup_xfail "hppa*-*-*pro*"
+send_gdb "print 'scope0.c'::filelocal_bss\n"
+gdb_expect {
+    -re " = 0\r\n$gdb_prompt $" {
+       pass "print 'scope0.c'::filelocal_bss before run"
+    }
+    -re "Cannot access memory.*$gdb_prompt $" {
        setup_xfail "*-*-*"
-       fail "print 'scope0.c'::filelocal_bss"
+       fail "print 'scope0.c'::filelocal_bss before run"
     }
-    -re ".*$prompt $" {
-       fail "print 'scope0.c'::filelocal_bss"
+    -re ".*$gdb_prompt $" {
+       fail "print 'scope0.c'::filelocal_bss before run"
     }
     default {
-       fail "print 'scope0.c'::filelocal_bss"
+       fail "print 'scope0.c'::filelocal_bss before run"
     }
 }
 
-# AIX--sections get mapped to the same address so we can't get the right one.
-setup_xfail "rs6000-*-*"
-
-gdb_test "print 'scope0.c'::filelocal" "= 1"
+gdb_test "print 'scope0.c'::filelocal" "= 1" \
+    "print 'scope0.c'::filelocal before run"
 
-if [runto main] then { test_at_main }
+if [runto_main] then { test_at_main }
 if [istarget "mips-idt-*"] then {
     # Restart because IDT/SIM runs out of file descriptors.
     gdb_exit
     gdb_start
     gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load $objdir/$subdir/$binfile
-}
-if [istarget "a29k-*-udi"] then {
-    # FIXME: If PR 2415 is fixed, this is not needed.
-    gdb_target_udi
-    gdb_load $objdir/$subdir/$binfile
+    gdb_load ${binfile}
 }
 if [runto foo] then { test_at_foo }
 if [istarget "mips-idt-*"] then {
@@ -1089,12 +580,7 @@ if [istarget "mips-idt-*"] then {
     gdb_exit
     gdb_start
     gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load $objdir/$subdir/$binfile
-}
-if [istarget "a29k-*-udi"] then {
-    # FIXME: If PR 2415 is fixed, this is not needed.
-    gdb_target_udi
-    gdb_load $objdir/$subdir/$binfile
+    gdb_load ${binfile}
 }
 if [runto bar] then { test_at_bar }
 if [istarget "mips-idt-*"] then {
@@ -1102,12 +588,7 @@ if [istarget "mips-idt-*"] then {
     gdb_exit
     gdb_start
     gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load $objdir/$subdir/$binfile
-}
-if [istarget "a29k-*-udi"] then {
-    # FIXME: If PR 2415 is fixed, this is not needed.
-    gdb_target_udi
-    gdb_load $objdir/$subdir/$binfile
+    gdb_load ${binfile}
 }
 if [runto localscopes] then { test_at_localscopes }
 if [istarget "mips-idt-*"] then {
@@ -1115,20 +596,11 @@ if [istarget "mips-idt-*"] then {
     gdb_exit
     gdb_start
     gdb_reinitialize_dir $srcdir/$subdir
-    gdb_load $objdir/$subdir/$binfile
-}
-if [istarget "a29k-*-udi"] then {
-    # FIXME: If PR 2415 is fixed, this is not needed.
-    gdb_target_udi
-    gdb_load $objdir/$subdir/$binfile
+    gdb_load ${binfile}
 }
 if [runto autovars] then { test_at_autovars }
 
-if [istarget "a29k-*-udi"] then {
-    # FIXME: If PR 2415 is fixed, this is not needed.
-    gdb_target_udi
-}
-
-if [istarget "*-*-vxworks"] {
+if [istarget "*-*-vxworks*"] {
     set timeout 120
+    verbose "Timeout is now $timeout seconds" 2
 }