This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: PATCH: Allow for systems that do not define SIGQUIT/SIGPIPE
Daniel Jacobowitz wrote:
Actually, GCC doesn't warn because handle_sigquit references itself. :-)
I'll make that change; OK, assuming it builds?
Yes, is ok.
Checked in; here was the final patch.
--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304
2005-03-16 Mark Mitchell <mark@codesourcery.com>
* event-top.c (handle_sigquit): Do not define for systems without
SIGQUIT.
(sigquit_token): Likewise.
(async_init_signals): Allow for systems that do not
define SIGQUIT.
* ser-tcp.c (net_open): Allow for systems that do not have SIGPIPE.
Index: event-top.c
===================================================================
RCS file: /cvs/src/src/gdb/event-top.c,v
retrieving revision 1.39
retrieving revision 1.40
diff -c -5 -p -r1.39 -r1.40
*** event-top.c 12 Feb 2005 00:39:19 -0000 1.39
--- event-top.c 16 Mar 2005 17:05:31 -0000 1.40
*************** static void async_do_nothing (gdb_client
*** 53,63 ****
--- 53,65 ----
static void async_disconnect (gdb_client_data arg);
static void async_stop_sig (gdb_client_data arg);
static void async_float_handler (gdb_client_data arg);
/* Signal handlers. */
+ #ifdef SIGQUIT
static void handle_sigquit (int sig);
+ #endif
static void handle_sighup (int sig);
static void handle_sigfpe (int sig);
#if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
static void handle_sigwinch (int sig);
#endif
*************** struct prompts the_prompts;
*** 131,141 ****
--- 133,145 ----
invoke_async_signal_handler. */
void *sigint_token;
#ifdef SIGHUP
void *sighup_token;
#endif
+ #ifdef SIGQUIT
void *sigquit_token;
+ #endif
void *sigfpe_token;
#if defined(SIGWINCH) && defined(SIGWINCH_HANDLER)
void *sigwinch_token;
#endif
#ifdef STOP_SIGNAL
*************** async_init_signals (void)
*** 893,902 ****
--- 897,907 ----
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
*************** async_init_signals (void)
*** 904,913 ****
--- 909,919 ----
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
*************** async_request_quit (gdb_client_data arg)
*** 964,981 ****
--- 970,989 ----
{
quit_flag = 1;
quit ();
}
+ #ifdef SIGQUIT
/* Tell the event loop what to do if SIGQUIT is received.
See event-signal.c. */
static void
handle_sigquit (int sig)
{
mark_async_signal_handler_wrapper (sigquit_token);
signal (sig, handle_sigquit);
}
+ #endif
/* Called by the event loop in response to a SIGQUIT. */
static void
async_do_nothing (gdb_client_data arg)
{
Index: ser-tcp.c
===================================================================
RCS file: /cvs/src/src/gdb/ser-tcp.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -c -5 -p -r1.17 -r1.18
*** ser-tcp.c 11 Feb 2005 04:06:04 -0000 1.17
--- ser-tcp.c 16 Mar 2005 17:05:31 -0000 1.18
*************** net_open (struct serial *scb, const char
*** 184,196 ****
--- 184,198 ----
tmp = 1;
setsockopt (scb->fd, IPPROTO_TCP, TCP_NODELAY,
(char *)&tmp, sizeof (tmp));
}
+ #ifdef SIGPIPE
/* If we don't do this, then GDB simply exits
when the remote side dies. */
signal (SIGPIPE, SIG_IGN);
+ #endif
return 0;
}
static void