From: Pedro Alves Date: Tue, 21 Jun 2016 00:11:46 +0000 (+0100) Subject: Always run async signal handlers in the main UI X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7c36c34e4c5c9438f17373a72773d741a17dc7b3;p=binutils-gdb.git Always run async signal handlers in the main UI Async signal handlers have no connection to whichever was the current UI, and thus always run on the main one. gdb/ChangeLog: 2016-06-21 Pedro Alves * event-loop.c: Include top.h. (invoke_async_signal_handlers): Switch to the main UI. * event-top.c (main_ui_): Update comment. (main_ui): New global. * top.h (main_ui): Declare. --- diff --git a/gdb/event-loop.c b/gdb/event-loop.c index 60ef2a5d96e..fe283050507 100644 --- a/gdb/event-loop.c +++ b/gdb/event-loop.c @@ -35,6 +35,7 @@ #include "gdb_sys_time.h" #include "gdb_select.h" #include "observer.h" +#include "top.h" /* Tell create_file_handler what events we are interested in. This is used by the select version of the event loop. */ @@ -967,6 +968,9 @@ invoke_async_signal_handlers (void) break; any_ready = 1; async_handler_ptr->ready = 0; + /* Async signal handlers have no connection to whichever was the + current UI, and thus always run on the main one. */ + current_ui = main_ui; (*async_handler_ptr->proc) (async_handler_ptr->client_data); } diff --git a/gdb/event-top.c b/gdb/event-top.c index c6e3b7ee367..63f6896c077 100644 --- a/gdb/event-top.c +++ b/gdb/event-top.c @@ -437,11 +437,10 @@ top_level_prompt (void) return xstrdup (prompt); } -/* The main UI. This is the UI that is bound to stdin/stdout/stderr. - It always exists and is created automatically when GDB starts - up. */ +/* The main UI. */ static struct ui main_ui_; +struct ui *main_ui = &main_ui_; struct ui *current_ui = &main_ui_; struct ui *ui_list = &main_ui_; diff --git a/gdb/top.h b/gdb/top.h index 80fcb40b7cf..a76abaf2b3c 100644 --- a/gdb/top.h +++ b/gdb/top.h @@ -86,6 +86,11 @@ struct ui struct ui_file *m_gdb_stdlog; }; +/* The main UI. This is the UI that is bound to stdin/stdout/stderr. + It always exists and is created automatically when GDB starts + up. */ +extern struct ui *main_ui; + /* The current UI. */ extern struct ui *current_ui;