aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-01-12 12:30:33 +0000
committerPedro Alves <palves@redhat.com>2016-01-12 12:30:33 +0000
commite46eeeddfb308cacd863f11a433c10ff1d403827 (patch)
treeb790908a0b288ba936335e7c4ce58eed2f3c75b6 /gdb
parent5eddd57823971bdb54f957d10c11ff3fc9f97b1e (diff)
downloadgdb-e46eeeddfb308cacd863f11a433c10ff1d403827.zip
gdb-e46eeeddfb308cacd863f11a433c10ff1d403827.tar.gz
gdb-e46eeeddfb308cacd863f11a433c10ff1d403827.tar.bz2
Test gdb.base/random-signal.exp with "attach"
This exposes the issued fixed by 2f99e8fc9cb8: https://sourceware.org/ml/gdb-patches/2015-12/msg00423.html to native debugging as well. gdb/testsuite/ChangeLog: 2016-01-12 Pedro Alves <palves@redhat.com> * gdb.base/random-signal.exp (do_test): New procedure, with body of testcase moved in. (top level) Call it twice, once with "run" and once with "attach".
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.base/random-signal.exp56
2 files changed, 50 insertions, 11 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index c5cee45..da9c70a 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-01-12 Pedro Alves <palves@redhat.com>
+
+ * gdb.base/random-signal.exp (do_test): New procedure, with body
+ of testcase moved in.
+
2016-01-11 Jan Kratochvil <jan.kratochvil@redhat.com>
Pedro Alves <palves@redhat.com>
diff --git a/gdb/testsuite/gdb.base/random-signal.exp b/gdb/testsuite/gdb.base/random-signal.exp
index a6170cc..b14662a 100644
--- a/gdb/testsuite/gdb.base/random-signal.exp
+++ b/gdb/testsuite/gdb.base/random-signal.exp
@@ -30,19 +30,53 @@ if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} {
return -1
}
-if {![runto_main]} {
- return -1
+# Set a software watchpoint, continue, wait a bit and stop the target
+# with ctrl-c. A software watchpoint forces the target to
+# single-step.
+proc do_test {} {
+ global binfile
+
+ gdb_test_no_output "set can-use-hw-watchpoints 0"
+ gdb_test "watch v" "Watchpoint .*"
+ gdb_test_multiple "continue" "continue" {
+ -re "Continuing" {
+ pass "continue"
+ }
+ }
+
+ # For this to work we must be sure to consume the "Continuing."
+ # message first, or GDB's signal handler may not be in place.
+ after 500 {send_gdb "\003"}
+ gdb_test "" "Program received signal SIGINT.*" "stop with control-c"
}
-gdb_test_no_output "set can-use-hw-watchpoints 0"
-gdb_test "watch v" "Watchpoint .*"
-gdb_test_multiple "continue" "continue" {
- -re "Continuing" {
- pass "continue"
+# With native debugging and "run" (with job control), the ctrl-c
+# always reaches the inferior, not gdb, even if ctrl-c is pressed
+# while gdb is processing the internal software watchtpoint
+# single-step. With remote debugging, the ctrl-c reaches GDB first.
+with_test_prefix "run" {
+ clean_restart $binfile
+
+ if {![runto_main]} {
+ return -1
}
+
+ do_test
}
-# For this to work we must be sure to consume the "Continuing."
-# message first, or GDB's signal handler may not be in place.
-after 500 {send_gdb "\003"}
-gdb_test "" "Program received signal SIGINT.*" "stop with control-c"
+# With "attach" however, even with native debugging, the ctrl-c always
+# reaches GDB first. Test that as well.
+with_test_prefix "attach" {
+ if {[can_spawn_for_attach]} {
+ clean_restart $binfile
+
+ set test_spawn_id [spawn_wait_for_attach $binfile]
+ set testpid [spawn_id_get_pid $test_spawn_id]
+
+ gdb_test "attach $testpid" "Attaching to.*process $testpid.*libc.*" "attach"
+
+ do_test
+
+ kill_wait_spawned_process $test_spawn_id
+ }
+}