diff options
author | Pedro Alves <palves@redhat.com> | 2011-09-02 16:56:30 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2011-09-02 16:56:30 +0000 |
commit | b4a14fd09b84468e7d28a2889d99a27008781fb1 (patch) | |
tree | 4ae20f93ec8f3fd4518dc2f5ce66e788d981a511 /gdb/cli/cli-script.c | |
parent | c709acd150761fffe3536bf9e6a0b32870f41ca3 (diff) | |
download | gdb-b4a14fd09b84468e7d28a2889d99a27008781fb1.zip gdb-b4a14fd09b84468e7d28a2889d99a27008781fb1.tar.gz gdb-b4a14fd09b84468e7d28a2889d99a27008781fb1.tar.bz2 |
2011-09-02 Pedro Alves <pedro@codesourcery.com>
* top.c: Include interps.h.
(execute_command): If the target can async, but the interpreter is
in sync mode, synchronously wait for the command to finish before
returning.
(execute_command_to_string): Force the interpreter to sync mode.
* infrun.c: Include interps.h.
(fetch_inferior_event): Don't restore the prompt yet if the
interpreter is in sync mode.
* interps.c (interpreter_async): New global.
* interps.h (interpreter_async): Declare.
* inf-loop.c: Include interps.h.
(inferior_event_handler): Don't print the language change or run
breakpoint commands yet if the interpreter in is sync mode.
* main.c (captured_command_loop): Flip the interpreter to async
mode.
* cli/cli-script.c: Include interps.h.
(execute_user_command, while_command, if_command): Force the
interpreter to sync mode.
* python/python.c: Include interps.h.
(python_command, execute_gdb_command): Force the interpreter to
sync mode.
Diffstat (limited to 'gdb/cli/cli-script.c')
-rw-r--r-- | gdb/cli/cli-script.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c index 66fa220..790ce81 100644 --- a/gdb/cli/cli-script.c +++ b/gdb/cli/cli-script.c @@ -35,6 +35,7 @@ #include "gdb_assert.h" #include "python/python.h" +#include "interps.h" /* Prototypes for local functions. */ @@ -338,6 +339,9 @@ execute_user_command (struct cmd_list_element *c, char *args) not confused with Insight. */ in_user_command = 1; + make_cleanup_restore_integer (&interpreter_async); + interpreter_async = 0; + command_nest_depth++; while (cmdlines) { @@ -598,6 +602,7 @@ void while_command (char *arg, int from_tty) { struct command_line *command = NULL; + struct cleanup *old_chain; control_level = 1; command = get_command_line (while_control, arg); @@ -605,8 +610,13 @@ while_command (char *arg, int from_tty) if (command == NULL) return; + old_chain = make_cleanup_restore_integer (&interpreter_async); + interpreter_async = 0; + execute_control_command_untraced (command); free_command_lines (&command); + + do_cleanups (old_chain); } /* "if" command support. Execute either the true or false arm depending @@ -616,6 +626,7 @@ void if_command (char *arg, int from_tty) { struct command_line *command = NULL; + struct cleanup *old_chain; control_level = 1; command = get_command_line (if_control, arg); @@ -623,8 +634,13 @@ if_command (char *arg, int from_tty) if (command == NULL) return; + old_chain = make_cleanup_restore_integer (&interpreter_async); + interpreter_async = 0; + execute_control_command_untraced (command); free_command_lines (&command); + + do_cleanups (old_chain); } /* Cleanup */ |