• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- RegisterContextDummy.h ----------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef lldb_RegisterContextDummy_h_
11 #define lldb_RegisterContextDummy_h_
12 
13 #include <vector>
14 
15 #include "lldb/lldb-private.h"
16 #include "lldb/Target/RegisterContext.h"
17 #include "lldb/Symbol/SymbolContext.h"
18 
19 namespace lldb_private {
20 
21 class RegisterContextDummy : public lldb_private::RegisterContext
22 {
23 public:
24     typedef std::shared_ptr<RegisterContextDummy> SharedPtr;
25 
26     RegisterContextDummy (Thread &thread, uint32_t concrete_frame_idx, uint32_t address_byte_size);
27 
28     ///
29     // pure virtual functions from the base class that we must implement
30     ///
31 
32     virtual
33     ~RegisterContextDummy ();
34 
35     virtual void
36     InvalidateAllRegisters ();
37 
38     virtual size_t
39     GetRegisterCount ();
40 
41     virtual const lldb_private::RegisterInfo *
42     GetRegisterInfoAtIndex (size_t reg);
43 
44     virtual size_t
45     GetRegisterSetCount ();
46 
47     virtual const lldb_private::RegisterSet *
48     GetRegisterSet (size_t reg_set);
49 
50     virtual bool
51     ReadRegister (const lldb_private::RegisterInfo *reg_info, lldb_private::RegisterValue &value);
52 
53     virtual bool
54     WriteRegister (const lldb_private::RegisterInfo *reg_info, const lldb_private::RegisterValue &value);
55 
56     virtual bool
57     ReadAllRegisterValues (lldb::DataBufferSP &data_sp);
58 
59     virtual bool
60     WriteAllRegisterValues (const lldb::DataBufferSP &data_sp);
61 
62     virtual uint32_t
63     ConvertRegisterKindToRegisterNumber (uint32_t kind, uint32_t num);
64 
65 private:
66     //------------------------------------------------------------------
67     // For RegisterContextLLDB only
68     //------------------------------------------------------------------
69 
70     lldb_private::RegisterSet m_reg_set0; // register set 0 (PC only)
71     lldb_private::RegisterInfo m_pc_reg_info;
72 
73     DISALLOW_COPY_AND_ASSIGN (RegisterContextDummy);
74 };
75 } // namespace lldb_private
76 
77 #endif  // lldb_RegisterContextDummy_h_
78