diff options
author | Yao Qi <yao.qi@linaro.org> | 2017-11-24 13:04:30 +0000 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2017-11-24 13:04:30 +0000 |
commit | 1b30aaa56607a563fa263b9d2ee9eba89d79c1b4 (patch) | |
tree | 9da7d4cb9ab1cc116e96f5212cfe0124ed3d88f2 /gdb/gdbarch-selftests.c | |
parent | 6654d750c7c584dd83b93f062c5628f15c675480 (diff) | |
download | fsf-binutils-gdb-1b30aaa56607a563fa263b9d2ee9eba89d79c1b4.zip fsf-binutils-gdb-1b30aaa56607a563fa263b9d2ee9eba89d79c1b4.tar.gz fsf-binutils-gdb-1b30aaa56607a563fa263b9d2ee9eba89d79c1b4.tar.bz2 |
regcache::cooked_read unit test
This patch adds a unit test to regcache::cooked_read. This unit test is a
little different from normal unit test, it is more about conformance test
or interaction test. This test pass both raw register number and pseudo
register number to regcache::cooked_read, in order to inspect 1) return
value of cooked_read, 2) how are target_ops to_xfer_partial,
to_{fetch,store}_registers called (because regcache is updated by means of
these three target_ops methods). With this test here, we have a clear
picture about how each port of GDB get cooked registers.
This patch also shares some code on mock target.
gdb:
2017-11-24 Yao Qi <yao.qi@linaro.org>
* gdbarch-selftests.c (test_target_has_registers): Move it to
target.c.
(test_target_has_stack): Likewise.
(test_target_has_memory): Likewise.
(test_target_prepare_to_store): Likewise.
(test_target_store_registers): Likewise.
(test_target_ops): Likewise.
* regcache.c: Include selftest-arch.h and gdbthread.h.
(target_ops_no_register): New class.
(test_target_fetch_registers): New.
(test_target_store_registers): New.
(test_target_xfer_partial): New.
(readwrite_regcache): New.
(cooked_read_test): New.
(_initialize_regcache): Register the test.
* target.c: (test_target_has_registers): Moved from
gdbarch-selftests.c.
(test_target_has_stack): Likewise.
(test_target_has_memory): Likewise.
(test_target_prepare_to_store): Likewise.
(test_target_store_registers): Likewise.
* target.h (test_target_ops): New class.
Diffstat (limited to 'gdb/gdbarch-selftests.c')
-rw-r--r-- | gdb/gdbarch-selftests.c | 50 |
1 files changed, 1 insertions, 49 deletions
diff --git a/gdb/gdbarch-selftests.c b/gdb/gdbarch-selftests.c index c748fcc..49d006f 100644 --- a/gdb/gdbarch-selftests.c +++ b/gdb/gdbarch-selftests.c @@ -25,58 +25,10 @@ #include "gdbthread.h" #include "target.h" #include "target-float.h" +#include "common/def-vector.h" namespace selftests { -/* A mock process_stratum target_ops that doesn't read/write registers - anywhere. */ - -static int -test_target_has_registers (target_ops *self) -{ - return 1; -} - -static int -test_target_has_stack (target_ops *self) -{ - return 1; -} - -static int -test_target_has_memory (target_ops *self) -{ - return 1; -} - -static void -test_target_prepare_to_store (target_ops *self, regcache *regs) -{ -} - -static void -test_target_store_registers (target_ops *self, regcache *regs, int regno) -{ -} - -class test_target_ops : public target_ops -{ -public: - test_target_ops () - : target_ops {} - { - to_magic = OPS_MAGIC; - to_stratum = process_stratum; - to_has_memory = test_target_has_memory; - to_has_stack = test_target_has_stack; - to_has_registers = test_target_has_registers; - to_prepare_to_store = test_target_prepare_to_store; - to_store_registers = test_target_store_registers; - - complete_target_initialization (this); - } -}; - /* Test gdbarch methods register_to_value and value_to_register. */ static void |