aboutsummaryrefslogtreecommitdiff
path: root/gdb/procfs.c
diff options
context:
space:
mode:
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2019-02-28 16:09:05 +0100
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>2019-02-28 16:09:05 +0100
commit92137da015d301fec4b7878467d053d379a2f489 (patch)
tree12f1796d93cb107afe90fdf6a750253c786b1527 /gdb/procfs.c
parenteed5def8d0b7b64c3592be75a9b22bb4ce1a78f4 (diff)
downloadgdb-92137da015d301fec4b7878467d053d379a2f489.zip
gdb-92137da015d301fec4b7878467d053d379a2f489.tar.gz
gdb-92137da015d301fec4b7878467d053d379a2f489.tar.bz2
Can't interrupt process without controlling terminal on Solaris (PR gdb/8527)
If gdb attaches to a process that either has no controlling terminal, or the controlling terminal differs from the one gdb is running under, break/^C doesn't interrupt the debugged process on Solaris. Fixed as follows, analogous to what all all other targets do. Patch from the PR, recently re-submitted by Brian Vandenberg. Tested on amd64-pc-solaris2.11, sparcv9-sun-solaris2.11, and x86_64-pc-linux-gnu. 2019-02-28 Brian Vandenberg <phantall@gmail.com> Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> gdb: PR gdb/8527 * procfs.c (proc_wait_for_stop): Wrap write of PCWSTOP in set_sigint_trap, clear_sigint_trap. gdb/testsuite: PR gdb/8527 * gdb.base/interrupt-daemon-attach.c, gdb.base/interrupt-daemon-attach.exp: New test.
Diffstat (limited to 'gdb/procfs.c')
-rw-r--r--gdb/procfs.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/procfs.c b/gdb/procfs.c
index b790f11..0525b76 100644
--- a/gdb/procfs.c
+++ b/gdb/procfs.c
@@ -909,7 +909,12 @@ proc_wait_for_stop (procinfo *pi)
procfs_ctl_t cmd = PCWSTOP;
+ set_sigint_trap ();
+
win = (write (pi->ctl_fd, (char *) &cmd, sizeof (cmd)) == sizeof (cmd));
+
+ clear_sigint_trap ();
+
/* We been runnin' and we stopped -- need to update status. */
pi->status_valid = 0;