summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Clayton <gclayton@apple.com>2011-05-16 02:35:02 +0000
committerGreg Clayton <gclayton@apple.com>2011-05-16 02:35:02 +0000
commitb4aaf2e78d3b1d5aab1578b5ffd99310217303aa (patch)
tree375426171c053e0e52b2c43753c7f1a0c0923b64
parent92e18ed40fa561cbe533d6a8be2659c2ac1969c4 (diff)
downloadbcm5719-llvm-b4aaf2e78d3b1d5aab1578b5ffd99310217303aa.tar.gz
bcm5719-llvm-b4aaf2e78d3b1d5aab1578b5ffd99310217303aa.zip
Fixed an issue where large memory writes might not get chunked up into smaller
packets in GDB remote. Also fixed a compiler warning for an unhandled case for a switch. llvm-svn: 131397
-rw-r--r--lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp8
-rw-r--r--lldb/source/Symbol/ClangASTType.cpp1
-rw-r--r--lldb/source/Target/Process.cpp2
3 files changed, 10 insertions, 1 deletions
diff --git a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
index 95646241427..0a65b987a40 100644
--- a/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
+++ b/lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
@@ -1520,6 +1520,14 @@ ProcessGDBRemote::DoReadMemory (addr_t addr, void *buf, size_t size, Error &erro
size_t
ProcessGDBRemote::DoWriteMemory (addr_t addr, const void *buf, size_t size, Error &error)
{
+ if (size > m_max_memory_size)
+ {
+ // Keep memory read sizes down to a sane limit. This function will be
+ // called multiple times in order to complete the task by
+ // lldb_private::Process so it is ok to do this.
+ size = m_max_memory_size;
+ }
+
StreamString packet;
packet.Printf("M%llx,%zx:", addr, size);
packet.PutBytesAsRawHex8(buf, size, lldb::endian::InlHostByteOrder(), lldb::endian::InlHostByteOrder());
diff --git a/lldb/source/Symbol/ClangASTType.cpp b/lldb/source/Symbol/ClangASTType.cpp
index c473e1934a1..c8c5e766396 100644
--- a/lldb/source/Symbol/ClangASTType.cpp
+++ b/lldb/source/Symbol/ClangASTType.cpp
@@ -262,6 +262,7 @@ ClangASTType::GetFormat (clang_type_t clang_type)
//default: assert(0 && "Unknown builtin type!");
case clang::BuiltinType::UnknownAny:
case clang::BuiltinType::Void:
+ case clang::BuiltinType::BoundMember:
break;
case clang::BuiltinType::Bool: return lldb::eFormatBoolean;
diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 47a4c1c5b98..f185d574536 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -1913,7 +1913,7 @@ Process::WriteMemory (addr_t addr, const void *buf, size_t size, Error &error)
BreakpointSiteList::collection::const_iterator end = m_breakpoint_site_list.GetMap()->end();
if (iter == end || iter->second->GetLoadAddress() > addr + size)
- return DoWriteMemory(addr, buf, size, error);
+ return WriteMemoryPrivate (addr, buf, size, error);
BreakpointSiteList::collection::const_iterator pos;
size_t bytes_written = 0;
OpenPOWER on IntegriCloud