blob: 46cb99ce98a594d25fa2342292799640e9201ba1 [file] [log] [blame]
Daniel Maleae0f8f572013-08-26 23:57:52 +00001//===-- 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