diff options
author | Pedro Alves <palves@redhat.com> | 2017-03-17 16:08:12 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-03-17 16:08:12 +0000 |
commit | 9bcbdca808b5f9fec6217d20bd4b48a56008c460 (patch) | |
tree | d3acc037c9667229df6ad611a5fd45b1ab991ec4 /gdb/serial.h | |
parent | 7503099f3e29739d34cb1224d54fba96404e6e61 (diff) | |
download | gdb-9bcbdca808b5f9fec6217d20bd4b48a56008c460.zip gdb-9bcbdca808b5f9fec6217d20bd4b48a56008c460.tar.gz gdb-9bcbdca808b5f9fec6217d20bd4b48a56008c460.tar.bz2 |
PR remote/21188: Fix remote serial timeout
As Gareth McMullin <gareth@blacksphere.co.nz> reports at
<https://sourceware.org/ml/gdb-patches/2017-02/msg00560.html>, the
timeout mechanism in ser-unix.c was broken by commit 048094acc
("target remote: Don't rely on immediate_quit (introduce quit
handlers)").
Instead of applying a local fix, and since we now finally always use
interrupt_select [1], let's get rid of hardwire_readchar entirely, and
use ser_base_readchar instead, which has similar timeout handling,
except for the bug.
Smoke tested with:
$ socat -d -d pty,raw,echo=0 pty,raw,echo=0
2017/03/14 14:08:13 socat[4994] N PTY is /dev/pts/14
2017/03/14 14:08:13 socat[4994] N PTY is /dev/pts/15
2017/03/14 14:08:13 socat[4994] N starting data transfer loop with FDs [3,3] and [5,5]
$ gdbserver /dev/pts/14 PROG
$ gdb PROG -ex "tar rem /dev/pts/15"
and then a few continues/ctrl-c's, plus killing gdbserver and socat.
[1] - See FIXME comments being removed.
gdb/ChangeLog:
2017-03-17 Pedro Alves <palves@redhat.com>
PR remote/21188
* ser-base.c (ser_base_wait_for): Add comment.
(do_ser_base_readchar): Improve comment based on the ser-unix.c's
version.
* ser-unix.c (hardwire_raw): Remove reference to
scb->current_timeout.
(wait_for, do_hardwire_readchar, hardwire_readchar): Delete.
(hardwire_ops): Install ser_base_readchar instead of
hardwire_readchar.
* serial.h (struct serial) <current_timeout, timeout_remaining>:
Remove fields.
Diffstat (limited to 'gdb/serial.h')
-rw-r--r-- | gdb/serial.h | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/gdb/serial.h b/gdb/serial.h index cf4e659..b39cc33 100644 --- a/gdb/serial.h +++ b/gdb/serial.h @@ -250,11 +250,6 @@ struct serial buffer. -ve for sticky errors. */ unsigned char *bufp; /* Current byte */ unsigned char buf[BUFSIZ]; /* Da buffer itself */ - int current_timeout; /* (ser-unix.c termio{,s} only), last - value of VTIME */ - int timeout_remaining; /* (ser-unix.c termio{,s} only), we - still need to wait for this many - more seconds. */ struct serial *next; /* Pointer to the next `struct serial *' */ int debug_p; /* Trace this serial devices operation. */ int async_state; /* Async internal state. */ |