Reland "[lldb] Implement basic support for reverse-continue" (#125242)
commit7e66cf74fb4e6a103f923e34700a7b6f20ac2a9b
authorDavid Spickett <david.spickett@linaro.org>
Fri, 31 Jan 2025 15:56:33 +0000 (31 15:56 +0000)
committerGitHub <noreply@github.com>
Fri, 31 Jan 2025 15:56:33 +0000 (31 15:56 +0000)
tree3f36172b709672dcfe7558bbdfd10b6c795d560f
parent0d63a3d7572039095fabeadc7f1370da7dfa0d1b
Reland "[lldb] Implement basic support for reverse-continue" (#125242)

This reverts commit a774de807e56c1147d4630bfec3110c11d41776e.

This is the same changes as last time, plus:
* We load the binary into the target object so that on Windows, we can
resolve the locations of the functions.
* We now assert that each required breakpoint has at least 1 location,
to prevent an issue like that in the future.
* We are less strict about the unsupported error message, because it
prints "error: windows" on Windows instead of "error: gdb-remote".
40 files changed:
lldb/include/lldb/API/SBProcess.h
lldb/include/lldb/Target/Process.h
lldb/include/lldb/Target/StopInfo.h
lldb/include/lldb/Target/Thread.h
lldb/include/lldb/Target/ThreadList.h
lldb/include/lldb/Target/ThreadPlan.h
lldb/include/lldb/Target/ThreadPlanBase.h
lldb/include/lldb/lldb-enumerations.h
lldb/packages/Python/lldbsuite/test/gdbclientutils.py
lldb/packages/Python/lldbsuite/test/lldbgdbproxy.py [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lldbreverse.py [new file with mode: 0644]
lldb/packages/Python/lldbsuite/test/lldbtest.py
lldb/packages/Python/lldbsuite/test/tools/lldb-server/lldbgdbserverutils.py
lldb/source/API/SBProcess.cpp
lldb/source/API/SBThread.cpp
lldb/source/Interpreter/CommandInterpreter.cpp
lldb/source/Plugins/Process/Linux/NativeThreadLinux.cpp
lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.cpp
lldb/source/Plugins/Process/MacOSX-Kernel/ProcessKDP.h
lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
lldb/source/Plugins/Process/Windows/Common/ProcessWindows.h
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.h
lldb/source/Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.cpp
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.cpp
lldb/source/Plugins/Process/gdb-remote/ProcessGDBRemote.h
lldb/source/Plugins/Process/scripted/ScriptedProcess.cpp
lldb/source/Plugins/Process/scripted/ScriptedProcess.h
lldb/source/Target/Process.cpp
lldb/source/Target/StopInfo.cpp
lldb/source/Target/Thread.cpp
lldb/source/Target/ThreadList.cpp
lldb/source/Target/ThreadPlanBase.cpp
lldb/test/API/functionalities/reverse-execution/Makefile [new file with mode: 0644]
lldb/test/API/functionalities/reverse-execution/TestReverseContinueBreakpoints.py [new file with mode: 0644]
lldb/test/API/functionalities/reverse-execution/TestReverseContinueNotSupported.py [new file with mode: 0644]
lldb/test/API/functionalities/reverse-execution/TestReverseContinueWatchpoints.py [new file with mode: 0644]
lldb/test/API/functionalities/reverse-execution/main.c [new file with mode: 0644]
lldb/tools/lldb-dap/JSONUtils.cpp
lldb/tools/lldb-dap/LLDBUtils.cpp