diff options
author | Pedro Alves <palves@redhat.com> | 2017-11-06 15:36:47 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2017-11-06 16:13:05 +0000 |
commit | 6aa899ce25d73c397748e4df926da3fd7e5870e5 (patch) | |
tree | b11debf0beb0fdef449fd5f62c50958ecf933473 /gdb/event-top.c | |
parent | a94799ac1e430404fda5cbc181406cf5f3630108 (diff) | |
download | fsf-binutils-gdb-6aa899ce25d73c397748e4df926da3fd7e5870e5.zip fsf-binutils-gdb-6aa899ce25d73c397748e4df926da3fd7e5870e5.tar.gz fsf-binutils-gdb-6aa899ce25d73c397748e4df926da3fd7e5870e5.tar.bz2 |
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.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/gdb/event-top.c b/gdb/event-top.c index 43e2a27..7377189 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. */ |