Clarify "list" output when specified lines are ambiguous
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.base / scope.exp
index 5d3cf8f70b24ded77fd0a988d4978ad406428082..48d8245776faf3556eedb86cc4c8268702b235b9 100644 (file)
-# Copyright (C) 1992, 1994 Free Software Foundation, Inc.
+# Copyright 1992-2017 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
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
 # (at your option) any later version.
-# 
+#
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
-# 
+#
 # 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., 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
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 # This file was written by Fred Fish. (fnf@cygnus.com)
 
-if $tracelevel then {
-       strace $tracelevel
-}
 
-set prms_id 0
-set bug_id 0
+standard_testfile scope0.c scope1.c
 
-set binfile "scope"
-set srcfile $binfile.c
-
-if ![file exists $objdir/$subdir/$binfile] then {
-    perror "$objdir/$subdir/$binfile does not exist."
-    return 0
+if {[prepare_for_testing "failed to prepare" ${testfile} \
+        [list $srcfile $srcfile2] {debug}]} {
+    return -1
 }
 
-source gdb.base/scope0.ci
+# Create and source the file that provides information about the compiler
+# used to compile the test case.
+if [get_compiler_info] {
+    return -1
+}
 
 # Test locating various things when stopped just inside main, after
-# running init().  To prevent cascading of errors, we report the
+# running init0().  To prevent cascading of errors, we report the
 # 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
-    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 $" {
-           pass "next over init() in main"
-       }
-       -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 }
-    }
+
+    # skip past init0.
+    # This used to do an extra "next" if the first one didn't get us
+    # over the call to init0, to handle calls to __main in the
+    # prologue, etc.  But if a breakpoint at main doesn't leave us on
+    # the first line of real code in the function, that's a GDB bug.
+    gdb_test "next" "$decimal.*foo \\(\\);" "next over init0() in main"
 
     # Print scope0.c::filelocal, which is 1
 
-    send "print filelocal\n"
-    expect {
-       -re "\\\$$decimal = 1\r\n$prompt $" { pass "print filelocal" }
-       -re "$prompt $" { fail "print filelocal" ; return }
-       timeout {
-           fail "(timeout) print filelocal" ; return
-       }
+    if [gdb_test "print filelocal" "\\\$$decimal = 1" "print filelocal" ] { 
+      gdb_suppress_tests
     }
 
-    send "print 'scope0.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 1\r\n$prompt $" {
-           pass "print 'scope0.c'::filelocal at main"
-       }
-       -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 at main" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal at main" ; 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope0.c::filelocal_bss, which is 101
 
-    send "print filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 101\r\n$prompt $" {
-           pass "print filelocal_bss"
-       }
-       -re "$prompt $" { fail "print filelocal_bss" ; return }
-       timeout {
-           fail "(timeout) print filelocal_bss" ; return
-       }
+    if [gdb_test "print filelocal_bss" "\\\$$decimal = 101" "print filelocal_bss" ] { 
+      gdb_suppress_tests
     }
 
-    send "print 'scope0.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 101\r\n$prompt $" {
-           pass "print 'scope0.c'::filelocal_bss in test_at_main"
-       }
-       -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 in test_at_main" ; return 
-       }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_bss in test_at_main"
-           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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope0.c::filelocal_ro, which is 201
 
-    # No clue why the powerpc fails this test.
-    setup_xfail "powerpc-*-*"
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 201\r\n$prompt $" {
-           pass "print filelocal_ro in test_at_main"
-       }
-       -re "$prompt $" {
-           fail "print filelocal_ro in test_at_main"
-           return
-       }
-       timeout {
-           fail "(timeout) print filelocal_ro in test_at_main"
-           return
-       }
+    # No clue why the rs6000 fails this test.
+    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
+    if [gdb_test "print filelocal_ro" "\\\$$decimal = 201" "print filelocal_ro in test_at_main" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    setup_xfail "powerpc-*-*"
-    send "print 'scope0.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 201\r\n$prompt $" {
-           pass "print 'scope0.c'::filelocal_ro"
-       }
-       -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 { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::filelocal, which is 2
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" {
-           pass "print 'scope1.c'::filelocal"
-       }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::filelocal_bss, which is 102
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" {
-           pass "print 'scope1.c'::filelocal_bss"
-       }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::filelocal_ro, which is 202
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" {
-           pass "print 'scope1.c'::filelocal_ro"
-       }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::foo::funclocal, which is 3
 
-    send "print foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
-       -re "$prompt $" { fail "print foo::funclocal" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal" ; return
-       }
+    if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" {
-           pass "print 'scope1.c'::foo::funclocal"
-       }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::foo::funclocal_ro, which is 203
 
-    send "print foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" {
-           pass "print foo::funclocal_ro"
-       }
-       -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" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" {
-           pass "print 'scope1.c'::foo::funclocal_ro" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::bar::funclocal, which is 4
 
-    send "print bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
-       -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" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" {
-           pass "print 'scope1.c'::bar::funclocal"
-       }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
+    gdb_stop_suppressing_tests
+
 }
 
 proc test_at_foo {} {
-    global prompt
+    global gdb_prompt
     global decimal
     global det_file
     global srcdir
     global subdir
-    global gcc_compiled
 
-    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 \\(\\);" "" ] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope0.c::filelocal, which is 1
 
-    send "print 'scope0.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 1\r\n$prompt $" {
-           pass "print 'scope0.c'::filelocal at foo"
-       }
-       -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 at foo" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal at foo" ; 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope0.c::filelocal_bss, which is 101
 
-    send "print 'scope0.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 101\r\n$prompt $" {
-           pass "print 'scope0.c'::filelocal_bss in test_at_foo"
-       }
-       -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 in test_at_foo"
-           return
-       }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_bss in test_at_foo"
-           return
-       }
+    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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope0.c::filelocal_ro, which is 201
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    setup_xfail "powerpc-*-*"
-    send "print 'scope0.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 201\r\n$prompt $" { pass "print 'scope0.c'::filelocal_ro" }
-       -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 { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      gdb_suppress_tests
     }
 
+
     gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at foo"
 
     # Print scope1.c::filelocal, which is 2
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" {
-           pass "print 'scope1.c'::filelocal at foo"
-       }
-       -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 at foo" ; return }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal at foo" ; return
-       }
+    if { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     gdb_test "print filelocal_bss" "\\\$$decimal = 102" \
        "print filelocal_bss at foo"
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" {
-           pass "print 'scope1.c'::filelocal_bss at foo"
-       }
-       -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 at foo" }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal_bss at foo"
-       }
-    }
+    if { [test_compiler_info gcc-*-*] } 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"
+
 
     gdb_test "print filelocal_ro" "\\\$$decimal = 202" \
        "print filelocal_ro at foo"
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" { pass "print 'scope1.c'::filelocal_ro at foo" }
-       -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 at foo" }
-       timeout {
-           fail "(timeout) print 'scope1.c'::filelocal_ro at foo"
-       }
-    }
+    if { [test_compiler_info gcc-*-*] } 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"
+
 
     # Print scope1.c::foo::funclocal, which is 3
 
@@ -425,21 +216,9 @@ proc test_at_foo {} {
     gdb_test "print foo::funclocal" "\\\$$decimal = 3" \
        "print foo::funclocal at foo"
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" {
-           pass "print 'scope1.c'::foo::funclocal at foo"
-       }
-       -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 at foo" }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal at foo"
-       }
-    }
+    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
+    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"
+
 
     # Print scope1.c::foo::funclocal_bss, which is 103
 
@@ -449,23 +228,9 @@ proc test_at_foo {} {
     gdb_test "print foo::funclocal_bss" "\\\$$decimal = 103" \
        "print foo::funclocal_bss at foo"
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::foo::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 103\r\n$prompt $" {
-           pass "print 'scope1.c'::foo::funclocal_bss at foo"
-       }
-       -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 at foo"
-       }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal_bss at foo"
-       }
-    }
+    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
+    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"
+
 
     # Print scope1.c::foo::funclocal_ro, which is 203
 
@@ -475,376 +240,198 @@ proc test_at_foo {} {
     gdb_test "print foo::funclocal_ro" "\\\$$decimal = 203" \
        "print foo::funclocal_ro at foo"
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" {
-           pass "print 'scope1.c'::foo::funclocal_ro at foo"
-       }
-       -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 at foo" }
-       timeout {
-           fail "(timeout) print 'scope1.c'::foo::funclocal_ro at foo"
-       }
-    }
+    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
+    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"
+
 
     # Print scope1.c::bar::funclocal, which is 4
 
     gdb_test "print bar::funclocal" "\\\$$decimal = 4" \
        "print bar::funclocal at foo"
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" {
-           pass "print 'scope1.c'::bar::funclocal at foo"
-       }
-       -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 at foo" }
-       timeout {
-           fail "(timeout) print 'scope1.c'::bar::funclocal at foo"
-       }
-    }
+    if { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
+    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"
+    gdb_stop_suppressing_tests
+
 }
 
 proc test_at_bar {} {
-    global prompt
+    global gdb_prompt
     global decimal
     global det_file
     global srcdir
     global subdir
-    global gcc_compiled
 
-    send "next\n"
-    expect {
-       -re ".*$prompt $" {}
-       timeout { fail "next in bar()" ; return }
+    if [gdb_test "next" ".*" "" ] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope0.c::filelocal, which is 1
 
-    send "print 'scope0.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 1\r\n$prompt $" {
-           pass "print 'scope0.c'::filelocal at bar"
-       }
-       -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 at bar" ; return }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal at bar" ; 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"] { 
+      gdb_suppress_tests
     }
 
+
    # Print scope0.c::filelocal_bss, which is 101
 
-    send "print 'scope0.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 101\r\n$prompt $" {
-           pass "print 'scope0.c'::filelocal_bss in test_at_bar"
-       }
-       -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 in test_at_bar"
-           return
-       }
-       timeout {
-           fail "(timeout) print 'scope0.c'::filelocal_bss in test_at_bar"
-           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"] { 
+      gdb_suppress_tests
     }
 
+
    # Print scope0.c::filelocal_ro, which is 201
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    setup_xfail "powerpc-*-*"
-    send "print 'scope0.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 201\r\n$prompt $" { pass "print 'scope0.c'::filelocal_ro" }
-       -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 { [test_compiler_info gcc-*-*] } then { setup_xfail "rs6000-*-*" }
+    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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::filelocal, which is 2
 
-    send "print filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" { pass "print filelocal" }
-       -re "$prompt $" { fail "print filelocal" ; return }
-       timeout {
-           fail "(timeout) print filelocal" ; return
-       }
+    if [gdb_test "print filelocal" "\\\$$decimal = 2" "print filelocal at bar" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal\n"
-    expect {
-       -re "\\\$$decimal = 2\r\n$prompt $" { pass "print 'scope1.c'::filelocal" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::filelocal_bss, which is 102
 
-    send "print filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" { pass "print filelocal_bss" }
-       -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" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 102\r\n$prompt $" { pass "print 'scope1.c'::filelocal_bss" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::filelocal_ro, which is 202
 
-    send "print filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" {
-           pass "print filelocal_ro in test_at_bar"
-       }
-       -re "$prompt $" {
-           fail "print filelocal_ro in test_at_bar"
-           return
-       }
-       timeout {
-           fail "(timeout) print filelocal_ro in test_at_bar"
-           return
-       }
+    if [gdb_test "print filelocal_ro" "\\\$$decimal = 202" "print filelocal_ro in test_at_bar" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::filelocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 202\r\n$prompt $" { pass "print 'scope1.c'::filelocal_ro" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::foo::funclocal, which is 3
 
-    send "print foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { pass "print foo::funclocal" }
-       -re "$prompt $" { fail "print foo::funclocal" ; return }
-       timeout {
-           fail "(timeout) print foo::funclocal" ; return
-       }
+    if [gdb_test "print foo::funclocal" "\\\$$decimal = 3" "print foo::funclocal at bar" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::foo::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 3\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::foo::funclocal_bss, which is 103
 
-    send "print foo::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 103\r\n$prompt $" { pass "print foo::funclocal_bss" }
-       -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" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::foo::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 103\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal_bss" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::foo::funclocal_ro, which is 203
 
-    send "print foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { pass "print foo::funclocal_ro" }
-       -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" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::foo::funclocal_ro\n"
-    expect {
-       -re "\\\$$decimal = 203\r\n$prompt $" { pass "print 'scope1.c'::foo::funclocal_ro" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::bar::funclocal, which is 4
 
-    send "print funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { pass "print funclocal" }
-       -re "$prompt $" { fail "print funclocal" ; return }
-       timeout {
-           fail "(timeout) print funclocal" ; return
-       }
+    if [gdb_test "print funclocal" "\\\$$decimal = 4" "print funclocal at bar" ] { 
+      gdb_suppress_tests
     }
 
-    send "print bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { pass "print bar::funclocal" }
-       -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" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::bar::funclocal\n"
-    expect {
-       -re "\\\$$decimal = 4\r\n$prompt $" { pass "print 'scope1.c'::bar::funclocal" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
 
+
     # Print scope1.c::bar::funclocal_bss, which is 104
 
-    send "print funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 104\r\n$prompt $" { pass "print funclocal_bss" }
-       -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" ] { 
+      gdb_suppress_tests
     }
 
-    send "print bar::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 104\r\n$prompt $" { pass "print bar::funclocal_bss" }
-       -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" ] { 
+      gdb_suppress_tests
     }
 
-    if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-    send "print 'scope1.c'::bar::funclocal_bss\n"
-    expect {
-       -re "\\\$$decimal = 104\r\n$prompt $" { pass "print 'scope1.c'::bar::funclocal_bss" }
-       -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 { [test_compiler_info gcc-*-*] } 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"] { 
+      gdb_suppress_tests
     }
+    gdb_stop_suppressing_tests
+
 }
 
 # 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"] {
+       gdb_suppress_tests
+    }
+
+    if [gdb_test "up" ".*autovars.*" "up from marker1 in scope.exp" ] { 
+       gdb_suppress_tests
     }
 
     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" "" ] { 
+         gdb_suppress_tests
        }
+
        set count [expr $count+1]
     }
     clear_xfail "*-*-*"
@@ -855,26 +442,20 @@ proc test_at_autovars {} {
 }
 
 proc test_at_localscopes {} {
-    global prompt
+    global gdb_prompt
     global decimal
     global hex
     global srcfile
 
-    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 }
+    gdb_breakpoint marker2
+    gdb_breakpoint marker3
+    gdb_breakpoint marker4
+
+    if [gdb_test "cont" "Break.* marker2 \\(\\) at .*:$decimal.*" "continue to marker2"] {
+       gdb_suppress_tests
+    }
+    if [gdb_test "up" ".*localscopes.*" "up from marker2 in scopes.exp" ] { 
+       gdb_suppress_tests
     }
 
     # Should be at first (outermost) scope.  Check values.
@@ -887,8 +468,10 @@ proc test_at_localscopes {} {
        "print localval3, outer scope"
 
     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 }
+       "continue to marker3 in scope.exp"] then { gdb_suppress_tests }
+    if [gdb_test "up" ".*localscopes.*" "up from marker3 in scope.exp"] { 
+       gdb_suppress_tests 
+    }
 
     # Should be at next (first nested) scope.  Check values.
 
@@ -901,26 +484,17 @@ proc test_at_localscopes {} {
 
     # This test will only fail if the file was compiled by gcc, but
     # there's no way to check that.
-    setup_xfail "a29k-*-udi" 2423
     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 }
+       "continue to marker4 in scope.exp"] then { gdb_suppress_tests }
+    if [gdb_test "up" ".*localscopes.*" "up from marker4 in scope.exp"] {
+       gdb_suppress_tests 
+    }
 
     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.
-
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-gdb_load $objdir/$subdir/$binfile
-
-if [istarget "*-*-vxworks*"] {
-    set timeout 120
+    gdb_stop_suppressing_tests
 }
 
 # Test that variables in various segments print out correctly before
@@ -928,7 +502,6 @@ 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"
 
@@ -939,65 +512,20 @@ gdb_test "print 'scope0.c'::filelocal_ro" "= 201"
 # 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*"
-if {$gcc_compiled} then { setup_xfail "rs6000-*-*" }
-send "print 'scope0.c'::filelocal_bss\n"
-expect {
-    -re " = 0\r\n$prompt $" {
-       pass "print 'scope0.c'::filelocal_bss before run"
-    }
-    -re "Cannot access memory.*$prompt $" {
-       setup_xfail "*-*-*"
-       fail "print 'scope0.c'::filelocal_bss before run"
-    }
-    -re ".*$prompt $" {
-       fail "print 'scope0.c'::filelocal_bss before run"
-    }
-    default {
-       fail "print 'scope0.c'::filelocal_bss before run"
-    }
+#
+# This is a problem for all non-native targets. -- manson
+if [is_remote target] {
+    unsupported "print 'scope0.c'::filelocal_bss before run"
+} else {
+    gdb_test "print 'scope0.c'::filelocal_bss" "= 0" \
+       "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" \
     "print 'scope0.c'::filelocal before run"
 
 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 [runto foo] then { test_at_foo }
-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 [runto bar] then { test_at_bar }
-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 [runto localscopes] then { test_at_localscopes }
-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 [runto autovars] then { test_at_autovars }
-
-if [istarget "*-*-vxworks*"] {
-    set timeout 120
-}
This page took 0.048664 seconds and 4 git commands to generate.