StreamGDBRemote.cpp revision 263363
1//===-- StreamGDBRemote.cpp -------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "lldb/Core/StreamGDBRemote.h" 11#include <stdio.h> 12 13using namespace lldb; 14using namespace lldb_private; 15 16StreamGDBRemote::StreamGDBRemote () : 17StreamString () 18{ 19} 20 21StreamGDBRemote::StreamGDBRemote(uint32_t flags, uint32_t addr_size, ByteOrder byte_order) : 22StreamString (flags, addr_size, byte_order) 23{ 24} 25 26StreamGDBRemote::~StreamGDBRemote() 27{ 28} 29 30 31int 32StreamGDBRemote::PutEscapedBytes (const void* s, 33 size_t src_len) 34{ 35 int bytes_written = 0; 36 const uint8_t *src = (const uint8_t *)s; 37 bool binary_is_set = m_flags.Test(eBinary); 38 m_flags.Clear(eBinary); 39 while (src_len) 40 { 41 uint8_t byte = *src; 42 src++; src_len--; 43 if (byte == 0x23 || byte == 0x24 || byte == 0x7d || byte == 0x2a) 44 { 45 bytes_written += PutChar(0x7d); 46 byte ^= 0x20; 47 } 48 bytes_written += PutChar(byte); 49 }; 50 if (binary_is_set) 51 m_flags.Set(eBinary); 52 return bytes_written; 53} 54 55