Index: include/lldb/API/SBTarget.h =================================================================== --- include/lldb/API/SBTarget.h +++ include/lldb/API/SBTarget.h @@ -821,30 +821,16 @@ SBSourceManager GetSourceManager(); lldb::SBInstructionList ReadInstructions(lldb::SBAddress base_addr, - uint32_t count); - - lldb::SBInstructionList ReadInstructions(lldb::SBAddress base_addr, uint32_t count, - const char *flavor_string); + const char *flavor_string = nullptr); lldb::SBInstructionList GetInstructions(lldb::SBAddress base_addr, - const void *buf, size_t size); - - // The "WithFlavor" is necessary to keep SWIG from getting confused about - // overloaded arguments when using the buf + size -> Python Object magic. - - lldb::SBInstructionList GetInstructionsWithFlavor(lldb::SBAddress base_addr, - const char *flavor_string, - const void *buf, - size_t size); + const void *buf, size_t size, + const char *flavor_string = nullptr); lldb::SBInstructionList GetInstructions(lldb::addr_t base_addr, - const void *buf, size_t size); - - lldb::SBInstructionList GetInstructionsWithFlavor(lldb::addr_t base_addr, - const char *flavor_string, - const void *buf, - size_t size); + const void *buf, size_t size, + const char *flavor_string = nullptr); lldb::SBSymbolContextList FindSymbols(const char *name, lldb::SymbolType type = eSymbolTypeAny); Index: scripts/Python/python-typemaps.swig =================================================================== --- scripts/Python/python-typemaps.swig +++ scripts/Python/python-typemaps.swig @@ -139,30 +139,9 @@ // typemap for an outgoing buffer // See also SBEvent::SBEvent(uint32_t event, const char *cstr, uint32_t cstr_len). -%typemap(in) (const char *cstr, uint32_t cstr_len) { - using namespace lldb_private; - if (PythonString::Check($input)) { - PythonString str(PyRefType::Borrowed, $input); - $1 = (char*)str.GetString().data(); - $2 = str.GetSize(); - } - else if(PythonByteArray::Check($input)) { - PythonByteArray bytearray(PyRefType::Borrowed, $input); - $1 = (char*)bytearray.GetBytes().data(); - $2 = bytearray.GetSize(); - } - else if (PythonBytes::Check($input)) { - PythonBytes bytes(PyRefType::Borrowed, $input); - $1 = (char*)bytes.GetBytes().data(); - $2 = bytes.GetSize(); - } - else { - PyErr_SetString(PyExc_ValueError, "Expecting a string"); - return NULL; - } -} // Ditto for SBProcess::PutSTDIN(const char *src, size_t src_len). -%typemap(in) (const char *src, size_t src_len) { +%typemap(in) (const char *cstr, uint32_t cstr_len), + (const char *src, size_t src_len) { using namespace lldb_private; if (PythonString::Check($input)) { PythonString str(PyRefType::Borrowed, $input); @@ -184,8 +163,9 @@ return NULL; } } -// And SBProcess::WriteMemory. -%typemap(in) (const void *buf, size_t size) { +// For SBProcess::WriteMemory, SBTarget::GetInstructions and SBDebugger::DispatchInput. +%typemap(in) (const void *buf, size_t size), + (const void *data, size_t data_len) { using namespace lldb_private; if (PythonString::Check($input)) { PythonString str(PyRefType::Borrowed, $input); @@ -207,29 +187,10 @@ return NULL; } } - -// For SBDebugger::DispatchInput -%typemap(in) (const void *data, size_t data_len) { - using namespace lldb_private; - if (PythonString::Check($input)) { - PythonString str(PyRefType::Borrowed, $input); - $1 = (void*)str.GetString().data(); - $2 = str.GetSize(); - } - else if(PythonByteArray::Check($input)) { - PythonByteArray bytearray(PyRefType::Borrowed, $input); - $1 = (void*)bytearray.GetBytes().data(); - $2 = bytearray.GetSize(); - } - else if (PythonBytes::Check($input)) { - PythonBytes bytes(PyRefType::Borrowed, $input); - $1 = (void*)bytes.GetBytes().data(); - $2 = bytes.GetSize(); - } - else { - PyErr_SetString(PyExc_ValueError, "Expecting a buffer"); - return NULL; - } +// For SBTarget::GetInstructions. +// Required when we have deal with overloaded functions. +%typemap(typecheck) (const void *buf, size_t size) { + $1 = ($input == Py_None) ? 0 : 1; } // typemap for an incoming buffer Index: scripts/interface/SBTarget.i =================================================================== --- scripts/interface/SBTarget.i +++ scripts/interface/SBTarget.i @@ -976,33 +976,19 @@ Returns an SBInstructionList.") ReadInstructions; lldb::SBInstructionList - ReadInstructions (lldb::SBAddress base_addr, uint32_t count); - - lldb::SBInstructionList - ReadInstructions (lldb::SBAddress base_addr, uint32_t count, const char *flavor_string); - - %feature("docstring", " - Disassemble the bytes in a buffer and return them in an SBInstructionList. - Parameters: - base_addr -- used for symbolicating the offsets in the byte stream when disassembling - buf -- bytes to be disassembled - size -- (C++) size of the buffer - Returns an SBInstructionList.") - GetInstructions; - lldb::SBInstructionList - GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size); + ReadInstructions (lldb::SBAddress base_addr, uint32_t count, const char *flavor_string = nullptr); %feature("docstring", " Disassemble the bytes in a buffer and return them in an SBInstructionList, with a supplied flavor. Parameters: base_addr -- used for symbolicating the offsets in the byte stream when disassembling - flavor -- may be 'intel' or 'att' on x86 targets to specify that style of disassembly buf -- bytes to be disassembled size -- (C++) size of the buffer - Returns an SBInstructionList.") - GetInstructionsWithFlavor; + flavor -- may be 'intel' or 'att' on x86 targets to specify that style of disassembly + Returns an SBInstructionList.") + GetInstructions; lldb::SBInstructionList - GetInstructionsWithFlavor (lldb::SBAddress base_addr, const char *flavor_string, const void *buf, size_t size); + GetInstructions (lldb::SBAddress base_addr, const void *buf, size_t size, const char *flavor_string = nullptr); lldb::SBSymbolContextList FindSymbols (const char *name, lldb::SymbolType type = eSymbolTypeAny); Index: source/API/SBTarget.cpp =================================================================== --- source/API/SBTarget.cpp +++ source/API/SBTarget.cpp @@ -1967,11 +1967,6 @@ } lldb::SBInstructionList SBTarget::ReadInstructions(lldb::SBAddress base_addr, - uint32_t count) { - return ReadInstructions(base_addr, count, NULL); -} - -lldb::SBInstructionList SBTarget::ReadInstructions(lldb::SBAddress base_addr, uint32_t count, const char *flavor_string) { SBInstructionList sb_instructions; @@ -2000,15 +1995,8 @@ } lldb::SBInstructionList SBTarget::GetInstructions(lldb::SBAddress base_addr, - const void *buf, - size_t size) { - return GetInstructionsWithFlavor(base_addr, NULL, buf, size); -} - -lldb::SBInstructionList -SBTarget::GetInstructionsWithFlavor(lldb::SBAddress base_addr, - const char *flavor_string, const void *buf, - size_t size) { + const void *buf, size_t size, + const char *flavor_string) { SBInstructionList sb_instructions; TargetSP target_sp(GetSP()); @@ -2029,18 +2017,10 @@ } lldb::SBInstructionList SBTarget::GetInstructions(lldb::addr_t base_addr, - const void *buf, - size_t size) { - return GetInstructionsWithFlavor(ResolveLoadAddress(base_addr), NULL, buf, - size); -} - -lldb::SBInstructionList -SBTarget::GetInstructionsWithFlavor(lldb::addr_t base_addr, - const char *flavor_string, const void *buf, - size_t size) { - return GetInstructionsWithFlavor(ResolveLoadAddress(base_addr), flavor_string, - buf, size); + const void *buf, size_t size, + const char *flavor_string) { + return GetInstructions( + ResolveLoadAddress(base_addr), buf, size, flavor_string); } SBError SBTarget::SetSectionLoadAddress(lldb::SBSection section,