Author: Anutosh Bhat Date: 2025-08-19T09:51:20+05:30 New Revision: 00ffd8b8aa4e8cd3a2fee654d55995918886e874
URL: https://github.com/llvm/llvm-project/commit/00ffd8b8aa4e8cd3a2fee654d55995918886e874 DIFF: https://github.com/llvm/llvm-project/commit/00ffd8b8aa4e8cd3a2fee654d55995918886e874.diff LOG: [lldb] Fix error : unknown error while starting lldb's C/C++ repl (#153560) Fixes https://github.com/llvm/llvm-project/issues/153157 The proposed solution has been discussed here (https://github.com/llvm/llvm-project/issues/153157#issue-3313379242) This is what we would be seeing now ``` base) anutosh491@Anutoshs-MacBook-Air bin % ./lldb /Users/anutosh491/work/xeus-cpp/a.out (lldb) target create "/Users/anutosh491/work/xeus-cpp/a.out" Current executable set to '/Users/anutosh491/work/xeus-cpp/a.out' (arm64). (lldb) b main Breakpoint 1: where = a.out`main, address = 0x0000000100003f90 (lldb) r Process 71227 launched: '/Users/anutosh491/work/xeus-cpp/a.out' (arm64) Process 71227 stopped * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: 0x0000000100003f90 a.out`main a.out`main: -> 0x100003f90 <+0>: sub sp, sp, #0x10 0x100003f94 <+4>: str wzr, [sp, #0xc] 0x100003f98 <+8>: str w0, [sp, #0x8] 0x100003f9c <+12>: str x1, [sp] (lldb) expression --repl -l c -- 1> 1 + 1 (int) $0 = 2 2> 2 + 2 (int) $1 = 4 ``` ``` base) anutosh491@Anutoshs-MacBook-Air bin % ./lldb /Users/anutosh491/work/xeus-cpp/a.out (lldb) target create "/Users/anutosh491/work/xeus-cpp/a.out" Current executable set to '/Users/anutosh491/work/xeus-cpp/a.out' (arm64). (lldb) b main Breakpoint 1: where = a.out`main, address = 0x0000000100003f90 (lldb) r Process 71355 launched: '/Users/anutosh491/work/xeus-cpp/a.out' (arm64) Process 71355 stopped * thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1 frame #0: 0x0000000100003f90 a.out`main a.out`main: -> 0x100003f90 <+0>: sub sp, sp, #0x10 0x100003f94 <+4>: str wzr, [sp, #0xc] 0x100003f98 <+8>: str w0, [sp, #0x8] 0x100003f9c <+12>: str x1, [sp] (lldb) expression --repl -l c -- 3 + 3 Warning: trailing input is ignored in --repl mode 1> 1 + 1 (int) $0 = 2 ``` Added: Modified: lldb/source/Commands/CommandObjectExpression.cpp lldb/test/API/repl/clang/TestClangREPL.py Removed: ################################################################################ diff --git a/lldb/source/Commands/CommandObjectExpression.cpp b/lldb/source/Commands/CommandObjectExpression.cpp index 197bffe9c982f..41bc8abf4897f 100644 --- a/lldb/source/Commands/CommandObjectExpression.cpp +++ b/lldb/source/Commands/CommandObjectExpression.cpp @@ -640,9 +640,15 @@ void CommandObjectExpression::DoExecute(llvm::StringRef command, repl_sp->SetValueObjectDisplayOptions(m_varobj_options); } + if (!expr.empty()) { + result.GetOutputStream().Printf( + "Warning: trailing input is ignored in --repl mode\n"); + } + IOHandlerSP io_handler_sp(repl_sp->GetIOHandler()); io_handler_sp->SetIsDone(false); debugger.RunIOHandlerAsync(io_handler_sp); + return; } else { repl_error = Status::FromErrorStringWithFormat( "Couldn't create a REPL for %s", diff --git a/lldb/test/API/repl/clang/TestClangREPL.py b/lldb/test/API/repl/clang/TestClangREPL.py index 97d91d1b8f7a5..3152018865b1e 100644 --- a/lldb/test/API/repl/clang/TestClangREPL.py +++ b/lldb/test/API/repl/clang/TestClangREPL.py @@ -56,6 +56,16 @@ def test_basic_completion(self): self.quit() + # Re-enter the REPL with trailing input to trigger warning. + self.child.send("expression --repl -l c -- 3 + 3\n") + self.child.expect_exact("Warning: trailing input is ignored in --repl mode\n") + self.child.expect_exact("1>") + + # Evaluate another expression after warning. + self.expect_repl("4 + 4", substrs=["(int) $3 = 8"]) + + self.quit() + # PExpect uses many timeouts internally and doesn't play well # under ASAN on a loaded machine.. @skipIfAsan _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits