summaryrefslogtreecommitdiff
path: root/gdb/event-top.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2017-11-06 15:36:47 +0000
committerPedro Alves <palves@redhat.com>2017-11-06 16:13:05 +0000
commit6aa899ce25d73c397748e4df926da3fd7e5870e5 (patch)
treeb11debf0beb0fdef449fd5f62c50958ecf933473 /gdb/event-top.c
parenta94799ac1e430404fda5cbc181406cf5f3630108 (diff)
Eliminate STOP_SIGNAL, use SIGTSTP directly
The STOP_SIGNAL macro was originally added for Convex Unix (https://en.wikipedia.org/wiki/Convex_Computer). In: git show 7a67dd45ca1c:gdb/m-convex.h we see: ~~~ /* Use SIGCONT rather than SIGTSTP because convex Unix occasionally turkeys SIGTSTP. I think. */ #define STOP_SIGNAL SIGCONT ~~~ That's gdb-3.5, 1990... In gdb/ChangeLog-3.x we see: ~~~ Tue Apr 18 13:43:37 1989 Randall Smith (randy at apple-gunkies.ai.mit.edu) Various changes involved in 1) getting gdb to work on the convex, [...] Made whatever signal indicates a stop configurable (via macro STOP_SIGNAL). (main): Setup use of above as a signal handler. Added check for "-nw" in args already processed. (command_line_input): SIGTSTP ==>STOP_SIGNAL. ~~~ Support for Convex Unix is long gone, and nothing else overrides STOP_SIGNAL. So just use SIGTSTP directly, removing a little obfuscation. (I don't really understand why we override [1] readline's SIGTSTP handler (only) when reading scripts (and then fail to restore it properly, assuming SIG_DFL...), but I'll leave that for another pass. [1] - Actually, starting with readline 6.3, readline is no longer installing its handlers while GDB is in control...) gdb/ChangeLog: 2017-11-06 Pedro Alves <palves@redhat.com> * event-top.c: Check SIGTSTP instead of STOP_SIGNAL thoughout. (async_init_signals): Adjust. (handle_stop_sig): Rename to ... (handle_sigtstp): ... this. (async_stop_sig): Rename to ... (async_sigtstp_handler): ... this, and delete STOP_SIGNAL != SIGTSTP path. * event-top.h: Move signal.h include to the top. Check SIGTSTP instead of STOP_SIGNAL thoughout. (handle_stop_sig): Rename to ... (handle_sigtstp): ... this. * top.c (command_line_input): Replace STOP_SIGNAL -> SIGTSTP.
Diffstat (limited to 'gdb/event-top.c')
-rw-r--r--gdb/event-top.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/gdb/event-top.c b/gdb/event-top.c
index 43e2a27163..73771894c9 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -68,8 +68,8 @@ static void async_do_nothing (gdb_client_data);
static void async_disconnect (gdb_client_data);
#endif
static void async_float_handler (gdb_client_data);
-#ifdef STOP_SIGNAL
-static void async_stop_sig (gdb_client_data);
+#ifdef SIGTSTP
+static void async_sigtstp_handler (gdb_client_data);
#endif
static void async_sigterm_handler (gdb_client_data arg);
@@ -111,7 +111,7 @@ static struct async_signal_handler *sighup_token;
static struct async_signal_handler *sigquit_token;
#endif
static struct async_signal_handler *sigfpe_token;
-#ifdef STOP_SIGNAL
+#ifdef SIGTSTP
static struct async_signal_handler *sigtstp_token;
#endif
static struct async_signal_handler *async_sigterm_token;
@@ -912,9 +912,9 @@ async_init_signals (void)
sigfpe_token =
create_async_signal_handler (async_float_handler, NULL);
-#ifdef STOP_SIGNAL
+#ifdef SIGTSTP
sigtstp_token =
- create_async_signal_handler (async_stop_sig, NULL);
+ create_async_signal_handler (async_sigtstp_handler, NULL);
#endif
}
@@ -1112,20 +1112,19 @@ async_disconnect (gdb_client_data arg)
}
#endif
-#ifdef STOP_SIGNAL
+#ifdef SIGTSTP
void
-handle_stop_sig (int sig)
+handle_sigtstp (int sig)
{
mark_async_signal_handler (sigtstp_token);
- signal (sig, handle_stop_sig);
+ signal (sig, handle_sigtstp);
}
static void
-async_stop_sig (gdb_client_data arg)
+async_sigtstp_handler (gdb_client_data arg)
{
char *prompt = get_prompt ();
-#if STOP_SIGNAL == SIGTSTP
signal (SIGTSTP, SIG_DFL);
#if HAVE_SIGPROCMASK
{
@@ -1138,10 +1137,7 @@ async_stop_sig (gdb_client_data arg)
sigsetmask (0);
#endif
raise (SIGTSTP);
- signal (SIGTSTP, handle_stop_sig);
-#else
- signal (STOP_SIGNAL, handle_stop_sig);
-#endif
+ signal (SIGTSTP, handle_sigtstp);
printf_unfiltered ("%s", prompt);
gdb_flush (gdb_stdout);
@@ -1149,7 +1145,7 @@ async_stop_sig (gdb_client_data arg)
nothing. */
dont_repeat ();
}
-#endif /* STOP_SIGNAL */
+#endif /* SIGTSTP */
/* Tell the event loop what to do if SIGFPE is received.
See event-signal.c. */