summaryrefslogtreecommitdiffstats
path: root/lldb/source/Core/StreamGDBRemote.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source/Core/StreamGDBRemote.cpp')
-rw-r--r--lldb/source/Core/StreamGDBRemote.cpp54
1 files changed, 54 insertions, 0 deletions
diff --git a/lldb/source/Core/StreamGDBRemote.cpp b/lldb/source/Core/StreamGDBRemote.cpp
new file mode 100644
index 00000000000..46cb99ce98a
--- /dev/null
+++ b/lldb/source/Core/StreamGDBRemote.cpp
@@ -0,0 +1,54 @@
+//===-- StreamGDBRemote.cpp -------------------------------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "lldb/Core/StreamGDBRemote.h"
+#include <stdio.h>
+
+using namespace lldb;
+using namespace lldb_private;
+
+StreamGDBRemote::StreamGDBRemote () :
+StreamString ()
+{
+}
+
+StreamGDBRemote::StreamGDBRemote(uint32_t flags, uint32_t addr_size, ByteOrder byte_order) :
+StreamString (flags, addr_size, byte_order)
+{
+}
+
+StreamGDBRemote::~StreamGDBRemote()
+{
+}
+
+
+int
+StreamGDBRemote::PutEscapedBytes (const void* s,
+ size_t src_len)
+{
+ int bytes_written = 0;
+ const uint8_t *src = (const uint8_t *)s;
+ bool binary_is_set = m_flags.Test(eBinary);
+ m_flags.Clear(eBinary);
+ while (src_len)
+ {
+ uint8_t byte = *src;
+ src++; src_len--;
+ if (byte == 0x23 || byte == 0x24 || byte == 0x7d || byte == 0x2a)
+ {
+ bytes_written += PutChar(0x7d);
+ byte ^= 0x20;
+ }
+ bytes_written += PutChar(byte);
+ };
+ if (binary_is_set)
+ m_flags.Set(eBinary);
+ return bytes_written;
+}
+
OpenPOWER on IntegriCloud