OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 The Native Client Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 #ifndef DEBUGGER_RSP_RSP_CONTROL_PACKETS_H_ | |
5 #define DEBUGGER_RSP_RSP_CONTROL_PACKETS_H_ | |
6 #include <string> | |
7 #include "debugger/rsp/rsp_packets.h" | |
8 | |
9 namespace rsp { | |
10 /// Requests the reason the target halted. | |
11 /// Example: "?" | |
12 class GetStopReasonCommand : public OneWordPacket { | |
13 public: | |
14 GetStopReasonCommand() : OneWordPacket("?") {} | |
15 virtual Packet* Clone() const { return new GetStopReasonCommand; } | |
16 virtual void AcceptVisitor(PacketVisitor* vis) { vis->Visit(this); } | |
17 }; | |
18 | |
19 /// Read target memory request. | |
20 /// Example: "mc000202e0,12" | |
21 class ReadMemoryCommand : public Packet { | |
22 public: | |
23 ReadMemoryCommand(); | |
24 | |
25 virtual Packet* Clone() const { return new ReadMemoryCommand; } | |
26 virtual void AcceptVisitor(PacketVisitor* vis) { vis->Visit(this); } | |
27 virtual bool FromBlob(const std::string& type, debug::Blob* message); | |
28 virtual void ToBlob(debug::Blob* message) const; | |
29 | |
30 uint64_t addr() const { return addr_; } | |
31 int num_of_bytes() const { return num_of_bytes_; } | |
32 | |
33 void set_addr(uint64_t ptr) { addr_ = ptr; } | |
34 void set_num_of_bytes(int x) { num_of_bytes_ = x; } | |
35 | |
36 protected: | |
37 uint64_t addr_; | |
38 int num_of_bytes_; | |
39 }; | |
40 | |
41 /// Write target memory request. | |
42 /// Example: "Mc00020304,1:8b" | |
43 class WriteMemoryCommand : public Packet { | |
44 public: | |
45 WriteMemoryCommand(); | |
46 | |
47 virtual Packet* Clone() const { return new WriteMemoryCommand; } | |
48 virtual void AcceptVisitor(PacketVisitor* vis) { vis->Visit(this); } | |
49 virtual bool FromBlob(const std::string& type, debug::Blob* message); | |
50 virtual void ToBlob(debug::Blob* message) const; | |
51 | |
52 uint64_t addr() const { return addr_; } | |
53 const debug::Blob& data() const { return data_; } | |
54 | |
55 void set_addr(uint64_t addr) { addr_ = addr; } | |
56 void set_data(const debug::Blob& data) { data_ = data; } | |
57 void set_data(const void* data, size_t size); | |
58 | |
59 protected: | |
60 uint64_t addr_; | |
61 debug::Blob data_; | |
62 }; | |
63 | |
64 /// Read general registers command. | |
65 /// Example: "g" | |
66 class ReadRegistersCommand : public OneWordPacket { | |
67 public: | |
68 ReadRegistersCommand() : OneWordPacket("g") {} | |
69 virtual Packet* Clone() const { return new ReadRegistersCommand; } | |
70 virtual void AcceptVisitor(PacketVisitor* vis) { vis->Visit(this); } | |
71 }; | |
72 | |
73 /// Write general registers command. | |
74 /// Example: "G00000000000000000000000000000000d8513702000000004" | |
75 class WriteRegistersCommand : public Packet { | |
76 public: | |
77 virtual Packet* Clone() const { return new WriteRegistersCommand; } | |
78 virtual void AcceptVisitor(PacketVisitor* vis) { vis->Visit(this); } | |
79 virtual bool FromBlob(const std::string& type, debug::Blob* message); | |
80 virtual void ToBlob(debug::Blob* message) const; | |
81 | |
82 const debug::Blob& data() const { return data_; } | |
83 void set_data(const debug::Blob& data) { data_ = data; } | |
84 | |
85 protected: | |
86 debug::Blob data_; | |
87 }; | |
88 | |
89 /// Continue command | |
90 /// Example: "c" | |
91 class ContinueCommand : public OneWordPacket { | |
92 public: | |
93 ContinueCommand() : OneWordPacket("c") {} | |
94 virtual Packet* Clone() const { return new ContinueCommand; } | |
95 virtual void AcceptVisitor(PacketVisitor* vis) { vis->Visit(this); } | |
96 }; | |
97 | |
98 /// Single (instruction) step command | |
99 class StepCommand : public OneWordPacket { | |
100 public: | |
101 StepCommand() : OneWordPacket("s") {} | |
102 virtual Packet* Clone() const { return new StepCommand; } | |
103 virtual void AcceptVisitor(PacketVisitor* vis) { vis->Visit(this); } | |
104 }; | |
105 } // namespace rsp | |
106 | |
107 #endif // DEBUGGER_RSP_RSP_CONTROL_PACKETS_H_ | |
108 | |
OLD | NEW |