void initialize_async_signal_handlers (void) { async_signal_handlers_serial_event = make_serial_event (); add_file_handler (serial_event_fd (async_signal_handlers_serial_event), async_signals_handler, NULL); }
/* 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. */ void async_init_signals (void) { initialize_async_signal_handlers (); quit_serial_event = make_serial_event (); signal (SIGINT, handle_sigint); sigint_token = create_async_signal_handler (async_request_quit, NULL); signal (SIGTERM, handle_sigterm); async_sigterm_token = create_async_signal_handler (async_sigterm_handler, NULL); /* 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. */ signal (SIGQUIT, handle_sigquit); sigquit_token = create_async_signal_handler (async_do_nothing, NULL); #endif #ifdef SIGHUP if (signal (SIGHUP, handle_sighup) != SIG_IGN) sighup_token = create_async_signal_handler (async_disconnect, NULL); else sighup_token = create_async_signal_handler (async_do_nothing, NULL); #endif signal (SIGFPE, handle_sigfpe); sigfpe_token = create_async_signal_handler (async_float_handler, NULL); #ifdef SIGTSTP sigtstp_token = create_async_signal_handler (async_sigtstp_handler, NULL); #endif }