binutils-gdb/gdb/process-stratum-target.c
Pedro Alves f3d11a9a96 Convert default_child_has_foo functions to process_stratum_target methods
This patch converts the default_child_has_foo functions to
process_stratum_target methods.  This simplifies "regular"
non-inf_child process_stratum targets, since they no longer have to
override the target_ops::has_foo methods to call the default_child_foo
functions.  A couple targets need to override the new defaults
(corelow and tracefiles), but it still seems like a good tradeoff,
since those are expected to be little different (target doesn't run).

gdb/ChangeLog:
2018-11-30  Pedro Alves  <palves@redhat.com>

	* corelow.c (core_target) <has_all_memory, has_execution>: New
	overrides.
	* inf-child.c (inf_child_target::has_all_memory)
	(inf_child_target::has_memory, inf_child_target::has_stack)
	(inf_child_target::has_registers)
	(inf_child_target::has_execution): Delete.
	* inf-child.h (inf_child_target) <has_all_memory, has_memory,
	has_stack, has_registers, has_execution>: Delete.
	* process-stratum-target.c
	(process_stratum_target::has_all_memory)
	(process_stratum_target::has_memory)
	(process_stratum_target::has_stack)
	(process_stratum_target::has_registers)
	(process_stratum_target::has_execution): New.
	* process-stratum-target.h (process_stratum_target)
	<has_all_memory, has_memory, has_stack, has_registers,
	has_execution>: New method overrides.
	* ravenscar-thread.c (ravenscar_thread_target) <has_all_memory,
	has_memory, has_stack, has_registers, has_execution>: Delete.
	* remote-sim.c (gdbsim_target) <has_stack, has_registers,
	has_execution>: Delete.
	* remote.c (remote_target) <has_all_memory, has_memory, has_stack,
	has_registers, has_execution>: Delete.
	* target.c (default_child_has_all_memory)
	(default_child_has_memory, default_child_has_stack)
	(default_child_has_registers, default_child_has_execution):
	Delete.
	* target.h (default_child_has_all_memory)
	(default_child_has_memory, default_child_has_stack)
	(default_child_has_registers, default_child_has_execution):
	Delete.
	* tracefile.h (tracefile_target) <has_execution>: New override.
2018-11-30 16:28:11 +00:00

86 lines
2.2 KiB
C

/* Abstract base class inherited by all process_stratum targets
Copyright (C) 2018 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
#include "process-stratum-target.h"
#include "inferior.h"
process_stratum_target::~process_stratum_target ()
{
}
struct address_space *
process_stratum_target::thread_address_space (ptid_t ptid)
{
/* Fall-back to the "main" address space of the inferior. */
inferior *inf = find_inferior_ptid (ptid);
if (inf == NULL || inf->aspace == NULL)
internal_error (__FILE__, __LINE__,
_("Can't determine the current "
"address space of thread %s\n"),
target_pid_to_str (ptid));
return inf->aspace;
}
struct gdbarch *
process_stratum_target::thread_architecture (ptid_t ptid)
{
inferior *inf = find_inferior_ptid (ptid);
gdb_assert (inf != NULL);
return inf->gdbarch;
}
bool
process_stratum_target::has_all_memory ()
{
/* If no inferior selected, then we can't read memory here. */
return inferior_ptid != null_ptid;
}
bool
process_stratum_target::has_memory ()
{
/* If no inferior selected, then we can't read memory here. */
return inferior_ptid != null_ptid;
}
bool
process_stratum_target::has_stack ()
{
/* If no inferior selected, there's no stack. */
return inferior_ptid != null_ptid;
}
bool
process_stratum_target::has_registers ()
{
/* Can't read registers from no inferior. */
return inferior_ptid != null_ptid;
}
bool
process_stratum_target::has_execution (ptid_t the_ptid)
{
/* If there's no thread selected, then we can't make it run through
hoops. */
return the_ptid != null_ptid;
}