mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-27 04:52:05 +08:00
f3d11a9a96
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.
86 lines
2.2 KiB
C
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;
|
|
}
|