This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[commit] Skip unsupported mi-nonstop.exp for ARM/Thumb


Here's a minor testsuite fix.  GDB supports nonstop on the ARM
architecture, so mi-nonstop.exp never decides to skip the whole test.
But if the user code is compiled with -mthumb, we have to punt -
displaced stepping for Thumb is not implemented in GDB yet.

Tested on arm-none-linux-gnueabi, checked in.

-- 
Daniel Jacobowitz
CodeSourcery

2010-01-28  Daniel Jacobowitz  <dan@codesourcery.com>

	gdb/testsuite/
	* gdb.mi/mi-nonstop.exp (mi_nonstop_resume): New function.
	(Top level): Use it to resume.
	* lib/mi-support.exp (mi_send_resuming_command_raw): Recognize
	the Thumb mode displaced stepping error as unsupported.

---
 gdb/testsuite/gdb.mi/mi-nonstop.exp |   19 ++++++++++++++-----
 gdb/testsuite/lib/mi-support.exp    |   10 +++++++---
 2 files changed, 21 insertions(+), 8 deletions(-)

Index: gdb-mainline/gdb/testsuite/gdb.mi/mi-nonstop.exp
===================================================================
--- gdb-mainline.orig/gdb/testsuite/gdb.mi/mi-nonstop.exp	2010-01-28 12:21:54.000000000 -0800
+++ gdb-mainline/gdb/testsuite/gdb.mi/mi-nonstop.exp	2010-01-28 13:02:13.000000000 -0800
@@ -22,6 +22,15 @@ if {[mi_gdb_start]} {
     continue
 }
 
+proc mi_nonstop_resume { command test } {
+    if { [mi_send_resuming_command $command $test] != 0 } {
+	# If a resume fails, assume non-stop is broken or unsupported
+	# for this target.  We have logged a FAIL or UNSUPPORTED; skip
+	# the remaining tests to limit timeouts.
+	return -code continue
+    }
+}
+
 #
 # Start here
 #
@@ -60,7 +69,7 @@ if { [mi_run_to_main] < 0 } {
 
 mi_create_breakpoint break_at_me 2 keep break_at_me .* .* .* "breakpoint at marker"
 
-mi_send_resuming_command "exec-continue" "resume 1"
+mi_nonstop_resume "exec-continue" "resume 1"
 mi_expect_stop "breakpoint-hit" "break_at_me" ".*" "non-stop.c" ".*" {"" "disp=\"keep\""} "w0,i0 stop"
 mi_expect_stop "breakpoint-hit" "break_at_me" ".*" "non-stop.c" ".*" {"" "disp=\"keep\""} "w1,i0 stop"
 
@@ -71,12 +80,12 @@ mi_create_varobj I_W0 "i" "create varobj
 mi_gdb_test "-thread-select 3" "\\^done.*" "select thread 3"
 mi_create_varobj I_W1 "i" "create varobj in second thread" 
 
-mi_send_resuming_command "exec-continue --thread 2" "resume 1"
+mi_nonstop_resume "exec-continue --thread 2" "resume 1"
 mi_check_thread_states {"running" "running" "stopped"} "thread state, resume 1"
 mi_expect_stop "breakpoint-hit" "break_at_me" ".*" "non-stop.c" ".*" {"" "disp=\"keep\""} "w0,i1 stop"
 mi_check_thread_states {"running" "stopped" "stopped"} "thread state, stop 2"
 
-mi_send_resuming_command "exec-continue --thread 3" "resume 2"
+mi_nonstop_resume "exec-continue --thread 3" "resume 2"
 mi_check_thread_states {"running" "stopped" "running"} "thread state, resume 2"
 mi_expect_stop "breakpoint-hit" "break_at_me" ".*" "non-stop.c" ".*" {"" "disp=\"keep\""} "w1,i1 stop"
 mi_check_thread_states {"running" "stopped" "stopped"} "thread state, stop 3"
@@ -118,8 +127,8 @@ mi_expect_stop "breakpoint-hit" "break_a
 # running thread.
 mi_gdb_test "-break-condition --thread 1 2 id==1" "\\^done" "set condition, 1"
 
-mi_send_resuming_command "exec-continue --thread 2" "resume 2"
-mi_send_resuming_command "exec-continue --thread 3" "resume 3"
+mi_nonstop_resume "exec-continue --thread 2" "resume 2"
+mi_nonstop_resume "exec-continue --thread 3" "resume 3"
 
 sleep 2
 mi_expect_stop "breakpoint-hit" "break_at_me" ".*" "non-stop.c" ".*" {"" "disp=\"keep\""} "w0,i3 stop"
Index: gdb-mainline/gdb/testsuite/lib/mi-support.exp
===================================================================
--- gdb-mainline.orig/gdb/testsuite/lib/mi-support.exp	2010-01-28 12:21:54.000000000 -0800
+++ gdb-mainline/gdb/testsuite/lib/mi-support.exp	2010-01-28 13:05:39.000000000 -0800
@@ -1565,14 +1565,18 @@ proc mi_send_resuming_command_raw {comma
             # as real failure.
 	    return 0
         }
-        -re ".*${mi_gdb_prompt}" {
-            fail "$test (failed to resume)"
-	    return -1
+        -re "\\^error,msg=\"Displaced stepping is only supported in ARM mode\".*" {
+            unsupported "$test (Thumb mode)"
+            return -1
         }
         -re "\\^error,msg=.*" {
             fail "$test (MI error)"
             return -1
         }
+        -re ".*${mi_gdb_prompt}" {
+            fail "$test (failed to resume)"
+	    return -1
+        }
         timeout {
 	    fail "$test"
 	    return -1


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]