This patch introduces a new scripting affordance in lldb: `ScriptedFrame`. This allows user to produce mock stackframes in scripted threads and scripted processes from a python script. With this change, StackFrame can be synthetized from different sources: - Either from a dictionary containing a load address, and a frame index, which is the legacy way. - Or by creating a ScriptedFrame python object. One particularity of synthezising stackframes from the ScriptedFrame python object, is that these frame have an optional PC, meaning that they don't have a report a valid PC and they can act as shells that just contain static information, like the frame function name, the list of variables or registers, etc. It can also provide a symbol context. rdar://157260006 Signed-off-by: Med Ismail Bennani <ismail@bennani.ma> Signed-off-by: Med Ismail Bennani <ismail@bennani.ma>
46 lines
1.2 KiB
CMake
46 lines
1.2 KiB
CMake
if (APPLE AND LLVM_ENABLE_LOCAL_SUBMODULE_VISIBILITY)
|
|
# Work around an issue with the Python headers, which have a modular include
|
|
# inside an extern "C" block.
|
|
remove_module_flags()
|
|
endif()
|
|
|
|
if(NOT LLDB_PYTHON_RELATIVE_PATH)
|
|
message(FATAL_ERROR "LLDB_PYTHON_RELATIVE_PATH is not set.")
|
|
endif()
|
|
add_definitions(-DLLDB_PYTHON_RELATIVE_LIBDIR="${LLDB_PYTHON_RELATIVE_PATH}")
|
|
|
|
if(NOT LLDB_PYTHON_EXE_RELATIVE_PATH)
|
|
message(FATAL_ERROR "LLDB_PYTHON_EXE_RELATIVE_PATH is not set.")
|
|
endif()
|
|
add_definitions(-DLLDB_PYTHON_EXE_RELATIVE_PATH="${LLDB_PYTHON_EXE_RELATIVE_PATH}")
|
|
|
|
|
|
if (LLDB_ENABLE_LIBEDIT)
|
|
list(APPEND LLDB_LIBEDIT_LIBS LibEdit::LibEdit)
|
|
endif()
|
|
|
|
add_lldb_library(lldbPluginScriptInterpreterPythonInterfaces PLUGIN
|
|
OperatingSystemPythonInterface.cpp
|
|
ScriptInterpreterPythonInterfaces.cpp
|
|
ScriptedFramePythonInterface.cpp
|
|
ScriptedPlatformPythonInterface.cpp
|
|
ScriptedProcessPythonInterface.cpp
|
|
ScriptedPythonInterface.cpp
|
|
ScriptedStopHookPythonInterface.cpp
|
|
ScriptedBreakpointPythonInterface.cpp
|
|
ScriptedThreadPlanPythonInterface.cpp
|
|
ScriptedThreadPythonInterface.cpp
|
|
|
|
LINK_COMPONENTS
|
|
Support
|
|
LINK_LIBS
|
|
lldbCore
|
|
lldbHost
|
|
lldbInterpreter
|
|
lldbTarget
|
|
${Python3_LIBRARIES}
|
|
${LLDB_LIBEDIT_LIBS}
|
|
)
|
|
|
|
|