aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi/mi-main.c
diff options
context:
space:
mode:
authorPedro Alves <palves@redhat.com>2016-04-12 16:49:32 +0100
committerPedro Alves <palves@redhat.com>2016-04-12 17:00:30 +0100
commit5fe966540d6b748f825774868463003700f0c878 (patch)
treebb71e09607eb967ec2e21aed0f7e1a6e722d2eb9 /gdb/mi/mi-main.c
parent651ce16aa7c2bd5e9f634e91e73790dc3e01a5c0 (diff)
downloadgdb-5fe966540d6b748f825774868463003700f0c878.zip
gdb-5fe966540d6b748f825774868463003700f0c878.tar.gz
gdb-5fe966540d6b748f825774868463003700f0c878.tar.bz2
Use target_terminal_ours_for_output in MI
The MI code only does output, so leave raw/cooked mode alone, as well as the SIGINT handler. Restore terminal settings after output, while at it. Also, a couple events missed calling target_terminal_ours before output, even. gdb/ChangeLog: 2016-04-12 Pedro Alves <palves@redhat.com> * mi/mi-interp.c (mi_new_thread): Put target_terminal_ours_for_output in effect while outputting. (mi_thread_exit): Use target_terminal_ours_for_output instead of target_terminal_ours. (mi_record_changed, mi_inferior_added, mi_inferior_appeared) (mi_inferior_exit, mi_inferior_removed, mi_traceframe_changed) (mi_tsv_created, mi_tsv_deleted, mi_tsv_modified) (mi_breakpoint_created, mi_breakpoint_deleted) (mi_breakpoint_modified, mi_solib_loaded, mi_solib_unloaded) (mi_command_param_changed, mi_memory_changed) (report_initial_inferior): Use target_terminal_ours_for_output instead of target_terminal_ours. Restore terminal settings. * mi/mi-main.c (mi_execute_command): Use target_terminal_ours_for_output instead of target_terminal_ours. Restore terminal settings.
Diffstat (limited to 'gdb/mi/mi-main.c')
-rw-r--r--gdb/mi/mi-main.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c
index e25eedf..7cb7bf5 100644
--- a/gdb/mi/mi-main.c
+++ b/gdb/mi/mi-main.c
@@ -2171,12 +2171,17 @@ mi_execute_command (const char *cmd, int from_tty)
if (report_change)
{
struct thread_info *ti = inferior_thread ();
+ struct cleanup *old_chain;
+
+ old_chain = make_cleanup_restore_target_terminal ();
+ target_terminal_ours_for_output ();
- target_terminal_ours ();
fprintf_unfiltered (mi->event_channel,
"thread-selected,id=\"%d\"",
ti->global_num);
gdb_flush (mi->event_channel);
+
+ do_cleanups (old_chain);
}
}