aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite
diff options
context:
space:
mode:
authorVladimir Prus <vladimir@codesourcery.com>2008-08-21 15:09:42 +0000
committerVladimir Prus <vladimir@codesourcery.com>2008-08-21 15:09:42 +0000
commit80f73d716b037b1ad4f8e8582852887ba1016d1d (patch)
tree5db75e974091c565c62051e7e553e2436119ce51 /gdb/testsuite
parentaded6f54f0cb9d9b44d72d06af7b940cdeb1876b (diff)
downloadfsf-binutils-gdb-80f73d716b037b1ad4f8e8582852887ba1016d1d.zip
fsf-binutils-gdb-80f73d716b037b1ad4f8e8582852887ba1016d1d.tar.gz
fsf-binutils-gdb-80f73d716b037b1ad4f8e8582852887ba1016d1d.tar.bz2
* gdb.mi/mi-nonstop.exp: Fix the check for non-stop
support. Adjust the order of "*running" notifications. * gdb.mi/non-stop.c: Don't cast from int to void* and back.
Diffstat (limited to 'gdb/testsuite')
-rw-r--r--gdb/testsuite/ChangeLog7
-rw-r--r--gdb/testsuite/gdb.mi/mi-nonstop.exp34
-rw-r--r--gdb/testsuite/gdb.mi/non-stop.c7
3 files changed, 35 insertions, 13 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index eced702..3d7333f 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2008-08-21 Vladimir Prus <vladimir@codesourcery.com>
+
+ * gdb.mi/mi-nonstop.exp: Fix the check for non-stop
+ support. Adjust the order of "*running" notifications.
+ * gdb.mi/non-stop.c: Don't cast from int to void* and
+ back.
+
2008-08-20 Mark Kettenis <kettenis@gnu.org>
* gdb.arch/powerpc-prologue.exp: Code doesn't save %r31 so don't
diff --git a/gdb/testsuite/gdb.mi/mi-nonstop.exp b/gdb/testsuite/gdb.mi/mi-nonstop.exp
index 9c2c299..4aa3a5a 100644
--- a/gdb/testsuite/gdb.mi/mi-nonstop.exp
+++ b/gdb/testsuite/gdb.mi/mi-nonstop.exp
@@ -76,17 +76,32 @@ gdb_expect {
}
}
-if { $supported == 0 } {
- verbose -log "Non-stop mode not supported by the target, skipping tests"
- return
-
-}
-
mi_gdb_test "-gdb-set non-stop 1" ".*"
mi_gdb_test "-gdb-set target-async 1" ".*"
detect_async
-mi_runto main
+mi_gdb_test "200-break-insert -t main" ".*"
+# Note: presently, we skip this test on non-native targets,
+# so 'run' is OK. As soon as we start to run this on remote
+# target, the logic from mi_run_cmd will have to be refactored.
+send_gdb "-exec-run\n"
+gdb_expect {
+ -re ".*\\^running.*$mi_gdb_prompt$" {
+ }
+ -re "\\^error,msg=\"The target does not support running in non-stop mode.\"" {
+ verbose -log "Non-stop mode not supported, skipping all tests"
+ return
+ }
+ -re ".*\r\n$mi_gdb_prompt$" {
+ perror "Cannot start target (unknown output after running)"
+ return -1
+ }
+ timeout {
+ perror "Cannot start target (timeout)"
+ return -1
+ }
+}
+mi_expect_stop "breakpoint-hit" main ".*" ".*" "\[0-9\]+" { "" "disp=\"del\"" } "run to main"
mi_create_breakpoint break_at_me 2 keep break_at_me .* .* .* "breakpoint at marker"
@@ -130,12 +145,9 @@ gdb_expect {
sleep 1
check_thread_states {"stopped" "stopped" "stopped"} "thread state, stop 4"
-# Note that the order of *running notifications below is 'unnatural'. This is because
-# we do only one out-of-line step at the time, so one thread gets resumed immediately
-# and another has to wait.
send_gdb "-exec-continue --all\n"
gdb_expect {
- -re ".*\\*running,thread-id=\"3\".*\\*running,thread-id=\"1\".*\\*running,thread-id=\"2\"\r\n" {
+ -re ".*\\*running,thread-id=\"3\"\r\n\\*running,thread-id=\"2\"\r\n\\*running,thread-id=\"1\"\r\n$mi_gdb_prompt" {
pass "resume all"
}
timeout {
diff --git a/gdb/testsuite/gdb.mi/non-stop.c b/gdb/testsuite/gdb.mi/non-stop.c
index 9b006eb..83acc82 100644
--- a/gdb/testsuite/gdb.mi/non-stop.c
+++ b/gdb/testsuite/gdb.mi/non-stop.c
@@ -42,7 +42,7 @@ void break_at_me (int id, int i)
void *
worker (void *arg)
{
- int id = (int)arg;
+ int id = *(int *)arg;
int i = 0;
/* When gdb is running, it sets hidden breakpoints in the thread
@@ -66,8 +66,11 @@ pthread_t
create_thread (int id)
{
pthread_t tid;
+ /* This memory will be leaked, we don't care for a test. */
+ int *id2 = malloc (sizeof (int));
+ *id2 = id;
- if (pthread_create (&tid, PTHREAD_CREATE_NULL_ARG2, worker, (void *) id))
+ if (pthread_create (&tid, PTHREAD_CREATE_NULL_ARG2, worker, (void *) id2))
{
perror ("pthread_create 1");
exit (1);