summaryrefslogtreecommitdiff
path: root/gdbremote_parser.hpp
diff options
context:
space:
mode:
authorOxore <oxore@protonmail.com>2022-09-03 14:54:34 +0300
committerOxore <oxore@protonmail.com>2022-09-03 15:12:58 +0300
commit9037b017d6519fed435eea20c3553d40d871d379 (patch)
treeedd55ac4880c980f772f7a466f00edf5837fd38b /gdbremote_parser.hpp
parentf1573848a8ced69f45192b07bab9785e900d34a0 (diff)
Impl writing memory via GDB
Diffstat (limited to 'gdbremote_parser.hpp')
-rw-r--r--gdbremote_parser.hpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/gdbremote_parser.hpp b/gdbremote_parser.hpp
index 75c9bb7..e060daa 100644
--- a/gdbremote_parser.hpp
+++ b/gdbremote_parser.hpp
@@ -60,6 +60,7 @@ enum class PacketType: int {
kContinueAskSupported,
kReadGeneralRegisters,
kReadMemory,
+ kWriteMemory,
kStep,
kSetBreakpoint,
kDeleteBreakpoint,
@@ -85,6 +86,14 @@ struct PacketDataReadMemory: public PacketData {
virtual ~PacketDataReadMemory() {}
};
+struct PacketDataWriteMemory: public PacketData {
+ PacketDataWriteMemory(uint32_t a_offset, uint32_t a_length, std::vector<uint8_t>&& a_data)
+ : offset(a_offset), length(a_length), data(std::move(a_data)) {}
+ uint32_t offset{}, length{};
+ std::vector<uint8_t> data{};
+ virtual ~PacketDataWriteMemory() {}
+};
+
struct Packet {
const PacketType type{};
const std::unique_ptr<const PacketData> data{nullptr};
@@ -137,6 +146,8 @@ struct Packet {
return "g";
case PacketType::kReadMemory:
return "m";
+ case PacketType::kWriteMemory:
+ return "M";
case PacketType::kStep:
return "s";
case PacketType::kSetBreakpoint: