diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-01-02 19:26:05 +0000 |
commit | 14f1b3e8826ce43b978db93a62d1166055db5394 (patch) | |
tree | 0a00ad8d3498783fe0193f3b656bca17c4c8697d /source/Utility/StringExtractorGDBRemote.h | |
parent | 4ee8c119c71a06dcad1e0fecc8c675e480e59337 (diff) | |
download | src-14f1b3e8826ce43b978db93a62d1166055db5394.tar.gz src-14f1b3e8826ce43b978db93a62d1166055db5394.zip |
Vendor import of lldb trunk r290819:vendor/lldb/lldb-trunk-r290819
Notes
Notes:
svn path=/vendor/lldb/dist/; revision=311128
svn path=/vendor/lldb/lldb-trunk-r290819/; revision=311129; tag=vendor/lldb/lldb-trunk-r290819
Diffstat (limited to 'source/Utility/StringExtractorGDBRemote.h')
-rw-r--r-- | source/Utility/StringExtractorGDBRemote.h | 367 |
1 files changed, 168 insertions, 199 deletions
diff --git a/source/Utility/StringExtractorGDBRemote.h b/source/Utility/StringExtractorGDBRemote.h index ade0edbbb7ae..ce12660f0d35 100644 --- a/source/Utility/StringExtractorGDBRemote.h +++ b/source/Utility/StringExtractorGDBRemote.h @@ -17,207 +17,176 @@ // Project includes #include "lldb/Utility/StringExtractor.h" -class StringExtractorGDBRemote : public StringExtractor -{ +class StringExtractorGDBRemote : public StringExtractor { public: - typedef bool (*ResponseValidatorCallback)(void * baton, const StringExtractorGDBRemote &response); - - StringExtractorGDBRemote() : - StringExtractor(), - m_validator(nullptr) - { - } - - StringExtractorGDBRemote(const char *cstr) : - StringExtractor(cstr), - m_validator(nullptr) - { - } - - StringExtractorGDBRemote(const StringExtractorGDBRemote& rhs) : - StringExtractor(rhs), - m_validator(rhs.m_validator) - { - } - - virtual ~StringExtractorGDBRemote() - { - } - - bool - ValidateResponse() const; - - void - CopyResponseValidator(const StringExtractorGDBRemote& rhs); - - void - SetResponseValidator(ResponseValidatorCallback callback, void *baton); - - void - SetResponseValidatorToOKErrorNotSupported(); - - void - SetResponseValidatorToASCIIHexBytes(); - - void - SetResponseValidatorToJSON(); - - enum ServerPacketType - { - eServerPacketType_nack = 0, - eServerPacketType_ack, - eServerPacketType_invalid, - eServerPacketType_unimplemented, - eServerPacketType_interrupt, // CTRL+c packet or "\x03" - eServerPacketType_A, // Program arguments packet - eServerPacketType_qfProcessInfo, - eServerPacketType_qsProcessInfo, - eServerPacketType_qC, - eServerPacketType_qEcho, - eServerPacketType_qGroupName, - eServerPacketType_qHostInfo, - eServerPacketType_qLaunchGDBServer, - eServerPacketType_qQueryGDBServer, - eServerPacketType_qKillSpawnedProcess, - eServerPacketType_qLaunchSuccess, - eServerPacketType_qModuleInfo, - eServerPacketType_qProcessInfoPID, - eServerPacketType_qSpeedTest, - eServerPacketType_qUserName, - eServerPacketType_qGetWorkingDir, - eServerPacketType_qFileLoadAddress, - eServerPacketType_QEnvironment, - eServerPacketType_QLaunchArch, - eServerPacketType_QSetDisableASLR, - eServerPacketType_QSetDetachOnError, - eServerPacketType_QSetSTDIN, - eServerPacketType_QSetSTDOUT, - eServerPacketType_QSetSTDERR, - eServerPacketType_QSetWorkingDir, - eServerPacketType_QStartNoAckMode, - eServerPacketType_qPlatform_shell, - eServerPacketType_qPlatform_mkdir, - eServerPacketType_qPlatform_chmod, - eServerPacketType_vFile_open, - eServerPacketType_vFile_close, - eServerPacketType_vFile_pread, - eServerPacketType_vFile_pwrite, - eServerPacketType_vFile_size, - eServerPacketType_vFile_mode, - eServerPacketType_vFile_exists, - eServerPacketType_vFile_md5, - eServerPacketType_vFile_stat, - eServerPacketType_vFile_symlink, - eServerPacketType_vFile_unlink, - // debug server packages - eServerPacketType_QEnvironmentHexEncoded, - eServerPacketType_QListThreadsInStopReply, - eServerPacketType_QRestoreRegisterState, - eServerPacketType_QSaveRegisterState, - eServerPacketType_QSetLogging, - eServerPacketType_QSetMaxPacketSize, - eServerPacketType_QSetMaxPayloadSize, - eServerPacketType_QSetEnableAsyncProfiling, - eServerPacketType_QSyncThreadState, - eServerPacketType_QThreadSuffixSupported, - - eServerPacketType_jThreadsInfo, - eServerPacketType_qsThreadInfo, - eServerPacketType_qfThreadInfo, - eServerPacketType_qGetPid, - eServerPacketType_qGetProfileData, - eServerPacketType_qGDBServerVersion, - eServerPacketType_qMemoryRegionInfo, - eServerPacketType_qMemoryRegionInfoSupported, - eServerPacketType_qProcessInfo, - eServerPacketType_qRcmd, - eServerPacketType_qRegisterInfo, - eServerPacketType_qShlibInfoAddr, - eServerPacketType_qStepPacketSupported, - eServerPacketType_qSupported, - eServerPacketType_qSyncThreadStateSupported, - eServerPacketType_qThreadExtraInfo, - eServerPacketType_qThreadStopInfo, - eServerPacketType_qVAttachOrWaitSupported, - eServerPacketType_qWatchpointSupportInfo, - eServerPacketType_qWatchpointSupportInfoSupported, - eServerPacketType_qXfer_auxv_read, - - eServerPacketType_jSignalsInfo, - - eServerPacketType_vAttach, - eServerPacketType_vAttachWait, - eServerPacketType_vAttachOrWait, - eServerPacketType_vAttachName, - eServerPacketType_vCont, - eServerPacketType_vCont_actions, // vCont? - - eServerPacketType_stop_reason, // '?' - - eServerPacketType_c, - eServerPacketType_C, - eServerPacketType_D, - eServerPacketType_g, - eServerPacketType_G, - eServerPacketType_H, - eServerPacketType_I, // stdin notification - eServerPacketType_k, - eServerPacketType_m, - eServerPacketType_M, - eServerPacketType_p, - eServerPacketType_P, - eServerPacketType_s, - eServerPacketType_S, - eServerPacketType_T, - eServerPacketType_x, - eServerPacketType_X, - eServerPacketType_Z, - eServerPacketType_z, - - eServerPacketType__M, - eServerPacketType__m, - eServerPacketType_notify, // '%' notification - }; - - ServerPacketType - GetServerPacketType () const; - - enum ResponseType - { - eUnsupported = 0, - eAck, - eNack, - eError, - eOK, - eResponse - }; - - ResponseType - GetResponseType () const; - - bool - IsOKResponse() const; - - bool - IsUnsupportedResponse() const; - - bool - IsNormalResponse () const; - - bool - IsErrorResponse() const; - - // Returns zero if the packet isn't a EXX packet where XX are two hex - // digits. Otherwise the error encoded in XX is returned. - uint8_t - GetError(); - - size_t - GetEscapedBinaryData (std::string &str); + typedef bool (*ResponseValidatorCallback)( + void *baton, const StringExtractorGDBRemote &response); + + StringExtractorGDBRemote() : StringExtractor(), m_validator(nullptr) {} + + StringExtractorGDBRemote(llvm::StringRef str) + : StringExtractor(str), m_validator(nullptr) {} + + StringExtractorGDBRemote(const char *cstr) + : StringExtractor(cstr), m_validator(nullptr) {} + + StringExtractorGDBRemote(const StringExtractorGDBRemote &rhs) + : StringExtractor(rhs), m_validator(rhs.m_validator) {} + + virtual ~StringExtractorGDBRemote() {} + + bool ValidateResponse() const; + + void CopyResponseValidator(const StringExtractorGDBRemote &rhs); + + void SetResponseValidator(ResponseValidatorCallback callback, void *baton); + + void SetResponseValidatorToOKErrorNotSupported(); + + void SetResponseValidatorToASCIIHexBytes(); + + void SetResponseValidatorToJSON(); + + enum ServerPacketType { + eServerPacketType_nack = 0, + eServerPacketType_ack, + eServerPacketType_invalid, + eServerPacketType_unimplemented, + eServerPacketType_interrupt, // CTRL+c packet or "\x03" + eServerPacketType_A, // Program arguments packet + eServerPacketType_qfProcessInfo, + eServerPacketType_qsProcessInfo, + eServerPacketType_qC, + eServerPacketType_qEcho, + eServerPacketType_qGroupName, + eServerPacketType_qHostInfo, + eServerPacketType_qLaunchGDBServer, + eServerPacketType_qQueryGDBServer, + eServerPacketType_qKillSpawnedProcess, + eServerPacketType_qLaunchSuccess, + eServerPacketType_qModuleInfo, + eServerPacketType_qProcessInfoPID, + eServerPacketType_qSpeedTest, + eServerPacketType_qUserName, + eServerPacketType_qGetWorkingDir, + eServerPacketType_qFileLoadAddress, + eServerPacketType_QEnvironment, + eServerPacketType_QLaunchArch, + eServerPacketType_QSetDisableASLR, + eServerPacketType_QSetDetachOnError, + eServerPacketType_QSetSTDIN, + eServerPacketType_QSetSTDOUT, + eServerPacketType_QSetSTDERR, + eServerPacketType_QSetWorkingDir, + eServerPacketType_QStartNoAckMode, + eServerPacketType_qPlatform_shell, + eServerPacketType_qPlatform_mkdir, + eServerPacketType_qPlatform_chmod, + eServerPacketType_vFile_open, + eServerPacketType_vFile_close, + eServerPacketType_vFile_pread, + eServerPacketType_vFile_pwrite, + eServerPacketType_vFile_size, + eServerPacketType_vFile_mode, + eServerPacketType_vFile_exists, + eServerPacketType_vFile_md5, + eServerPacketType_vFile_stat, + eServerPacketType_vFile_symlink, + eServerPacketType_vFile_unlink, + // debug server packages + eServerPacketType_QEnvironmentHexEncoded, + eServerPacketType_QListThreadsInStopReply, + eServerPacketType_QRestoreRegisterState, + eServerPacketType_QSaveRegisterState, + eServerPacketType_QSetLogging, + eServerPacketType_QSetMaxPacketSize, + eServerPacketType_QSetMaxPayloadSize, + eServerPacketType_QSetEnableAsyncProfiling, + eServerPacketType_QSyncThreadState, + eServerPacketType_QThreadSuffixSupported, + + eServerPacketType_jThreadsInfo, + eServerPacketType_qsThreadInfo, + eServerPacketType_qfThreadInfo, + eServerPacketType_qGetPid, + eServerPacketType_qGetProfileData, + eServerPacketType_qGDBServerVersion, + eServerPacketType_qMemoryRegionInfo, + eServerPacketType_qMemoryRegionInfoSupported, + eServerPacketType_qProcessInfo, + eServerPacketType_qRcmd, + eServerPacketType_qRegisterInfo, + eServerPacketType_qShlibInfoAddr, + eServerPacketType_qStepPacketSupported, + eServerPacketType_qSupported, + eServerPacketType_qSyncThreadStateSupported, + eServerPacketType_qThreadExtraInfo, + eServerPacketType_qThreadStopInfo, + eServerPacketType_qVAttachOrWaitSupported, + eServerPacketType_qWatchpointSupportInfo, + eServerPacketType_qWatchpointSupportInfoSupported, + eServerPacketType_qXfer_auxv_read, + + eServerPacketType_jSignalsInfo, + eServerPacketType_jModulesInfo, + + eServerPacketType_vAttach, + eServerPacketType_vAttachWait, + eServerPacketType_vAttachOrWait, + eServerPacketType_vAttachName, + eServerPacketType_vCont, + eServerPacketType_vCont_actions, // vCont? + + eServerPacketType_stop_reason, // '?' + + eServerPacketType_c, + eServerPacketType_C, + eServerPacketType_D, + eServerPacketType_g, + eServerPacketType_G, + eServerPacketType_H, + eServerPacketType_I, // stdin notification + eServerPacketType_k, + eServerPacketType_m, + eServerPacketType_M, + eServerPacketType_p, + eServerPacketType_P, + eServerPacketType_s, + eServerPacketType_S, + eServerPacketType_T, + eServerPacketType_x, + eServerPacketType_X, + eServerPacketType_Z, + eServerPacketType_z, + + eServerPacketType__M, + eServerPacketType__m, + eServerPacketType_notify, // '%' notification + }; + + ServerPacketType GetServerPacketType() const; + + enum ResponseType { eUnsupported = 0, eAck, eNack, eError, eOK, eResponse }; + + ResponseType GetResponseType() const; + + bool IsOKResponse() const; + + bool IsUnsupportedResponse() const; + + bool IsNormalResponse() const; + + bool IsErrorResponse() const; + + // Returns zero if the packet isn't a EXX packet where XX are two hex + // digits. Otherwise the error encoded in XX is returned. + uint8_t GetError(); + + size_t GetEscapedBinaryData(std::string &str); protected: - ResponseValidatorCallback m_validator; - void *m_validator_baton; + ResponseValidatorCallback m_validator; + void *m_validator_baton; }; -#endif // utility_StringExtractorGDBRemote_h_ +#endif // utility_StringExtractorGDBRemote_h_ |