summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lldb/source/API/CMakeLists.txt5
-rw-r--r--lldb/source/Plugins/ScriptInterpreter/Python/CMakeLists.txt27
-rw-r--r--lldb/unittests/ScriptInterpreter/Python/CMakeLists.txt2
-rw-r--r--lldb/unittests/ScriptInterpreter/Python/PythonTestSuite.cpp187
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;
+}
OpenPOWER on IntegriCloud