2005-11-16 Andrew Stubbs * event-top.h (async_init_signals): Add SIGTERM handler. (handle_sigterm): New function. * event-top.h (handle_sigterm): New prototype. Index: src/gdb/event-top.c =================================================================== --- src.orig/gdb/event-top.c 2005-11-09 12:02:37.000000000 +0000 +++ src/gdb/event-top.c 2005-11-09 12:03:22.000000000 +0000 @@ -892,6 +892,7 @@ async_init_signals (void) signal (SIGINT, handle_sigint); sigint_token = create_async_signal_handler (async_request_quit, NULL); + 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. */ @@ -964,6 +965,15 @@ handle_sigint (int sig) mark_async_signal_handler_wrapper (sigint_token); } +/* Quit GDB if SIGTERM is received. + GDB would quit anyway, but this way it will clean up properly. */ +void +handle_sigterm (int sig) +{ + signal (sig, handle_sigterm); + quit_force ((char *) 0, stdin == instream); +} + /* Do the quit. All the checks have been done by the caller. */ void async_request_quit (gdb_client_data arg) Index: src/gdb/event-top.h =================================================================== --- src.orig/gdb/event-top.h 2003-04-12 18:41:25.000000000 +0100 +++ src/gdb/event-top.h 2005-11-09 12:02:44.000000000 +0000 @@ -97,6 +97,7 @@ extern void handle_stop_sig (int sig); #endif #endif extern void handle_sigint (int sig); +extern void handle_sigterm (int sig); extern void pop_prompt (void); extern void push_prompt (char *prefix, char *prompt, char *suffix); extern void gdb_readline2 (void *client_data);