1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
//===-- StringExtractorGDBRemote.h ------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef utility_StringExtractorGDBRemote_h_
#define utility_StringExtractorGDBRemote_h_
// C Includes
// C++ Includes
#include <string>
// Other libraries and framework includes
// Project includes
#include "Utility/StringExtractor.h"
class StringExtractorGDBRemote : public StringExtractor
{
public:
StringExtractorGDBRemote() :
StringExtractor ()
{
}
StringExtractorGDBRemote(const char *cstr) :
StringExtractor (cstr)
{
}
StringExtractorGDBRemote(const StringExtractorGDBRemote& rhs) :
StringExtractor (rhs)
{
}
virtual ~StringExtractorGDBRemote()
{
}
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_qGroupName,
eServerPacketType_qHostInfo,
eServerPacketType_qLaunchGDBServer,
eServerPacketType_qKillSpawnedProcess,
eServerPacketType_qLaunchSuccess,
eServerPacketType_qProcessInfoPID,
eServerPacketType_qSpeedTest,
eServerPacketType_qUserName,
eServerPacketType_QEnvironment,
eServerPacketType_QLaunchArch,
eServerPacketType_QSetDisableASLR,
eServerPacketType_QSetSTDIN,
eServerPacketType_QSetSTDOUT,
eServerPacketType_QSetSTDERR,
eServerPacketType_QSetWorkingDir,
eServerPacketType_QStartNoAckMode,
eServerPacketType_qPlatform_RunCommand,
eServerPacketType_qPlatform_IO_MkDir,
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
};
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);
};
#endif // utility_StringExtractorGDBRemote_h_
|