diff options
author | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2019-02-28 16:09:05 +0100 |
---|---|---|
committer | Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> | 2019-02-28 16:09:05 +0100 |
commit | 92137da015d301fec4b7878467d053d379a2f489 (patch) | |
tree | 12f1796d93cb107afe90fdf6a750253c786b1527 /gdb/procfs.c | |
parent | eed5def8d0b7b64c3592be75a9b22bb4ce1a78f4 (diff) | |
download | gdb-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.c | 5 |
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; |