104 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			104 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
//===-- 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_qLaunchSuccess,
 | 
						|
        eServerPacketType_qProcessInfoPID,
 | 
						|
        eServerPacketType_qSpeedTest,
 | 
						|
        eServerPacketType_qUserName,
 | 
						|
        eServerPacketType_QEnvironment,
 | 
						|
        eServerPacketType_QSetDisableASLR,
 | 
						|
        eServerPacketType_QSetSTDIN,
 | 
						|
        eServerPacketType_QSetSTDOUT,
 | 
						|
        eServerPacketType_QSetSTDERR,
 | 
						|
        eServerPacketType_QSetWorkingDir,
 | 
						|
        eServerPacketType_QStartNoAckMode
 | 
						|
    };
 | 
						|
    
 | 
						|
    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();
 | 
						|
};
 | 
						|
 | 
						|
#endif  // utility_StringExtractorGDBRemote_h_
 |