* event-top.c (async_disconnect): If an exception is thrown from

quit_cover, call pop_all_targets.  Use TRY_CATCH instead of
	catch_errors.
	* top.c (quit_cover): Return void and take no arguments.
	* top.h (quit_cover): Update prototype.
This commit is contained in:
Joseph Myers 2011-09-21 15:21:28 +00:00
parent 09b4ad9fcb
commit b2cd6b2948
4 changed files with 30 additions and 7 deletions

View File

@ -1,3 +1,11 @@
2011-09-21 Joseph Myers <joseph@codesourcery.com>
* event-top.c (async_disconnect): If an exception is thrown from
quit_cover, call pop_all_targets. Use TRY_CATCH instead of
catch_errors.
* top.c (quit_cover): Return void and take no arguments.
* top.h (quit_cover): Update prototype.
2011-09-20 Joseph Myers <joseph@codesourcery.com>
* mi/mi-main.c (mi_load_progress): Restore saved_uiout value to

View File

@ -870,9 +870,25 @@ handle_sighup (int sig)
static void
async_disconnect (gdb_client_data arg)
{
catch_errors (quit_cover, NULL,
"Could not kill the program being debugged",
RETURN_MASK_ALL);
volatile struct gdb_exception exception;
TRY_CATCH (exception, RETURN_MASK_ALL)
{
quit_cover ();
}
if (exception.reason < 0)
{
fputs_filtered ("Could not kill the program being debugged",
gdb_stderr);
exception_print (gdb_stderr, exception);
}
TRY_CATCH (exception, RETURN_MASK_ALL)
{
pop_all_targets (1);
}
signal (SIGHUP, SIG_DFL); /*FIXME: ??????????? */
raise (SIGHUP);
}

View File

@ -288,14 +288,13 @@ void (*deprecated_context_hook) (int id);
/* NOTE 1999-04-29: This function will be static again, once we modify
gdb to use the event loop as the default command loop and we merge
event-top.c into this file, top.c. */
/* static */ int
quit_cover (void *s)
/* static */ void
quit_cover (void)
{
caution = 0; /* Throw caution to the wind -- we're exiting.
This prevents asking the user dumb
questions. */
quit_command ((char *) 0, 0);
return 0;
}
#endif /* defined SIGHUP */

View File

@ -41,7 +41,7 @@ extern void command_loop (void);
extern int quit_confirm (void);
extern void quit_force (char *, int);
extern void quit_command (char *, int);
extern int quit_cover (void *);
extern void quit_cover (void);
extern void execute_command (char *, int);
/* Prepare for execution of a command.