Re: [PATCH 6/9] Don't change current program space in exec_target::close

Simon Marchi
2020-07-22T12:22:49Z

On 2020-07-21 11:34 p.m., Tom Tromey wrote:
> Now that we've removed the macros and changed exec_close to be a
> method, it's clear that exec_target::close can operate on program
> spaces without changing the current program space.
>
> gdb/ChangeLog
> 2020-07-21 Tom Tromey <tom@tromey.com>
>
> * exec.c (exec_target::close): Don't change current program
> space.
> ---
> gdb/ChangeLog | 5 +++++
> gdb/exec.c | 3 ---
> 2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/gdb/exec.c b/gdb/exec.c
> index e2a0cae787c..b2c7a58b27f 100644
> --- a/gdb/exec.c
> +++ b/gdb/exec.c
> @@ -154,11 +154,8 @@ exec_target_open (const char *args, int from_tty)
> void
> exec_target::close ()
> {
> - scoped_restore_current_program_space restore_pspace;
> -
> for (struct program_space *ss : program_spaces)
> {
> - set_current_program_space (ss);
> clear_section_table (&ss->target_sections);
> ss->exec_close ();
> }

Ah, forget my comment on last patch.

So yeah, ss->exec_close calls remove_target_sections, which uses current_program_space.

I think that would need to be changed first, but there doesn't seem to be any blocker
for that.

Simon