aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2021-06-18 12:56:03 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2021-08-11 12:35:14 +0100
commit270135645b50a2fb8a4dac216584e8056167ffcc (patch)
tree5204f7678acb55014cc5478e21a8b8e42ccfd0a7
parentbbefac7df96061a56dc4f17ef548382bdf4c3166 (diff)
downloadgdb-270135645b50a2fb8a4dac216584e8056167ffcc.zip
gdb-270135645b50a2fb8a4dac216584e8056167ffcc.tar.gz
gdb-270135645b50a2fb8a4dac216584e8056167ffcc.tar.bz2
gdb: rename async_init_signals to gdb_init_signals
The async_init_signals has, for some time, dealt with async and sync signals, so removing the async prefix makes sense I think. Additionally, as pointed out by Pedro: ..... The comments relating to SIGTRAP and SIGQUIT within this function are out of date. The comments for SIGTRAP talk about the signal disposition (SIG_IGN) being passed to the inferior, meaning the signal disposition being inherited by GDB's fork children. However, we now call restore_original_signals_state prior to forking, so the comment on SIGTRAP is redundant. The comments for SIGQUIT are similarly out of date, further, the comment on SIGQUIT talks about problems with BSD4.3 and vfork, however, we have not supported BSD4.3 for several years now. Given the above, it seems that changing the disposition of SIGTRAP is no longer needed, so I've deleted the signal() call for SIGTRAP. Finally, the header comment on the function now called gdb_init_signals was getting quite out of date, so I've updated it to (hopefully) better reflect reality. There should be no user visible change after this commit.
-rw-r--r--gdb/event-top.c41
-rw-r--r--gdb/event-top.h2
-rw-r--r--gdb/top.c2
3 files changed, 16 insertions, 29 deletions
diff --git a/gdb/event-top.c b/gdb/event-top.c
index 2d3bfa6..972b540 100644
--- a/gdb/event-top.c
+++ b/gdb/event-top.c
@@ -899,20 +899,21 @@ handle_sigsegv (int sig)
handler. */
static struct serial_event *quit_serial_event;
-/* Initialization of signal handlers and tokens. There is a function
- handle_sig* for each of the signals GDB cares about. Specifically:
- SIGINT, SIGQUIT, SIGTSTP, SIGHUP, SIGWINCH. These
- functions are the actual signal handlers associated to the signals
- via calls to signal(). The only job for these functions is to
- enqueue the appropriate event/procedure with the event loop. Such
- procedures are the old signal handlers. The event loop will take
- care of invoking the queued procedures to perform the usual tasks
- associated with the reception of the signal. */
-/* NOTE: 1999-04-30 This is the asynchronous version of init_signals.
- init_signals will become obsolete as we move to have to event loop
- as the default for gdb. */
+/* Initialization of signal handlers and tokens. There are a number of
+ different strategies for handling different signals here.
+
+ For SIGINT, SIGTERM, SIGQUIT, SIGHUP, SIGTSTP, there is a function
+ handle_sig* for each of these signals. These functions are the actual
+ signal handlers associated to the signals via calls to signal(). The
+ only job for these functions is to enqueue the appropriate
+ event/procedure with the event loop. The event loop will take care of
+ invoking the queued procedures to perform the usual tasks associated
+ with the reception of the signal.
+
+ For SIGSEGV the handle_sig* function does all the work for handling this
+ signal. */
void
-async_init_signals (void)
+gdb_init_signals (void)
{
initialize_async_signal_handlers ();
@@ -926,21 +927,7 @@ async_init_signals (void)
= create_async_signal_handler (async_sigterm_handler, NULL, "sigterm");
signal (SIGTERM, handle_sigterm);
- /* If SIGTRAP was set to SIG_IGN, then the SIG_IGN will get passed
- to the inferior and breakpoints will be ignored. */
-#ifdef SIGTRAP
- signal (SIGTRAP, SIG_DFL);
-#endif
-
#ifdef SIGQUIT
- /* If we initialize SIGQUIT to SIG_IGN, then the SIG_IGN will get
- passed to the inferior, which we don't want. It would be
- possible to do a "signal (SIGQUIT, SIG_DFL)" after we fork, but
- on BSD4.3 systems using vfork, that can affect the
- GDB process as well as the inferior (the signal handling tables
- might be in memory, shared between the two). Since we establish
- a handler for SIGQUIT, when we call exec it will set the signal
- to SIG_DFL for us. */
sigquit_token =
create_async_signal_handler (async_do_nothing, NULL, "sigquit");
signal (SIGQUIT, handle_sigquit);
diff --git a/gdb/event-top.h b/gdb/event-top.h
index b036f13..4947dd2 100644
--- a/gdb/event-top.h
+++ b/gdb/event-top.h
@@ -32,7 +32,7 @@ struct cmd_list_element;
extern void display_gdb_prompt (const char *new_prompt);
extern void gdb_setup_readline (int);
extern void gdb_disable_readline (void);
-extern void async_init_signals (void);
+extern void gdb_init_signals (void);
extern void change_line_handler (int);
extern void command_line_handler (gdb::unique_xmalloc_ptr<char> &&rl);
diff --git a/gdb/top.c b/gdb/top.c
index 6e0f43d..0c49f4f 100644
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -2403,7 +2403,7 @@ gdb_init ()
to alter it. */
set_initial_gdb_ttystate ();
- async_init_signals ();
+ gdb_init_signals ();
/* We need a default language for parsing expressions, so simple
things like "set width 0" won't fail if no language is explicitly