aboutsummaryrefslogtreecommitdiff
path: root/gdb/infcmd.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-04-12 16:49:31 +0100
committerPedro Alves <palves@redhat.com>2016-04-12 16:56:39 +0100
commite42de8c7f8e7326d284f8b53f3bd6971fbf6e7b7 (patch)
tree572a89f31b64944a5772acbdb8331e2cec9bde38 /gdb/infcmd.c
parenta149683b0c277279d892c9617233643188a34251 (diff)
downloadgdb-e42de8c7f8e7326d284f8b53f3bd6971fbf6e7b7.zip
gdb-e42de8c7f8e7326d284f8b53f3bd6971fbf6e7b7.tar.gz
gdb-e42de8c7f8e7326d284f8b53f3bd6971fbf6e7b7.tar.bz2
Decouple target_interrupt from all-stop/non-stop modes
In non-stop mode, "interrupt" results in a "stop with no signal", while in all-stop mode, it results in a remote interrupt request / stop with SIGINT. This is currently implemented in both the Linux and remote target backends. Move it to the core code instead, making target_interrupt specifically always about "Interrupting as if with Ctrl-C", just like it is documented. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * infcmd.c (interrupt_target_1): Call target_stop is in non-stop mode. * linux-nat.c (linux_nat_interrupt): Delete. (linux_nat_add_target): Don't install linux_nat_interrupt. * remote.c (remote_interrupt_ns): Change return type to void. Throw error if interrupting the target is not supported. (remote_interrupt): Don't call the remote_stop_ns/remote_stop_as.
Diffstat (limited to 'gdb/infcmd.c')
-rw-r--r--gdb/infcmd.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index d687116..3a0265f 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -3013,7 +3013,11 @@ interrupt_target_1 (int all_threads)
ptid = minus_one_ptid;
else
ptid = inferior_ptid;
- target_interrupt (ptid);
+
+ if (non_stop)
+ target_stop (ptid);
+ else
+ target_interrupt (ptid);
/* Tag the thread as having been explicitly requested to stop, so
other parts of gdb know not to resume this thread automatically,