gdb: remove unpush_target free function

unpush_target unpushes the passed-in target from the current inferior's
target stack.  Calling it is therefore an implicit dependency on the
current global inferior.  Remove that function and make the callers use
the inferior::unpush_target method directly.  This sometimes allows
using the inferior from the context rather than the global current
inferior.

target_unpusher::operator() now needs to be implemented in target.c,
otherwise target.h and inferior.h both need to include each other, and
that wouldn't work.

gdb/ChangeLog:

	* target.h (unpush_target): Remove, update all callers
	to use `inferior::unpush_target` instead.
	(struct target_unpusher) <operator()>: Just declare.
	* target.c (unpush_target): Remove.
	(target_unpusher::operator()): New.

Change-Id: Ia5172dfb3f373e0a75b991885b50322ca2142a8c
This commit is contained in:
Simon Marchi 2021-03-23 09:50:32 -04:00
parent 70e958370c
commit fadf6add30
17 changed files with 36 additions and 35 deletions

View file

@ -481,7 +481,7 @@ tfile_target_open (const char *arg, int from_tty)
/* Looks semi-reasonable. Toss the old trace file and work on the new. */
unpush_target (&tfile_ops);
current_inferior ()->unpush_target (&tfile_ops);
trace_filename = filename.release ();
trace_fd = scratch_chan;
@ -551,7 +551,7 @@ tfile_target_open (const char *arg, int from_tty)
catch (const gdb_exception &ex)
{
/* Remove the partially set up target. */
unpush_target (&tfile_ops);
current_inferior ()->unpush_target (&tfile_ops);
throw;
}