From 9fa2223dcd83ee1d32505f5b2b7b63602de0cdab Mon Sep 17 00:00:00 2001 From: Daniel Jacobowitz Date: Wed, 23 Jan 2008 20:43:30 +0000 Subject: [PATCH] * remote.c (remote_wait): Handle SIGINT between packets. (remote_async_wait): Likewise. --- gdb/ChangeLog | 5 +++++ gdb/remote.c | 18 +++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3468f049c0..9ab0df42a6 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2008-01-23 Daniel Jacobowitz + + * remote.c (remote_wait): Handle SIGINT between packets. + (remote_async_wait): Likewise. + 2008-01-23 Vladimir Prus Chris Demetriou diff --git a/gdb/remote.c b/gdb/remote.c index eefea2e6a6..1239771671 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -3204,6 +3204,13 @@ remote_wait (ptid_t ptid, struct target_waitstatus *status) char *buf, *p; ofunc = signal (SIGINT, remote_interrupt); + /* If the user hit C-c before this packet, or between packets, + pretend that it was hit right here. */ + if (quit_flag) + { + quit_flag = 0; + remote_interrupt (SIGINT); + } getpkt (&rs->buf, &rs->buf_size, 1); signal (SIGINT, ofunc); @@ -3413,7 +3420,16 @@ remote_async_wait (ptid_t ptid, struct target_waitstatus *status) char *buf, *p; if (!target_is_async_p ()) - ofunc = signal (SIGINT, remote_interrupt); + { + ofunc = signal (SIGINT, remote_interrupt); + /* If the user hit C-c before this packet, or between packets, + pretend that it was hit right here. */ + if (quit_flag) + { + quit_flag = 0; + remote_interrupt (SIGINT); + } + } /* FIXME: cagney/1999-09-27: If we're in async mode we should _never_ wait for ever -> test on target_is_async_p(). However, before we do that we need to ensure that the caller