From c180496d2ac268c06c13600f729d02ca4266e6ea Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Fri, 30 Nov 2018 14:53:38 +0000 Subject: 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 d4749dc..49450e3 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 3be058f..7ec3c0a 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 663146f..af97c7d 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 6e0e8c3..69e42a2 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 29ce5eb..7fad3a9 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 4731e3b..e170bbc 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 0000000..3d3c950 --- /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 0000000..b3170f8 --- /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) */ -- cgit v1.1