Add functions to look up debugger by id Add global variable to lldb python module, to hold debugger id Modify embedded Python interpreter to update the global variable with the id of its current debugger. Modify the char ** typemap definition in lldb.swig to accept 'None' (for NULL) as a valid value. The point of all this is so that, when you drop into the embedded interpreter from the command interpreter (or when doing Python-based breakpoint commands), there is a way for the Python side to find/get the correct debugger instance ( by checking debugger_unique_id, then calling SBDebugger::FindDebuggerWithID on it). llvm-svn: 107287
155 lines
3.9 KiB
Plaintext
155 lines
3.9 KiB
Plaintext
/*
|
|
lldb.swig
|
|
|
|
Created by Caroline Tice 1/18/2010
|
|
|
|
This is the input file for SWIG, to create the appropriate C++ wrappers and
|
|
functions for various scripting languages, to enable them to call the
|
|
liblldb Script Bridge functions.
|
|
|
|
*/
|
|
|
|
/* The name of the module to be created. */
|
|
|
|
%module lldb
|
|
|
|
%typemap(in) lldb::ReturnStatus {
|
|
$1 = (int) $input;
|
|
}
|
|
|
|
%typemap(freearg) lldb::ReturnStatus {
|
|
}
|
|
|
|
%typemap(out) lldb::ReturnStatus {
|
|
$result = SWIG_From_unsigned_SS_int(static_cast< unsigned int >($1));
|
|
}
|
|
|
|
/* Typemap definitions, to allow SWIG to properly handle 'char**' data types. */
|
|
|
|
%typemap(in) char ** {
|
|
/* Check if is a list */
|
|
if (PyList_Check($input)) {
|
|
int size = PyList_Size($input);
|
|
int i = 0;
|
|
$1 = (char **) malloc((size+1) * sizeof(char));
|
|
for (i = 0; i < size; i++) {
|
|
PyObject *o = PyList_GetItem($input,i);
|
|
if (PyString_Check(o))
|
|
$1[i] = PyString_AsString(PyList_GetItem($input,i));
|
|
else {
|
|
PyErr_SetString(PyExc_TypeError,"list must contain strings");
|
|
free($1);
|
|
return NULL;
|
|
}
|
|
}
|
|
$1[i] = 0;
|
|
} else if ($input == Py_None) {
|
|
$1 = NULL;
|
|
} else {
|
|
PyErr_SetString(PyExc_TypeError,"not a list");
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
%typemap(freearg) char** {
|
|
free((char *) $1);
|
|
}
|
|
|
|
%typemap(out) char** {
|
|
int len;
|
|
int i;
|
|
len = 0;
|
|
while ($1[len]) len++;
|
|
$result = PyList_New(len);
|
|
for (i = 0; i < len; i++) {
|
|
PyList_SetItem($result, i, PyString_FromString($1[i]));
|
|
}
|
|
}
|
|
|
|
|
|
/* The liblldb header files to be included. */
|
|
|
|
%{
|
|
#include "lldb/lldb-types.h"
|
|
#include "lldb/API/SBAddress.h"
|
|
#include "lldb/API/SBBlock.h"
|
|
#include "lldb/API/SBBreakpoint.h"
|
|
#include "lldb/API/SBBreakpointLocation.h"
|
|
#include "lldb/API/SBBroadcaster.h"
|
|
#include "lldb/API/SBCommandContext.h"
|
|
#include "lldb/API/SBCommandInterpreter.h"
|
|
#include "lldb/API/SBCommandReturnObject.h"
|
|
#include "lldb/API/SBCompileUnit.h"
|
|
#include "lldb/API/SBDebugger.h"
|
|
#include "lldb/API/SBError.h"
|
|
#include "lldb/API/SBEvent.h"
|
|
#include "lldb/API/SBFrame.h"
|
|
#include "lldb/API/SBFunction.h"
|
|
#include "lldb/API/SBLineEntry.h"
|
|
#include "lldb/API/SBListener.h"
|
|
#include "lldb/API/SBModule.h"
|
|
#include "lldb/API/SBProcess.h"
|
|
#include "lldb/API/SBSourceManager.h"
|
|
#include "lldb/API/SBStringList.h"
|
|
#include "lldb/API/SBSymbol.h"
|
|
#include "lldb/API/SBSymbolContext.h"
|
|
#include "lldb/API/SBTarget.h"
|
|
#include "lldb/API/SBThread.h"
|
|
#include "lldb/API/SBType.h"
|
|
#include "lldb/API/SBValue.h"
|
|
using namespace lldb_private;
|
|
%}
|
|
|
|
/* Various liblldb typedefs that SWIG needs to know about. */
|
|
|
|
%{
|
|
typedef unsigned int uint32_t;
|
|
typedef int int32_t;
|
|
typedef uint32_t tid_t;
|
|
typedef uint64_t addr_t;
|
|
typedef int32_t break_id_t;
|
|
typedef lldb::SBStringList SBStringList;
|
|
typedef lldb::RegisterKind RegisterKind;
|
|
const RegisterKind kNumRegisterKinds = lldb::kNumRegisterKinds ;
|
|
%}
|
|
|
|
typedef unsigned int uint32_t;
|
|
typedef int int32_t;
|
|
typedef uint32_t tid_t;
|
|
typedef uint64_t addr_t;
|
|
typedef int32_t break_id_t;
|
|
typedef lldb::SBStringList SBStringList;
|
|
typedef lldb::RegisterKind RegisterKind;
|
|
const RegisterKind kNumRegisterKinds = lldb::kNumRegisterKinds ;
|
|
|
|
|
|
%include "lldb/API/SBAddress.h"
|
|
%include "lldb/API/SBBlock.h"
|
|
%include "lldb/API/SBBreakpoint.h"
|
|
%include "lldb/API/SBBreakpointLocation.h"
|
|
%include "lldb/API/SBBroadcaster.h"
|
|
%include "lldb/API/SBCommandContext.h"
|
|
%include "lldb/API/SBCommandInterpreter.h"
|
|
%include "lldb/API/SBCommandReturnObject.h"
|
|
%include "lldb/API/SBCompileUnit.h"
|
|
%include "lldb/API/SBDebugger.h"
|
|
%include "lldb/API/SBError.h"
|
|
%include "lldb/API/SBEvent.h"
|
|
%include "lldb/API/SBFrame.h"
|
|
%include "lldb/API/SBFunction.h"
|
|
%include "lldb/API/SBLineEntry.h"
|
|
%include "lldb/API/SBListener.h"
|
|
%include "lldb/API/SBModule.h"
|
|
%include "lldb/API/SBProcess.h"
|
|
%include "lldb/API/SBSourceManager.h"
|
|
%include "lldb/API/SBStringList.h"
|
|
%include "lldb/API/SBSymbol.h"
|
|
%include "lldb/API/SBSymbolContext.h"
|
|
%include "lldb/API/SBTarget.h"
|
|
%include "lldb/API/SBThread.h"
|
|
%include "lldb/API/SBType.h"
|
|
%include "lldb/API/SBValue.h"
|
|
%include "lldb/lldb-types.h"
|
|
|
|
|