[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 ```
This commit is contained in:
parent
144736b07e
commit
00ffd8b8aa
@ -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",
|
||||
|
||||
@ -56,6 +56,16 @@ class TestCase(PExpectTest):
|
||||
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user