* defs.h (do_exec_error_cleanups, discard_exec_error_cleanups)
(make_exec_error_cleanup): Remove declarations. * utils.c (exec_error_cleanup_chain): Remove. (do_exec_error_cleanups, discard_exec_error_cleanups) (make_exec_error_cleanup): Remove. * event-loop.c (start_event_loop): Adjust call to async_enable_stdin. * event-top.c (async_enable_stdin): Remove the paramater dummy. (async_disable_stdin): Don't register async_enable_stdin via cleanup. * inf-loop.c (inferior_event_handler): Don't call do_exec_error_cleanups. Call async_enable_stdin instead. * event-loop.c (start_event_loop): Adjust call to async_enable_stdin. * tui/tui-interp.c (tui_command_loop): Adjust call to async_enable_stdin.
This commit is contained in:
parent
32c1e744c1
commit
712af3be2e
8 changed files with 29 additions and 40 deletions
|
@ -1,3 +1,22 @@
|
||||||
|
2008-03-14 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
|
* defs.h (do_exec_error_cleanups, discard_exec_error_cleanups)
|
||||||
|
(make_exec_error_cleanup): Remove declarations.
|
||||||
|
* utils.c (exec_error_cleanup_chain): Remove.
|
||||||
|
(do_exec_error_cleanups, discard_exec_error_cleanups)
|
||||||
|
(make_exec_error_cleanup): Remove.
|
||||||
|
* event-loop.c (start_event_loop): Adjust call to
|
||||||
|
async_enable_stdin.
|
||||||
|
* event-top.c (async_enable_stdin): Remove the paramater dummy.
|
||||||
|
(async_disable_stdin): Don't register async_enable_stdin via
|
||||||
|
cleanup.
|
||||||
|
* inf-loop.c (inferior_event_handler): Don't
|
||||||
|
call do_exec_error_cleanups. Call async_enable_stdin instead.
|
||||||
|
* event-loop.c (start_event_loop): Adjust call to
|
||||||
|
async_enable_stdin.
|
||||||
|
* tui/tui-interp.c (tui_command_loop): Adjust call to
|
||||||
|
async_enable_stdin.
|
||||||
|
|
||||||
2008-03-14 Vladimir Prus <vladimir@codesourcery.com>
|
2008-03-14 Vladimir Prus <vladimir@codesourcery.com>
|
||||||
|
|
||||||
Async mode fixes.
|
Async mode fixes.
|
||||||
|
|
|
@ -319,11 +319,9 @@ extern char *safe_strerror (int);
|
||||||
extern void do_cleanups (struct cleanup *);
|
extern void do_cleanups (struct cleanup *);
|
||||||
extern void do_final_cleanups (struct cleanup *);
|
extern void do_final_cleanups (struct cleanup *);
|
||||||
extern void do_exec_cleanups (struct cleanup *);
|
extern void do_exec_cleanups (struct cleanup *);
|
||||||
extern void do_exec_error_cleanups (struct cleanup *);
|
|
||||||
|
|
||||||
extern void discard_cleanups (struct cleanup *);
|
extern void discard_cleanups (struct cleanup *);
|
||||||
extern void discard_final_cleanups (struct cleanup *);
|
extern void discard_final_cleanups (struct cleanup *);
|
||||||
extern void discard_exec_error_cleanups (struct cleanup *);
|
|
||||||
extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
|
extern void discard_my_cleanups (struct cleanup **, struct cleanup *);
|
||||||
|
|
||||||
/* NOTE: cagney/2000-03-04: This typedef is strictly for the
|
/* NOTE: cagney/2000-03-04: This typedef is strictly for the
|
||||||
|
@ -354,7 +352,6 @@ extern struct cleanup *make_my_cleanup (struct cleanup **,
|
||||||
make_cleanup_ftype *, void *);
|
make_cleanup_ftype *, void *);
|
||||||
|
|
||||||
extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
|
extern struct cleanup *make_exec_cleanup (make_cleanup_ftype *, void *);
|
||||||
extern struct cleanup *make_exec_error_cleanup (make_cleanup_ftype *, void *);
|
|
||||||
|
|
||||||
extern struct cleanup *save_cleanups (void);
|
extern struct cleanup *save_cleanups (void);
|
||||||
extern struct cleanup *save_final_cleanups (void);
|
extern struct cleanup *save_final_cleanups (void);
|
||||||
|
|
|
@ -414,7 +414,7 @@ start_event_loop (void)
|
||||||
/* If any exception escaped to here, we better enable
|
/* If any exception escaped to here, we better enable
|
||||||
stdin. Otherwise, any command that calls async_disable_stdin,
|
stdin. Otherwise, any command that calls async_disable_stdin,
|
||||||
and then throws, will leave stdin inoperable. */
|
and then throws, will leave stdin inoperable. */
|
||||||
async_enable_stdin ((void *) 0);
|
async_enable_stdin ();
|
||||||
/* FIXME: this should really be a call to a hook that is
|
/* FIXME: this should really be a call to a hook that is
|
||||||
interface specific, because interfaces can display the
|
interface specific, because interfaces can display the
|
||||||
prompt in their own way. */
|
prompt in their own way. */
|
||||||
|
|
|
@ -435,7 +435,7 @@ stdin_event_handler (int error, gdb_client_data client_data)
|
||||||
the exec operation. */
|
the exec operation. */
|
||||||
|
|
||||||
void
|
void
|
||||||
async_enable_stdin (void *dummy)
|
async_enable_stdin (void)
|
||||||
{
|
{
|
||||||
if (sync_execution)
|
if (sync_execution)
|
||||||
{
|
{
|
||||||
|
@ -463,11 +463,6 @@ async_disable_stdin (void)
|
||||||
sync/async mode) is refined, the duplicate calls can be
|
sync/async mode) is refined, the duplicate calls can be
|
||||||
eliminated (Here or in infcmd.c/infrun.c). */
|
eliminated (Here or in infcmd.c/infrun.c). */
|
||||||
target_terminal_inferior ();
|
target_terminal_inferior ();
|
||||||
/* Add the reinstate of stdin to the list of cleanups to be done
|
|
||||||
in case the target errors out and dies. These cleanups are also
|
|
||||||
done in case of normal successful termination of the execution
|
|
||||||
command, by complete_execution(). */
|
|
||||||
make_exec_error_cleanup (async_enable_stdin, NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -103,7 +103,7 @@ extern void mark_async_signal_handler_wrapper (void *token);
|
||||||
extern void async_request_quit (void *arg);
|
extern void async_request_quit (void *arg);
|
||||||
extern void stdin_event_handler (int error, void *client_data);
|
extern void stdin_event_handler (int error, void *client_data);
|
||||||
extern void async_disable_stdin (void);
|
extern void async_disable_stdin (void);
|
||||||
extern void async_enable_stdin (void *dummy);
|
extern void async_enable_stdin (void);
|
||||||
|
|
||||||
/* Exported variables from event-top.c.
|
/* Exported variables from event-top.c.
|
||||||
FIXME: these should really go into top.h. */
|
FIXME: these should really go into top.h. */
|
||||||
|
|
|
@ -51,7 +51,7 @@ inferior_event_handler (enum inferior_event_type event_type,
|
||||||
target_async (NULL, 0);
|
target_async (NULL, 0);
|
||||||
pop_target ();
|
pop_target ();
|
||||||
discard_all_continuations ();
|
discard_all_continuations ();
|
||||||
do_exec_error_cleanups (ALL_CLEANUPS);
|
async_enable_stdin ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case INF_REG_EVENT:
|
case INF_REG_EVENT:
|
||||||
|
@ -65,7 +65,7 @@ inferior_event_handler (enum inferior_event_type event_type,
|
||||||
target_async (NULL, 0);
|
target_async (NULL, 0);
|
||||||
pop_target ();
|
pop_target ();
|
||||||
discard_all_continuations ();
|
discard_all_continuations ();
|
||||||
do_exec_error_cleanups (ALL_CLEANUPS);
|
async_enable_stdin ();
|
||||||
display_gdb_prompt (0);
|
display_gdb_prompt (0);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -85,13 +85,11 @@ inferior_event_handler (enum inferior_event_type event_type,
|
||||||
if (target_has_execution)
|
if (target_has_execution)
|
||||||
target_async (NULL, 0);
|
target_async (NULL, 0);
|
||||||
|
|
||||||
/* Calls to do_exec_error_cleanup below will call async_enable_stdin,
|
/* The call to async_enable_stdin below resets 'sync_execution'.
|
||||||
and that resets 'sync_execution'. However, if we were running
|
However, if sync_execution is 1 now, we also need to show the
|
||||||
in sync execution mode, we also need to display the prompt. */
|
prompt below, so save the current value. */
|
||||||
was_sync = sync_execution;
|
was_sync = sync_execution;
|
||||||
|
async_enable_stdin ();
|
||||||
if (was_sync)
|
|
||||||
do_exec_error_cleanups (ALL_CLEANUPS);
|
|
||||||
|
|
||||||
do_all_continuations ();
|
do_all_continuations ();
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ tui_command_loop (void *data)
|
||||||
/* If any exception escaped to here, we better enable
|
/* If any exception escaped to here, we better enable
|
||||||
stdin. Otherwise, any command that calls async_disable_stdin,
|
stdin. Otherwise, any command that calls async_disable_stdin,
|
||||||
and then throws, will leave stdin inoperable. */
|
and then throws, will leave stdin inoperable. */
|
||||||
async_enable_stdin ((void *) 0);
|
async_enable_stdin ();
|
||||||
/* FIXME: this should really be a call to a hook that is
|
/* FIXME: this should really be a call to a hook that is
|
||||||
interface specific, because interfaces can display the
|
interface specific, because interfaces can display the
|
||||||
prompt in their own way. */
|
prompt in their own way. */
|
||||||
|
|
20
gdb/utils.c
20
gdb/utils.c
|
@ -105,8 +105,6 @@ static int debug_timestamp = 0;
|
||||||
static struct cleanup *cleanup_chain; /* cleaned up after a failed command */
|
static struct cleanup *cleanup_chain; /* cleaned up after a failed command */
|
||||||
static struct cleanup *final_cleanup_chain; /* cleaned up when gdb exits */
|
static struct cleanup *final_cleanup_chain; /* cleaned up when gdb exits */
|
||||||
static struct cleanup *exec_cleanup_chain; /* cleaned up on each execution command */
|
static struct cleanup *exec_cleanup_chain; /* cleaned up on each execution command */
|
||||||
/* cleaned up on each error from within an execution command */
|
|
||||||
static struct cleanup *exec_error_cleanup_chain;
|
|
||||||
|
|
||||||
/* Pointer to what is left to do for an execution command after the
|
/* Pointer to what is left to do for an execution command after the
|
||||||
target stops. Used only in asynchronous mode, by targets that
|
target stops. Used only in asynchronous mode, by targets that
|
||||||
|
@ -222,12 +220,6 @@ make_exec_cleanup (make_cleanup_ftype *function, void *arg)
|
||||||
return make_my_cleanup (&exec_cleanup_chain, function, arg);
|
return make_my_cleanup (&exec_cleanup_chain, function, arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct cleanup *
|
|
||||||
make_exec_error_cleanup (make_cleanup_ftype *function, void *arg)
|
|
||||||
{
|
|
||||||
return make_my_cleanup (&exec_error_cleanup_chain, function, arg);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
do_freeargv (void *arg)
|
do_freeargv (void *arg)
|
||||||
{
|
{
|
||||||
|
@ -330,12 +322,6 @@ do_exec_cleanups (struct cleanup *old_chain)
|
||||||
do_my_cleanups (&exec_cleanup_chain, old_chain);
|
do_my_cleanups (&exec_cleanup_chain, old_chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
do_exec_error_cleanups (struct cleanup *old_chain)
|
|
||||||
{
|
|
||||||
do_my_cleanups (&exec_error_cleanup_chain, old_chain);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
do_my_cleanups (struct cleanup **pmy_chain,
|
do_my_cleanups (struct cleanup **pmy_chain,
|
||||||
struct cleanup *old_chain)
|
struct cleanup *old_chain)
|
||||||
|
@ -364,12 +350,6 @@ discard_final_cleanups (struct cleanup *old_chain)
|
||||||
discard_my_cleanups (&final_cleanup_chain, old_chain);
|
discard_my_cleanups (&final_cleanup_chain, old_chain);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
discard_exec_error_cleanups (struct cleanup *old_chain)
|
|
||||||
{
|
|
||||||
discard_my_cleanups (&exec_error_cleanup_chain, old_chain);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
discard_my_cleanups (struct cleanup **pmy_chain,
|
discard_my_cleanups (struct cleanup **pmy_chain,
|
||||||
struct cleanup *old_chain)
|
struct cleanup *old_chain)
|
||||||
|
|
Loading…
Add table
Reference in a new issue