amccarth created this revision. amccarth added a reviewer: jasonmolenda. Problem discovered in the breakpoint lit test, but probably exists in others.
lldb-test splits lines on LF. Input files that are CR+LF separated (as is common on Windows) then resulted in commands being sent to LLDB that ended in CR, which confused the command interpreter. This could be fixed at different levels: 1. Treat '\r' like a tab or space in the argument splitter. 2. Fix the line splitters (plural) in lldb-test. 3. Normalize the test files to LF only. If we did only 3, I'd expect similar problems to recur, so this patch does 1 and 2. I may also do 3 in a separate patch later, but that's tricky because I believe we have some input files that MUST use CR+LF. https://reviews.llvm.org/D62759 Files: lldb/source/Utility/Args.cpp lldb/tools/lldb-test/lldb-test.cpp Index: lldb/tools/lldb-test/lldb-test.cpp =================================================================== --- lldb/tools/lldb-test/lldb-test.cpp +++ lldb/tools/lldb-test/lldb-test.cpp @@ -312,7 +312,7 @@ while (!Rest.empty()) { StringRef Line; std::tie(Line, Rest) = Rest.split('\n'); - Line = Line.ltrim(); + Line = Line.ltrim().rtrim(); if (Line.empty() || Line[0] == '#') continue; @@ -939,7 +939,7 @@ while (!Rest.empty()) { StringRef Line; std::tie(Line, Rest) = Rest.split('\n'); - Line = Line.ltrim(); + Line = Line.ltrim().rtrim(); if (Line.empty() || Line[0] == '#') continue; Index: lldb/source/Utility/Args.cpp =================================================================== --- lldb/source/Utility/Args.cpp +++ lldb/source/Utility/Args.cpp @@ -95,7 +95,7 @@ bool arg_complete = false; do { // Skip over over regular characters and append them. - size_t regular = command.find_first_of(" \t\"'`\\"); + size_t regular = command.find_first_of(" \t\r\"'`\\"); arg += command.substr(0, regular); command = command.substr(regular); @@ -123,6 +123,7 @@ case ' ': case '\t': + case '\r': // We are not inside any quotes, we just found a space after an argument. // We are done. arg_complete = true;
Index: lldb/tools/lldb-test/lldb-test.cpp =================================================================== --- lldb/tools/lldb-test/lldb-test.cpp +++ lldb/tools/lldb-test/lldb-test.cpp @@ -312,7 +312,7 @@ while (!Rest.empty()) { StringRef Line; std::tie(Line, Rest) = Rest.split('\n'); - Line = Line.ltrim(); + Line = Line.ltrim().rtrim(); if (Line.empty() || Line[0] == '#') continue; @@ -939,7 +939,7 @@ while (!Rest.empty()) { StringRef Line; std::tie(Line, Rest) = Rest.split('\n'); - Line = Line.ltrim(); + Line = Line.ltrim().rtrim(); if (Line.empty() || Line[0] == '#') continue; Index: lldb/source/Utility/Args.cpp =================================================================== --- lldb/source/Utility/Args.cpp +++ lldb/source/Utility/Args.cpp @@ -95,7 +95,7 @@ bool arg_complete = false; do { // Skip over over regular characters and append them. - size_t regular = command.find_first_of(" \t\"'`\\"); + size_t regular = command.find_first_of(" \t\r\"'`\\"); arg += command.substr(0, regular); command = command.substr(regular); @@ -123,6 +123,7 @@ case ' ': case '\t': + case '\r': // We are not inside any quotes, we just found a space after an argument. // We are done. arg_complete = true;
_______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits