From c180496d2ac268c06c13600f729d02ca4266e6ea Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 30 Nov 2018 14:53:38 +0000 Subject: [PATCH] Move test_target_ops to a separate file There's no need to have all target.h users seeing this type. Also helps with a follow up patch. gdb/ChangeLog: 2018-11-30 Pedro Alves * Makefile.in (COMMON_SFILES): Add test-target.c. * gdbarch-selftests.c: Include "test-target.h". * regcache.c: Include "test-target.h". * target.c (test_target_info, test_target_ops::info): Move to ... * test-target.c: ... this new file. * target.h (test_target_ops): Move to ... * test-target.h: ... this new file. --- gdb/ChangeLog | 10 ++++++ gdb/Makefile.in | 1 + gdb/gdbarch-selftests.c | 1 + gdb/regcache.c | 1 + gdb/target.c | 21 ------------- gdb/target.h | 45 --------------------------- gdb/test-target.c | 39 +++++++++++++++++++++++ gdb/test-target.h | 69 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 121 insertions(+), 66 deletions(-) create mode 100644 gdb/test-target.c create mode 100644 gdb/test-target.h diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d4749dc778f..49450e3ec7a 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2018-11-30 Pedro Alves + + * Makefile.in (COMMON_SFILES): Add test-target.c. + * gdbarch-selftests.c: Include "test-target.h". + * regcache.c: Include "test-target.h". + * target.c (test_target_info, test_target_ops::info): Move to ... + * test-target.c: ... this new file. + * target.h (test_target_ops): Move to ... + * test-target.h: ... this new file. + 2018-11-29 Philippe Waroquiers * source.c (forward_search_command): Fix leak by using diff --git a/gdb/Makefile.in b/gdb/Makefile.in index 3be058f0527..7ec3c0a0191 100644 --- a/gdb/Makefile.in +++ b/gdb/Makefile.in @@ -1110,6 +1110,7 @@ COMMON_SFILES = \ target-dcache.c \ target-descriptions.c \ target-memory.c \ + test-target.c \ thread.c \ thread-iter.c \ thread-fsm.c \ diff --git a/gdb/gdbarch-selftests.c b/gdb/gdbarch-selftests.c index 663146f6551..af97c7de2f0 100644 --- a/gdb/gdbarch-selftests.c +++ b/gdb/gdbarch-selftests.c @@ -24,6 +24,7 @@ #include "inferior.h" #include "gdbthread.h" #include "target.h" +#include "test-target.h" #include "target-float.h" #include "common/def-vector.h" diff --git a/gdb/regcache.c b/gdb/regcache.c index 6e0e8c3e7e0..69e42a27222 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -21,6 +21,7 @@ #include "inferior.h" #include "gdbthread.h" #include "target.h" +#include "test-target.h" #include "gdbarch.h" #include "gdbcmd.h" #include "regcache.h" diff --git a/gdb/target.c b/gdb/target.c index 29ce5eb4145..7fad3a96028 100644 --- a/gdb/target.c +++ b/gdb/target.c @@ -192,27 +192,6 @@ target_command (const char *arg, int from_tty) gdb_stdout); } -#if GDB_SELF_TEST -namespace selftests { - -/* A mock process_stratum target_ops that doesn't read/write registers - anywhere. */ - -static const target_info test_target_info = { - "test", - N_("unit tests target"), - N_("You should never see this"), -}; - -const target_info & -test_target_ops::info () const -{ - return test_target_info; -} - -} /* namespace selftests */ -#endif /* GDB_SELF_TEST */ - /* Default target_has_* methods for process_stratum targets. */ int diff --git a/gdb/target.h b/gdb/target.h index 4731e3bf791..e170bbce3c6 100644 --- a/gdb/target.h +++ b/gdb/target.h @@ -2574,49 +2574,4 @@ extern void target_prepare_to_generate_core (void); /* See to_done_generating_core. */ extern void target_done_generating_core (void); -#if GDB_SELF_TEST -namespace selftests { - -/* A mock process_stratum target_ops that doesn't read/write registers - anywhere. */ - -class test_target_ops : public target_ops -{ -public: - test_target_ops () - : target_ops {} - { - to_stratum = process_stratum; - } - - const target_info &info () const override; - - bool has_registers () override - { - return true; - } - - bool has_stack () override - { - return true; - } - - bool has_memory () override - { - return true; - } - - void prepare_to_store (regcache *regs) override - { - } - - void store_registers (regcache *regs, int regno) override - { - } -}; - - -} // namespace selftests -#endif /* GDB_SELF_TEST */ - #endif /* !defined (TARGET_H) */ diff --git a/gdb/test-target.c b/gdb/test-target.c new file mode 100644 index 00000000000..3d3c9503250 --- /dev/null +++ b/gdb/test-target.c @@ -0,0 +1,39 @@ +/* A mock process_stratum target_ops + + Copyright (C) 2017-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 . */ + +#include "defs.h" +#include "test-target.h" + +#if GDB_SELF_TEST +namespace selftests { + +static const target_info test_target_info = { + "test", + N_("unit tests target"), + N_("You should never see this"), +}; + +const target_info & +test_target_ops::info () const +{ + return test_target_info; +} + +} /* namespace selftests */ +#endif /* GDB_SELF_TEST */ diff --git a/gdb/test-target.h b/gdb/test-target.h new file mode 100644 index 00000000000..b3170f82656 --- /dev/null +++ b/gdb/test-target.h @@ -0,0 +1,69 @@ +/* A mock process_stratum target_ops + + Copyright (C) 2017-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 . */ + +#ifndef TEST_TARGET_H +#define TEST_TARGET_H + +#include "target.h" + +#if GDB_SELF_TEST +namespace selftests { + +/* A mock process_stratum target_ops that doesn't read/write registers + anywhere. */ + +class test_target_ops : public target_ops +{ +public: + test_target_ops () + : target_ops {} + { + to_stratum = process_stratum; + } + + const target_info &info () const override; + + bool has_registers () override + { + return true; + } + + bool has_stack () override + { + return true; + } + + bool has_memory () override + { + return true; + } + + void prepare_to_store (regcache *regs) override + { + } + + void store_registers (regcache *regs, int regno) override + { + } +}; + +} // namespace selftests +#endif /* GDB_SELF_TEST */ + +#endif /* !defined (TEST_TARGET_H) */ -- 2.30.2