diff options
author | Greg Clayton <gclayton@apple.com> | 2011-09-17 05:47:55 +0000 |
---|---|---|
committer | Greg Clayton <gclayton@apple.com> | 2011-09-17 05:47:55 +0000 |
commit | 5299cc58cb04d541278807e4e9f6978d120f5e0e (patch) | |
tree | d0cc8f3135398d742f8b35674711e953c5ff74f8 | |
parent | 9163c394d9a4e550e96ddf7aaf0e1fe1fd5fad0e (diff) | |
download | bcm5719-llvm-5299cc58cb04d541278807e4e9f6978d120f5e0e.tar.gz bcm5719-llvm-5299cc58cb04d541278807e4e9f6978d120f5e0e.zip |
Correctly handle the when we the 'G' packet fails. There were
cases where we were returning no error even though this packet
was failing.
llvm-svn: 139981
-rw-r--r-- | lldb/tools/debugserver/source/RNBRemote.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lldb/tools/debugserver/source/RNBRemote.cpp b/lldb/tools/debugserver/source/RNBRemote.cpp index 2fb079fbcc0..2b265ed70fd 100644 --- a/lldb/tools/debugserver/source/RNBRemote.cpp +++ b/lldb/tools/debugserver/source/RNBRemote.cpp @@ -2480,7 +2480,8 @@ RNBRemote::HandlePacket_G (const char *p) std::vector<uint8_t> reg_ctx; reg_ctx.resize(reg_ctx_size); - if (packet.GetHexBytes (®_ctx[0], reg_ctx.size(), 0xcc) == reg_ctx.size()) + const nub_size_t bytes_extracted = packet.GetHexBytes (®_ctx[0], reg_ctx.size(), 0xcc); + if (bytes_extracted == reg_ctx.size()) { // Now write the register context reg_ctx_size = DNBThreadSetRegisterContext(pid, tid, reg_ctx.data(), reg_ctx.size()); @@ -2489,7 +2490,14 @@ RNBRemote::HandlePacket_G (const char *p) else return SendPacket ("E55"); } + else + { + DNBLogError("RNBRemote::HandlePacket_G(%s): extracted %zu of %zu bytes, size mismatch\n", p, bytes_extracted, reg_ctx_size); + return SendPacket ("E64"); + } } + else + return SendPacket ("E65"); } |