This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: DOS/Windows-specific code: maint.c
On May 8, 2:48pm, Eli Zaretskii wrote:
> * maint.c:
>
> #ifndef _WIN32
> /* ARGSUSED */
> static void
> maintenance_dump_me (char *args, int from_tty)
> {
> if (query ("Should GDB dump core? "))
> {
> #ifdef __DJGPP__
> /* SIGQUIT by default is ignored, so use SIGABRT instead. */
> signal (SIGABRT, SIG_DFL);
> kill (getpid (), SIGABRT);
> #else
> signal (SIGQUIT, SIG_DFL);
> kill (getpid (), SIGQUIT);
> #endif
> }
> }
> #endif
>
> Should we define SIGNAL_TO_DUMP_CORE (default to SIGQUIT)? It could
> then be set to 0 on Windows, and maintenance_dump_me could print a
> suitable message ("not supported on this platform" or some such) if
> its value is zero.
>
> Btw, why isn't SIGABRT used on Unix here?
I don't know. SIGABRT seems like a better (more portable) choice.
With that in mind, why not do the following:
/* ARGSUSED */
static void
maintenance_dump_me (char *args, int from_tty)
{
if (query ("Should GDB dump core? "))
{
#ifdef SIGABRT
signal (SIGABRT, SIG_DFL);
kill (getpid (), SIGABRT);
#else
error ("Not supported on this platform.");
#endif
}
}
Note that the _WIN32 ifdef has been removed so that
maintenance_dump_me() will always be defined.
If, for some reason, the above won't work, I think your
SIGNAL_TO_DUMP_CORE suggestion is okay too.
Kevin