aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.threads
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2014-03-20 13:26:33 +0000
committerPedro Alves <palves@redhat.com>2014-03-20 13:44:32 +0000
commit9f5e1e021a843e573b72ee448397a4db139adf2e (patch)
treea22c08521185db81a7207db16c1ee0c5d1d5657f /gdb/testsuite/gdb.threads
parent99619beac6252113fed212fdb9e1ab97bface423 (diff)
downloadgdb-9f5e1e021a843e573b72ee448397a4db139adf2e.zip
gdb-9f5e1e021a843e573b72ee448397a4db139adf2e.tar.gz
gdb-9f5e1e021a843e573b72ee448397a4db139adf2e.tar.bz2
Make signal-while-stepping-over-bp-other-thread.exp run against remote targets too.
Use pthread_kill instead of the host's "kill". The reason the test wasn't written that way to begin with, is that done this way, before the previous fixes to make GDB step-over all other threads before the stepping thread, the test would fail... Tested on x86_64 Fedora 17, native and gdbserver. gdb/testsuite/ 2014-03-20 Pedro Alves <palves@redhat.com> * gdb.threads/signal-while-stepping-over-bp-other-thread.c (main): Use pthread_kill to signal thread 2. * gdb.threads/signal-while-stepping-over-bp-other-thread.exp: Adjust to make the test send itself a signal rather than using the host's "kill" command.
Diffstat (limited to 'gdb/testsuite/gdb.threads')
-rw-r--r--gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c2
-rw-r--r--gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp14
2 files changed, 4 insertions, 12 deletions
diff --git a/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c b/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c
index a4634f2..8839a6f 100644
--- a/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c
+++ b/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.c
@@ -138,6 +138,8 @@ main ()
pthread_barrier_wait (&barrier);
callme (); /* set wait-thread-3 breakpoint here */
+ pthread_kill (child_thread_2, SIGUSR1);
+
pthread_join (child_thread_2, NULL);
pthread_join (child_thread_3, NULL);
diff --git a/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp b/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp
index c46dad2..2a30604 100644
--- a/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp
+++ b/gdb/testsuite/gdb.threads/signal-while-stepping-over-bp-other-thread.exp
@@ -26,11 +26,6 @@ if [target_info exists gdb,nosignals] {
return -1
}
-# Test uses host "kill".
-if { [is_remote target] } {
- return -1
-}
-
if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
executable [list debug "incdir=${objdir}"]] != "" } {
return -1
@@ -67,11 +62,6 @@ gdb_breakpoint [gdb_get_line_number "set wait-thread-3 breakpoint here"]
gdb_continue_to_breakpoint "run to breakpoint"
gdb_test "info threads" "" "info threads with thread 3"
-set testpid [get_value "pid" "get pid of inferior"]
-if { $testpid == -1 } {
- return -1
-}
-
gdb_test "set scheduler-locking on"
gdb_breakpoint [gdb_get_line_number "set breakpoint child_two here"]
@@ -94,8 +84,8 @@ gdb_test "p *myp = 0" " = 0" "force loop break in thread 2"
# core.
gdb_test "handle SIGUSR1 print nostop pass" "" ""
-# Queue a signal in thread 2.
-remote_exec host "kill -SIGUSR1 ${testpid}"
+gdb_test "thread 1" "" "switch to thread 1 to queue signal in thread 2"
+gdb_test "next 2" "pthread_join .*" "queue signal in thread 2"
gdb_test "thread 3" "" "switch to thread 3 for stepping"
set my_number [get_value "my_number" "get my_number"]