summaryrefslogtreecommitdiffstats
path: root/lldb/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/scripts')
-rw-r--r--lldb/scripts/Python/python-wrapper.swig17
-rw-r--r--lldb/scripts/interface/SBBreakpoint.i8
-rw-r--r--lldb/scripts/interface/SBBreakpointLocation.i11
-rw-r--r--lldb/scripts/interface/SBBreakpointName.i4
4 files changed, 37 insertions, 3 deletions
diff --git a/lldb/scripts/Python/python-wrapper.swig b/lldb/scripts/Python/python-wrapper.swig
index 8bb74647741..b7af3422193 100644
--- a/lldb/scripts/Python/python-wrapper.swig
+++ b/lldb/scripts/Python/python-wrapper.swig
@@ -45,7 +45,8 @@ LLDBSwigPythonBreakpointCallbackFunction
const char *python_function_name,
const char *session_dictionary_name,
const lldb::StackFrameSP& frame_sp,
- const lldb::BreakpointLocationSP& bp_loc_sp
+ const lldb::BreakpointLocationSP& bp_loc_sp,
+ lldb_private::StructuredDataImpl *args_impl
)
{
lldb::SBFrame sb_frame (frame_sp);
@@ -62,7 +63,19 @@ LLDBSwigPythonBreakpointCallbackFunction
PythonObject frame_arg(PyRefType::Owned, SBTypeToSWIGWrapper(sb_frame));
PythonObject bp_loc_arg(PyRefType::Owned, SBTypeToSWIGWrapper(sb_bp_loc));
- PythonObject result = pfunc(frame_arg, bp_loc_arg, dict);
+
+ PythonObject result;
+ // If the called function doesn't take extra_args, drop them here:
+ auto arg_info = pfunc.GetNumArguments();
+ if (arg_info.count == 3)
+ result = pfunc(frame_arg, bp_loc_arg, dict);
+ else if (arg_info.count == 4) {
+ lldb::SBStructuredData *args_value = new lldb::SBStructuredData(args_impl);
+ PythonObject args_arg(PyRefType::Owned, SBTypeToSWIGWrapper(args_value));
+ result = pfunc(frame_arg, bp_loc_arg, args_arg, dict);
+ } else {
+ return stop_at_breakpoint;
+ }
if (result.get() == Py_False)
stop_at_breakpoint = false;
diff --git a/lldb/scripts/interface/SBBreakpoint.i b/lldb/scripts/interface/SBBreakpoint.i
index 6df0b958085..a33aeea40b7 100644
--- a/lldb/scripts/interface/SBBreakpoint.i
+++ b/lldb/scripts/interface/SBBreakpoint.i
@@ -180,6 +180,14 @@ public:
SetScriptCallbackFunction (const char *callback_function_name);
%feature("docstring", "
+ Set the name of the script function to be called when the breakpoint is hit.
+ To use this variant, the function should take (frame, bp_loc, extra_args, dict) and
+ when the breakpoint is hit the extra_args will be passed to the callback function.") SetScriptCallbackFunction;
+ SBError
+ SetScriptCallbackFunction (const char *callback_function_name,
+ SBStructuredData &extra_args);
+
+ %feature("docstring", "
Provide the body for the script function to be called when the breakpoint is hit.
The body will be wrapped in a function, which be passed two arguments:
'frame' - which holds the bottom-most SBFrame of the thread that hit the breakpoint
diff --git a/lldb/scripts/interface/SBBreakpointLocation.i b/lldb/scripts/interface/SBBreakpointLocation.i
index 90a23234862..44fd42b514f 100644
--- a/lldb/scripts/interface/SBBreakpointLocation.i
+++ b/lldb/scripts/interface/SBBreakpointLocation.i
@@ -73,11 +73,20 @@ public:
void SetAutoContinue(bool auto_continue);
%feature("docstring", "
- Set the callback to the given Python function name.") SetScriptCallbackFunction;
+ Set the callback to the given Python function name.
+ The function takes three arguments (frame, bp_loc, dict).") SetScriptCallbackFunction;
void
SetScriptCallbackFunction (const char *callback_function_name);
%feature("docstring", "
+ Set the name of the script function to be called when the breakpoint is hit.
+ To use this variant, the function should take (frame, bp_loc, extra_args, dict) and
+ when the breakpoint is hit the extra_args will be passed to the callback function.") SetScriptCallbackFunction;
+ SBError
+ SetScriptCallbackFunction (const char *callback_function_name,
+ SBStructuredData &extra_args);
+
+ %feature("docstring", "
Provide the body for the script function to be called when the breakpoint location is hit.
The body will be wrapped in a function, which be passed two arguments:
'frame' - which holds the bottom-most SBFrame of the thread that hit the breakpoint
diff --git a/lldb/scripts/interface/SBBreakpointName.i b/lldb/scripts/interface/SBBreakpointName.i
index 42dd4236338..2a06d0a2105 100644
--- a/lldb/scripts/interface/SBBreakpointName.i
+++ b/lldb/scripts/interface/SBBreakpointName.i
@@ -84,6 +84,10 @@ public:
void SetScriptCallbackFunction(const char *callback_function_name);
+ SBError
+ SetScriptCallbackFunction (const char *callback_function_name,
+ SBStructuredData &extra_args);
+
void SetCommandLineCommands(SBStringList &commands);
bool GetCommandLineCommands(SBStringList &commands);
OpenPOWER on IntegriCloud