Move start_event_loop out of event-loop.c
A subsequent patch is going to move event-loop.c to gdbsupport. In a review of an earlier version of this series, Pedro pointed out that the resulting code would be cleaner if start_event_loop were not shared -- because gdb and gdbserver have some different needs here -- and so this moves start_event_loop to main.c. Because the only caller is there, it is also now static. gdb/ChangeLog 2020-04-13 Tom Tromey <tom@tromey.com> * event-loop.h (start_event_loop): Don't declare. * event-loop.c (start_event_loop): Move... * main.c (start_event_loop): ...here. Now static.
This commit is contained in:
parent
b7f999aee3
commit
58cf28e860
@ -1,3 +1,9 @@
|
||||
2020-04-13 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* event-loop.h (start_event_loop): Don't declare.
|
||||
* event-loop.c (start_event_loop): Move...
|
||||
* main.c (start_event_loop): ...here. Now static.
|
||||
|
||||
2020-04-13 Sergio Durigan Junior <sergiodj@sergiodj.net>
|
||||
|
||||
* MAINTAINERS: Update my email address.
|
||||
|
@ -318,60 +318,6 @@ gdb_do_one_event (void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Start up the event loop. This is the entry point to the event loop
|
||||
from the command loop. */
|
||||
|
||||
void
|
||||
start_event_loop (void)
|
||||
{
|
||||
/* Loop until there is nothing to do. This is the entry point to
|
||||
the event loop engine. gdb_do_one_event will process one event
|
||||
for each invocation. It blocks waiting for an event and then
|
||||
processes it. */
|
||||
while (1)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
try
|
||||
{
|
||||
result = gdb_do_one_event ();
|
||||
}
|
||||
catch (const gdb_exception &ex)
|
||||
{
|
||||
exception_print (gdb_stderr, ex);
|
||||
|
||||
/* If any exception escaped to here, we better enable
|
||||
stdin. Otherwise, any command that calls async_disable_stdin,
|
||||
and then throws, will leave stdin inoperable. */
|
||||
SWITCH_THRU_ALL_UIS ()
|
||||
{
|
||||
async_enable_stdin ();
|
||||
}
|
||||
/* If we long-jumped out of do_one_event, we probably didn't
|
||||
get around to resetting the prompt, which leaves readline
|
||||
in a messed-up state. Reset it here. */
|
||||
current_ui->prompt_state = PROMPT_NEEDED;
|
||||
gdb::observers::command_error.notify ();
|
||||
/* This call looks bizarre, but it is required. If the user
|
||||
entered a command that caused an error,
|
||||
after_char_processing_hook won't be called from
|
||||
rl_callback_read_char_wrapper. Using a cleanup there
|
||||
won't work, since we want this function to be called
|
||||
after a new prompt is printed. */
|
||||
if (after_char_processing_hook)
|
||||
(*after_char_processing_hook) ();
|
||||
/* Maybe better to set a flag to be checked somewhere as to
|
||||
whether display the prompt or not. */
|
||||
}
|
||||
|
||||
if (result < 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* We are done with the event loop. There are no more event sources
|
||||
to listen to. So we exit GDB. */
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* Wrapper function for create_file_handler, so that the caller
|
||||
|
@ -80,7 +80,6 @@ typedef void (timer_handler_func) (gdb_client_data);
|
||||
|
||||
/* Exported functions from event-loop.c */
|
||||
|
||||
extern void start_event_loop (void);
|
||||
extern int gdb_do_one_event (void);
|
||||
extern void delete_file_handler (int fd);
|
||||
extern void add_file_handler (int fd, handler_func *proc,
|
||||
|
56
gdb/main.c
56
gdb/main.c
@ -53,6 +53,7 @@
|
||||
#include "gdbtk/generic/gdbtk.h"
|
||||
#endif
|
||||
#include "gdbsupport/alt-stack.h"
|
||||
#include "observable.h"
|
||||
|
||||
/* The selected interpreter. This will be used as a set command
|
||||
variable, so it should always be malloc'ed - since
|
||||
@ -336,6 +337,61 @@ get_init_files (std::vector<std::string> *system_gdbinit,
|
||||
*local_gdbinit = localinit;
|
||||
}
|
||||
|
||||
/* Start up the event loop. This is the entry point to the event loop
|
||||
from the command loop. */
|
||||
|
||||
static void
|
||||
start_event_loop ()
|
||||
{
|
||||
/* Loop until there is nothing to do. This is the entry point to
|
||||
the event loop engine. gdb_do_one_event will process one event
|
||||
for each invocation. It blocks waiting for an event and then
|
||||
processes it. */
|
||||
while (1)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
try
|
||||
{
|
||||
result = gdb_do_one_event ();
|
||||
}
|
||||
catch (const gdb_exception &ex)
|
||||
{
|
||||
exception_print (gdb_stderr, ex);
|
||||
|
||||
/* If any exception escaped to here, we better enable
|
||||
stdin. Otherwise, any command that calls async_disable_stdin,
|
||||
and then throws, will leave stdin inoperable. */
|
||||
SWITCH_THRU_ALL_UIS ()
|
||||
{
|
||||
async_enable_stdin ();
|
||||
}
|
||||
/* If we long-jumped out of do_one_event, we probably didn't
|
||||
get around to resetting the prompt, which leaves readline
|
||||
in a messed-up state. Reset it here. */
|
||||
current_ui->prompt_state = PROMPT_NEEDED;
|
||||
gdb::observers::command_error.notify ();
|
||||
/* This call looks bizarre, but it is required. If the user
|
||||
entered a command that caused an error,
|
||||
after_char_processing_hook won't be called from
|
||||
rl_callback_read_char_wrapper. Using a cleanup there
|
||||
won't work, since we want this function to be called
|
||||
after a new prompt is printed. */
|
||||
if (after_char_processing_hook)
|
||||
(*after_char_processing_hook) ();
|
||||
/* Maybe better to set a flag to be checked somewhere as to
|
||||
whether display the prompt or not. */
|
||||
}
|
||||
|
||||
if (result < 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* We are done with the event loop. There are no more event sources
|
||||
to listen to. So we exit GDB. */
|
||||
return;
|
||||
}
|
||||
|
||||
/* Call command_loop. */
|
||||
|
||||
/* Prevent inlining this function for the benefit of GDB's selftests
|
||||
|
Loading…
x
Reference in New Issue
Block a user