gdb: remove the pop_all_targets (and friends) global functions
authorAndrew Burgess <aburgess@redhat.com>
Thu, 22 Sep 2022 11:22:22 +0000 (12:22 +0100)
committerAndrew Burgess <aburgess@redhat.com>
Wed, 14 Dec 2022 13:57:22 +0000 (13:57 +0000)
commitc8181f706f5a481e9667195d1f5d1623db6cc7f2
tree6f4bf3f6732629ce964a48226c97e32c3125989a
parent9678f8fe975c213c94735221dcb438395e4de9e1
gdb: remove the pop_all_targets (and friends) global functions

This commit removes the global functions pop_all_targets,
pop_all_targets_above, and pop_all_targets_at_and_above, and makes
them methods on the inferior class.

As the pop_all_targets functions will unpush each target, which
decrements the targets reference count, it is possible that the target
might be closed.

Right now, closing a target, in some cases, depends on the current
inferior being set correctly, that is, to the inferior from which the
target was popped.

To facilitate this I have used switch_to_inferior_no_thread within the
new methods.  Previously it was the responsibility of the caller to
ensure that the correct inferior was selected.

In a couple of places (event-top.c and top.c) I have been able to
remove a previous switch_to_inferior_no_thread call.

In remote_unpush_target (remote.c) I have left the
switch_to_inferior_no_thread call as it is required for the
generic_mourn_inferior call.
gdb/event-top.c
gdb/inferior.c
gdb/inferior.h
gdb/remote.c
gdb/scoped-mock-context.h
gdb/target.c
gdb/target.h
gdb/top.c