llvm-project/lldb
Pavel Labath 5a84123490 gdb-remote: Fix checksum verification for messages with escape chars
Summary:
We've had a mismatch in the checksum computation between the sender and
receiver. The sender computed the payload checksum using the wire
encoding of the packet, while the receiver did this after expanding
un-escaping and expanding run-length-encoded sequences. This resulted in
communication breakdown if packets using these feature were sent in the
ack mode.

Normally, this did not cause any issues since the only packet we send in
the ack-mode is the QStartNoAckMode packet, but I ran into this when
debugging the lldb-server tests which (for better or worse) don't use
this mode.

According to the gdb-remote documentation "The two-digit checksum is computed as
the modulo 256 sum of all characters between the leading ‘$’ and the
trailing ‘#’", it seems that our sender is doing the right thing here.
Therefore, I fix the receiver the match the sender behavior and add a
test.

With this bug fixed, we can see that lldb-server is sending a stop-reply
after receiving the "k" in the same way as debugserver does (but we
weren't detecting this because at that point the connection was dead
already). I fix that expectation as well.

Reviewers: clayborg, jasonmolenda

Subscribers: mgorny, lldb-commits

Differential Revision: https://reviews.llvm.org/D44922

llvm-svn: 328693
2018-03-28 10:19:10 +00:00
..
cmake [cmake] Fix standalone+LLVM_LINK_LLVM_DYLIB builds (pr36687) 2018-03-14 10:08:21 +00:00
docs Compile the LLDB tests out-of-tree. 2018-01-30 18:29:16 +00:00
examples Fixed up to use a class for the commands, renamed the commands and added a way to just dump the compile unit full paths and optionally their support files with the new "dump-files"command. 2017-11-16 17:14:48 +00:00
include/lldb Use the DWARF linkage name when importing C++ methods. 2018-03-27 19:40:50 +00:00
lit [ExpressionParser] Re-implement r327356 in a less disruptive way. 2018-03-20 19:46:32 +00:00
lldb.xcodeproj Remove CommandObjectStats.cpp & CleanUpTest.cpp from 2018-03-23 23:32:16 +00:00
lldb.xcworkspace Revert r275223, which committed the wrong thing. 2016-07-12 23:31:42 +00:00
packages/Python/lldbsuite Use the DWARF linkage name when importing C++ methods. 2018-03-27 19:40:50 +00:00
resources
scripts Fix the install location of LLDBWrapPython.cpp when building 2018-03-05 21:08:42 +00:00
source gdb-remote: Fix checksum verification for messages with escape chars 2018-03-28 10:19:10 +00:00
test [dotest] Use subprocess.call to forward arguments in wrapper 2018-03-21 11:13:56 +00:00
third_party/Python/module *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00
tools Add the same new entitlement from r326399 to 2018-03-26 23:13:17 +00:00
unittests gdb-remote: Fix checksum verification for messages with escape chars 2018-03-28 10:19:10 +00:00
utils *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00
www Add a suggestion to convert dotest tests to use run_to_source_breakpoint. 2018-03-20 02:15:23 +00:00
.arcconfig Upgrade all the .arcconfigs to https. 2016-07-14 13:15:37 +00:00
.clang-format Updated .clang-format rules so bring LLDB in line with LLVM standards. 2016-09-06 17:19:00 +00:00
.gitignore [dotest] Remove crashinfo hook 2018-01-10 10:18:47 +00:00
CMakeLists.txt [lit] Update how clang and other binaries are found in per-configuration directories 2018-02-21 00:05:51 +00:00
CODE_OWNERS.txt Remove Sean Callanan from the CODE_OWNERS, he won't have time 2017-11-01 01:38:42 +00:00
INSTALL.txt Changed builld-llvm.py to use .json files 2017-02-23 02:21:34 +00:00
LICENSE.TXT
use_lldb_suite_root.py *** This commit represents a complete reformatting of the LLDB source code 2016-09-06 20:57:50 +00:00