diff options
4 files changed, 193 insertions, 28 deletions
diff --git a/lldb/source/API/CMakeLists.txt b/lldb/source/API/CMakeLists.txt index c5b7a9d2a4a..94c9e338f27 100644 --- a/lldb/source/API/CMakeLists.txt +++ b/lldb/source/API/CMakeLists.txt @@ -4,6 +4,11 @@ endif() get_property(LLDB_ALL_PLUGINS GLOBAL PROPERTY LLDB_PLUGINS) +if(NOT LLDB_DISABLE_PYTHON) + get_target_property(lldb_scripts_dir swig_wrapper BINARY_DIR) + set(lldb_python_wrapper ${lldb_scripts_dir}/LLDBWrapPython.cpp) +endif() + add_lldb_library(liblldb SHARED SBAddress.cpp SBAttachInfo.cpp diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt b/lldb/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt index 86ff4f689bd..56eacc941d6 100644 --- a/lldb/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt +++ b/lldb/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt @@ -11,16 +11,10 @@ if (NOT CMAKE_SYSTEM_NAME MATCHES "Windows") endif() endif() -if(NOT LLDB_DISABLE_PYTHON) - get_target_property(lldb_scripts_dir swig_wrapper BINARY_DIR) - set(lldb_python_wrapper ${lldb_scripts_dir}/LLDBWrapPython.cpp) -endif() - add_lldb_library(lldbPluginScriptInterpreterPython PLUGIN PythonDataObjects.cpp PythonExceptionState.cpp ScriptInterpreterPython.cpp - ${lldb_python_wrapper} LINK_LIBS lldbBreakpoint @@ -32,24 +26,3 @@ add_lldb_library(lldbPluginScriptInterpreterPython PLUGIN LINK_COMPONENTS Support ) - -if(lldb_python_wrapper) - add_dependencies(lldbPluginScriptInterpreterPython swig_wrapper) - - if (MSVC) - set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " /W0") - else() - set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING PROPERTY COMPILE_FLAGS " -w") - endif() - - set_source_files_properties(${lldb_python_wrapper} PROPERTIES GENERATED ON) - if (CLANG_CL) - set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING - PROPERTY COMPILE_FLAGS " -Wno-unused-function") - endif() - if (LLVM_COMPILER_IS_GCC_COMPATIBLE AND - NOT "${CMAKE_SYSTEM_NAME}" MATCHES "Darwin") - set_property(SOURCE ${lldb_python_wrapper} APPEND_STRING - PROPERTY COMPILE_FLAGS " -Wno-sequence-point -Wno-cast-qual") - endif () -endif() diff --git a/lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt b/lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt index ed8c86f6041..891ade25b76 100644 --- a/lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt +++ b/lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt @@ -7,7 +7,7 @@ add_lldb_unittest(ScriptInterpreterPythonTests lldbHost lldbPluginScriptInterpreterPython ${PYTHON_LIBRARY} - ${lldb_python_wrapper} LINK_COMPONENTS Support ) +
\ No newline at end of file diff --git a/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp b/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp index 26b8bafdd8d..27558aa6a06 100644 --- a/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp +++ b/lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp @@ -45,3 +45,190 @@ void PythonTestSuite::TearDown() { HostInfoBase::Terminate(); FileSystem::Terminate(); } + +// The following functions are the Pythonic implementations of the required +// callbacks. Because they're defined in libLLDB which we cannot link for the +// unit test, we have a 'default' implementation here. + +#if PY_MAJOR_VERSION >= 3 +extern "C" PyObject *PyInit__lldb(void) { return nullptr; } +#define LLDBSwigPyInit PyInit__lldb +#else +extern "C" void init_lldb(void) {} +#define LLDBSwigPyInit init_lldb +#endif + +extern "C" bool LLDBSwigPythonBreakpointCallbackFunction( + const char *python_function_name, const char *session_dictionary_name, + const lldb::StackFrameSP &sb_frame, + const lldb::BreakpointLocationSP &sb_bp_loc) { + return false; +} + +extern "C" bool LLDBSwigPythonWatchpointCallbackFunction( + const char *python_function_name, const char *session_dictionary_name, + const lldb::StackFrameSP &sb_frame, const lldb::WatchpointSP &sb_wp) { + return false; +} + +extern "C" bool LLDBSwigPythonCallTypeScript( + const char *python_function_name, void *session_dictionary, + const lldb::ValueObjectSP &valobj_sp, void **pyfunct_wrapper, + const lldb::TypeSummaryOptionsSP &options_sp, std::string &retval) { + return false; +} + +extern "C" void * +LLDBSwigPythonCreateSyntheticProvider(const char *python_class_name, + const char *session_dictionary_name, + const lldb::ValueObjectSP &valobj_sp) { + return nullptr; +} + +extern "C" void * +LLDBSwigPythonCreateCommandObject(const char *python_class_name, + const char *session_dictionary_name, + const lldb::DebuggerSP debugger_sp) { + return nullptr; +} + +extern "C" void *LLDBSwigPythonCreateScriptedThreadPlan( + const char *python_class_name, const char *session_dictionary_name, + const lldb::ThreadPlanSP &thread_plan_sp) { + return nullptr; +} + +extern "C" bool LLDBSWIGPythonCallThreadPlan(void *implementor, + const char *method_name, + Event *event_sp, bool &got_error) { + return false; +} + +extern "C" void *LLDBSwigPythonCreateScriptedBreakpointResolver( + const char *python_class_name, const char *session_dictionary_name, + lldb_private::StructuredDataImpl *args, lldb::BreakpointSP &bkpt_sp) { + return nullptr; +} + +extern "C" unsigned int +LLDBSwigPythonCallBreakpointResolver(void *implementor, const char *method_name, + lldb_private::SymbolContext *sym_ctx) { + return 0; +} + +extern "C" size_t LLDBSwigPython_CalculateNumChildren(void *implementor, + uint32_t max) { + return 0; +} + +extern "C" void *LLDBSwigPython_GetChildAtIndex(void *implementor, + uint32_t idx) { + return nullptr; +} + +extern "C" int LLDBSwigPython_GetIndexOfChildWithName(void *implementor, + const char *child_name) { + return 0; +} + +extern "C" void *LLDBSWIGPython_CastPyObjectToSBValue(void *data) { + return nullptr; +} + +extern lldb::ValueObjectSP +LLDBSWIGPython_GetValueObjectSPFromSBValue(void *data) { + return nullptr; +} + +extern "C" bool LLDBSwigPython_UpdateSynthProviderInstance(void *implementor) { + return false; +} + +extern "C" bool +LLDBSwigPython_MightHaveChildrenSynthProviderInstance(void *implementor) { + return false; +} + +extern "C" void * +LLDBSwigPython_GetValueSynthProviderInstance(void *implementor) { + return nullptr; +} + +extern "C" bool +LLDBSwigPythonCallCommand(const char *python_function_name, + const char *session_dictionary_name, + lldb::DebuggerSP &debugger, const char *args, + lldb_private::CommandReturnObject &cmd_retobj, + lldb::ExecutionContextRefSP exe_ctx_ref_sp) { + return false; +} + +extern "C" bool +LLDBSwigPythonCallCommandObject(void *implementor, lldb::DebuggerSP &debugger, + const char *args, + lldb_private::CommandReturnObject &cmd_retobj, + lldb::ExecutionContextRefSP exe_ctx_ref_sp) { + return false; +} + +extern "C" bool +LLDBSwigPythonCallModuleInit(const char *python_module_name, + const char *session_dictionary_name, + lldb::DebuggerSP &debugger) { + return false; +} + +extern "C" void * +LLDBSWIGPythonCreateOSPlugin(const char *python_class_name, + const char *session_dictionary_name, + const lldb::ProcessSP &process_sp) { + return nullptr; +} + +extern "C" void * +LLDBSWIGPython_CreateFrameRecognizer(const char *python_class_name, + const char *session_dictionary_name) { + return nullptr; +} + +extern "C" void * +LLDBSwigPython_GetRecognizedArguments(void *implementor, + const lldb::StackFrameSP &frame_sp) { + return nullptr; +} + +extern "C" bool LLDBSWIGPythonRunScriptKeywordProcess( + const char *python_function_name, const char *session_dictionary_name, + lldb::ProcessSP &process, std::string &output) { + return false; +} + +extern "C" bool LLDBSWIGPythonRunScriptKeywordThread( + const char *python_function_name, const char *session_dictionary_name, + lldb::ThreadSP &thread, std::string &output) { + return false; +} + +extern "C" bool LLDBSWIGPythonRunScriptKeywordTarget( + const char *python_function_name, const char *session_dictionary_name, + lldb::TargetSP &target, std::string &output) { + return false; +} + +extern "C" bool LLDBSWIGPythonRunScriptKeywordFrame( + const char *python_function_name, const char *session_dictionary_name, + lldb::StackFrameSP &frame, std::string &output) { + return false; +} + +extern "C" bool LLDBSWIGPythonRunScriptKeywordValue( + const char *python_function_name, const char *session_dictionary_name, + lldb::ValueObjectSP &value, std::string &output) { + return false; +} + +extern "C" void * +LLDBSWIGPython_GetDynamicSetting(void *module, const char *setting, + const lldb::TargetSP &target_sp) { + return nullptr; +} |