From db2d40f7d0b8477ca5ad9e305b8137a085434c97 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 10 Jan 2020 20:05:47 +0000 Subject: [PATCH] Introduce switch_to_inferior_no_thread Several places want to switch context to an inferior and its pspace, while at the same time switch to "no thread selected". This commit adds a function that does that, and uses it in a few places. gdb/ChangeLog: 2020-01-10 Pedro Alves * inferior.c (switch_to_inferior_no_thread): New function, factored out from ... (inferior_command): ... here. * inferior.h (switch_to_inferior_no_thread): Declare. * mi/mi-main.c (run_one_inferior): Use switch_to_inferior_no_thread. --- gdb/ChangeLog | 9 +++++++++ gdb/inferior.c | 21 +++++++++++++-------- gdb/inferior.h | 4 ++++ gdb/mi/mi-main.c | 6 +----- 4 files changed, 27 insertions(+), 13 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3b5f9aab48c..50c56c95c69 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2020-01-10 Pedro Alves + + * inferior.c (switch_to_inferior_no_thread): New function, + factored out from ... + (inferior_command): ... here. + * inferior.h (switch_to_inferior_no_thread): Declare. + * mi/mi-main.c (run_one_inferior): Use + switch_to_inferior_no_thread. + 2020-01-10 Pedro Alves * infcmd.c (kill_command): Remove dead code. diff --git a/gdb/inferior.c b/gdb/inferior.c index 3969ace13a8..0c5e2c74d4e 100644 --- a/gdb/inferior.c +++ b/gdb/inferior.c @@ -575,6 +575,16 @@ kill_inferior_command (const char *args, int from_tty) bfd_cache_close_all (); } +/* See inferior.h. */ + +void +switch_to_inferior_no_thread (inferior *inf) +{ + set_current_inferior (inf); + switch_to_no_thread (); + set_current_program_space (inf->pspace); +} + static void inferior_command (const char *args, int from_tty) { @@ -605,9 +615,7 @@ inferior_command (const char *args, int from_tty) } else { - set_current_inferior (inf); - switch_to_no_thread (); - set_current_program_space (inf->pspace); + switch_to_inferior_no_thread (inf); gdb::observers::user_selected_context_changed.notify (USER_SELECTED_INFERIOR); @@ -737,11 +745,8 @@ add_inferior_command (const char *args, int from_tty) if (exec != NULL) { /* Switch over temporarily, while reading executable and - symbols.q. */ - set_current_program_space (inf->pspace); - set_current_inferior (inf); - switch_to_no_thread (); - + symbols. */ + switch_to_inferior_no_thread (inf); exec_file_attach (exec.get (), from_tty); symbol_file_add_main (exec.get (), add_flags); } diff --git a/gdb/inferior.h b/gdb/inferior.h index fe94a01784d..a9baa52355e 100644 --- a/gdb/inferior.h +++ b/gdb/inferior.h @@ -308,6 +308,10 @@ extern inferior *current_inferior (); extern void set_current_inferior (inferior *); +/* Switch inferior (and program space) to INF, and switch to no thread + selected. */ +extern void switch_to_inferior_no_thread (inferior *inf); + /* GDB represents the state of each program execution with an object called an inferior. An inferior typically corresponds to a process but is more general and applies also to targets that do not have a diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index e67738193bb..24daf3f8838 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -414,11 +414,7 @@ run_one_inferior (struct inferior *inf, void *arg) switch_to_thread (tp); } else - { - set_current_inferior (inf); - switch_to_no_thread (); - set_current_program_space (inf->pspace); - } + switch_to_inferior_no_thread (inf); mi_execute_cli_command (run_cmd, async_p, async_p ? "&" : NULL); return 0; -- 2.30.2