diff --git a/gdb/testsuite/config/.Sanitize b/gdb/testsuite/config/.Sanitize
index 4c407cdfec6..e4b80d74637 100644
--- a/gdb/testsuite/config/.Sanitize
+++ b/gdb/testsuite/config/.Sanitize
@@ -56,6 +56,7 @@ mt-vxworks
 netware.exp
 nind.exp
 rom68k.exp
+sh.exp
 sim.exp
 slite.exp
 udi.exp
diff --git a/gdb/testsuite/config/sh.exp b/gdb/testsuite/config/sh.exp
new file mode 100644
index 00000000000..1a2f7a9bc39
--- /dev/null
+++ b/gdb/testsuite/config/sh.exp
@@ -0,0 +1 @@
+load_lib ../config/monitor.exp
diff --git a/gdb/testsuite/gdb.base/break.exp b/gdb/testsuite/gdb.base/break.exp
index a027b2f918d..099fd2769cd 100644
--- a/gdb/testsuite/gdb.base/break.exp
+++ b/gdb/testsuite/gdb.base/break.exp
@@ -157,8 +157,9 @@ if ![target_info exists use_gdb_stub] {
     timeout	            { fail "run until function breakpoint (timeout)" }
   }
 } else {
-    gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:60.*60\[\t \]+if .argc.*\{" \
-	    "stubs continue"
+    if ![target_info exists gdb_stub] {
+	gdb_test continue "Continuing\\..*Breakpoint \[0-9\]+, main \\(argc=.*, argv=.*, envp=.*\\) at .*$srcfile:60.*60\[\t \]+if .argc.*\{" "stub continue"
+    }
 }
 
 #
@@ -308,6 +309,8 @@ proc test_next_with_recursion {} {
 
     delete_breakpoints
 
+    set timeout 20;
+
     gdb_test next "\[0-9\]*\[\t \]+return \\(value\\);.*" \
 	    "next over recursive call"
 
diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp
index 25308dfa9a5..e4bf9b4230d 100644
--- a/gdb/testsuite/gdb.base/watchpoint.exp
+++ b/gdb/testsuite/gdb.base/watchpoint.exp
@@ -372,10 +372,9 @@ proc test_stepping {} {
 # Test stepping and other mundane operations with watchpoints enabled
 proc test_watchpoint_triggered_in_syscall {} {
     global gdb_prompt
-    global noinferiorio
     global noresults
 
-    if $noinferiorio {
+    if [target_info exists gdb,noinferiorio] {
 	verbose "Skipping test_watchpoint_triggered_in_syscall due to noinferiorio"
 	return
     }
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index a49200410f0..157c2109d9c 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -182,12 +182,14 @@ proc gdb_run_cmd {args} {
     if [target_info exists use_gdb_stub] {
 	send_gdb  "jump *start\n"
 	expect {
+	    -re "Continuing at \[^\r\n\]*\[\r\n\]" {
+		if ![target_info exists gdb_stub] {
+		    return;
+		}
+	    }
 	    -re "Line.* Jump anyway.*y or n. $" {
 		send_gdb "y\n"
-		expect {
-		    -re "Continuing.*$gdb_prompt $" {}
-		    timeout { perror "Jump to start() failed (timeout)"; return }
-		}
+		exp_continue;
             }
 	    -re "No symbol.*context.*$gdb_prompt $" {}
 	    -re "The program is not being run.*$gdb_prompt $" {
@@ -195,7 +197,13 @@ proc gdb_run_cmd {args} {
 	    }
 	    timeout { perror "Jump to start() failed (timeout)"; return }
 	}
-	send_gdb "continue\n"
+	if [target_info exists gdb_stub] {
+	    expect {
+		-re ".*$gdb_prompt $" {
+		    send_gdb "continue\n"
+		}
+	    }
+	}
 	return
     }
     send_gdb "run $args\n"
@@ -255,7 +263,7 @@ proc runto { function } {
 	-re "Break.* at .*:$decimal.*$gdb_prompt $" {
 	    return 1
 	}
-	-re "Breakpoint \[0-9\]*, \[0-9xa-f\]* in $function.*$gdb_prompt $" { 
+	-re "Breakpoint \[0-9\]*, \[0-9xa-f\]* in .*$gdb_prompt $" { 
 	    return 1
 	}
 	-re "$gdb_prompt $" {