diff options
author | Oxore <oxore@protonmail.com> | 2022-08-30 16:49:38 +0300 |
---|---|---|
committer | Oxore <oxore@protonmail.com> | 2022-08-30 16:49:38 +0300 |
commit | ed3cf413dfe5f874f203f8b6a696af29cfc47dcd (patch) | |
tree | 9d9c181a568cf1833218444c0d2b26b33063435e /gdbremote_parser.hpp | |
parent | 026894023fa53fa32fd342d18e05f55743cf6c4b (diff) |
Impl emulator stepping with GDB
Diffstat (limited to 'gdbremote_parser.hpp')
-rw-r--r-- | gdbremote_parser.hpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/gdbremote_parser.hpp b/gdbremote_parser.hpp index 2e9fd88..88a0cf7 100644 --- a/gdbremote_parser.hpp +++ b/gdbremote_parser.hpp @@ -57,14 +57,18 @@ enum class PacketType: int { kEnableExtendedMode, kInterrupt, kContinue, + kContinueAskSupported, kReadGeneralRegisters, + kReadMemory, + kStep, }; struct PacketData { - PacketData() = delete; + virtual ~PacketData() {}; +protected: PacketData(const PacketData&) = delete; PacketData(PacketData&&) = delete; - virtual ~PacketData() {} + PacketData() = default; }; struct PacketDataSupportedFeatures: public PacketData { @@ -72,9 +76,16 @@ struct PacketDataSupportedFeatures: public PacketData { virtual ~PacketDataSupportedFeatures() {} }; +struct PacketDataReadMemory: public PacketData { + PacketDataReadMemory(uint32_t a_offset, uint32_t a_length) + : offset(a_offset), length(a_length) {} + uint32_t offset{}, length{}; + virtual ~PacketDataReadMemory() {} +}; + struct Packet { const PacketType type{}; - const std::unique_ptr<PacketData> data{nullptr}; + const std::unique_ptr<const PacketData> data{nullptr}; /** Convert raw packet data into a Packet * @@ -118,8 +129,14 @@ struct Packet { return "vCtrlC"; case PacketType::kContinue: return "vCont"; + case PacketType::kContinueAskSupported: + return "vCont?"; case PacketType::kReadGeneralRegisters: return "g"; + case PacketType::kReadMemory: + return "m"; + case PacketType::kStep: + return "s"; } return "<unknown>"; } |