diff options
author | Pedro Alves <palves@redhat.com> | 2018-11-30 14:53:39 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2018-11-30 16:27:26 +0000 |
commit | 3b3dac9b3fd916d73726c7e5508f057574f74d19 (patch) | |
tree | 5691452d3a2a73ab852822297b1b165c8879a5c3 /gdb/process-stratum-target.h | |
parent | c180496d2ac268c06c13600f729d02ca4266e6ea (diff) | |
download | gdb-3b3dac9b3fd916d73726c7e5508f057574f74d19.zip gdb-3b3dac9b3fd916d73726c7e5508f057574f74d19.tar.gz gdb-3b3dac9b3fd916d73726c7e5508f057574f74d19.tar.bz2 |
Introduce process_stratum_target
This adds a base class that all process_stratum targets inherit from.
default_thread_address_space/default_thread_architecture only make
sense for process_stratum targets, so they are transformed to
process_stratum_target methods/overrides.
gdb/ChangeLog:
2018-11-30 Pedro Alves <palves@redhat.com>
* Makefile.in (COMMON_SFILES): Add process-stratum-target.c.
* bsd-kvm.c: Include "process-stratum-target.h".
(bsd_kvm_target): Now inherits from process_stratum_target.
(bsd_kvm_target::bsd_kvm_target): Default it.
* corelow.c: Include "process-stratum-target.h".
(core_target): Now inherits from process_stratum_target.
(core_target::core_target): Don't set to_stratum here.
* inf-child.c (inf_child_target::inf_child_target): Delete.
* inf-child.h: Include "process-stratum-target.h".
(inf_child_target): Inherit from process_stratum_target.
(inf_child_target) <inf_child_target>: Default it.
<can_async_p, supports_non_stop, supports_disable_randomization>:
Delete overrides.
* process-stratum-target.c: New file.
* process-stratum-target.h: New file.
* remote-sim.c: Include "process-stratum-target.h".
(gdbsim_target): Inherit from process_stratum_target.
<gdbsim_target>: Default it.
* remote.c: Include "process-stratum-target.h".
(remote_target): Inherit from process_stratum_target.
<remote_target>: Default it.
* target.c (default_thread_address_space)
(default_thread_architecture): Delete.
* target.h (target_ops) <thread_architecture>: Now returns NULL by
default.
<thread_address_space>: Ditto.
* test-target.h: Include "process-stratum-target.h" instead of
"target.h".
(test_target_ops): Inherit from process_stratum_target.
<test_target_ops>: Default it.
* tracefile.c (tracefile_target::tracefile_target): Delete.
* tracefile.h: Include "process-stratum-target.h".
(tracefile_target): Inherit from process_stratum_target.
<tracefile_target>: Default it.
* target-delegates.c: Regenerate.
Diffstat (limited to 'gdb/process-stratum-target.h')
-rw-r--r-- | gdb/process-stratum-target.h | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/gdb/process-stratum-target.h b/gdb/process-stratum-target.h new file mode 100644 index 0000000..0a799f7 --- /dev/null +++ b/gdb/process-stratum-target.h @@ -0,0 +1,51 @@ +/* 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/>. */ + +#ifndef PROCESS_STRATUM_TARGET_H +#define PROCESS_STRATUM_TARGET_H + +#include "target.h" + +/* Abstract base class inherited by all process_stratum targets. */ + +class process_stratum_target : public target_ops +{ +public: + process_stratum_target () + { + to_stratum = process_stratum; + } + + ~process_stratum_target () override = 0; + + /* We must default these because they must be implemented by any + target that can run. */ + bool can_async_p () override { return false; } + bool supports_non_stop () override { return false; } + bool supports_disable_randomization () override { return false; } + + /* This default implementation returns the inferior's address + space. */ + struct address_space *thread_address_space (ptid_t ptid) override; + + /* This default implementation always returns target_gdbarch (). */ + struct gdbarch *thread_architecture (ptid_t ptid) override; +}; + +#endif /* !defined (PROCESS_STRATUM_TARGET_H) */ |