mirror of
https://github.com/melonDS-emu/melonDS.git
synced 2025-08-03 11:38:59 -06:00
rework gdb packet parsing
it should be a bit more robust now
This commit is contained in:
@ -86,6 +86,8 @@ enum class ExecResult
|
||||
Continue
|
||||
};
|
||||
|
||||
constexpr int GDBPROTO_BUFFER_CAPACITY = 1024+128;
|
||||
|
||||
class GdbStub;
|
||||
|
||||
typedef ExecResult (*GdbProtoCmd)(GdbStub* stub, const u8* cmd, ssize_t len);
|
||||
@ -141,9 +143,6 @@ public:
|
||||
Gdb::ExecResult CmdExec(const CmdHandler* handlers);
|
||||
|
||||
public:
|
||||
int SendAck();
|
||||
int SendNak();
|
||||
|
||||
int Resp(const u8* data1, size_t len1, const u8* data2 = NULL, size_t len2 = 0);
|
||||
int RespC(const char* data1, size_t len1, const u8* data2 = NULL, size_t len2 = 0);
|
||||
#if defined(__GCC__) || defined(__clang__)
|
||||
@ -158,7 +157,20 @@ private:
|
||||
void Disconnect();
|
||||
StubState HandlePacket();
|
||||
|
||||
private:
|
||||
Gdb::ReadResult MsgRecv();
|
||||
|
||||
Gdb::ReadResult TryParsePacket(size_t start, size_t& packetStart, size_t& packetSize, size_t& packetContentSize);
|
||||
Gdb::ReadResult ParseAndSetupPacket();
|
||||
|
||||
void SetupCommand(size_t packetStart, size_t packetSize);
|
||||
|
||||
int SendAck();
|
||||
int SendNak();
|
||||
|
||||
int Resp(const u8* data1, size_t len1, const u8* data2, size_t len2, bool noack);
|
||||
|
||||
int WaitAckBlocking(u8* ackp, int to_ms);
|
||||
|
||||
StubCallbacks* Cb;
|
||||
|
||||
//struct sockaddr_in server, client;
|
||||
@ -172,6 +184,13 @@ private:
|
||||
bool StatFlag;
|
||||
bool NoAck;
|
||||
|
||||
std::array<u8, GDBPROTO_BUFFER_CAPACITY> RecvBuffer;
|
||||
u32 RecvBufferFilled = 0;
|
||||
std::array<u8, GDBPROTO_BUFFER_CAPACITY> RespBuf;
|
||||
|
||||
std::array<u8, GDBPROTO_BUFFER_CAPACITY> Cmdbuf;
|
||||
ssize_t Cmdlen;
|
||||
|
||||
std::map<u32, BpWp> BpList;
|
||||
std::vector<BpWp> WpList;
|
||||
|
||||
|
Reference in New Issue
Block a user