From b15607dc351bd7787b85751bce9bbddc0a705461 Mon Sep 17 00:00:00 2001 From: Glenn Smith Date: Tue, 7 Jun 2022 21:51:27 -0400 Subject: Add Dump() to *LILInstruction --- lowlevelilinstruction.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'lowlevelilinstruction.cpp') diff --git a/lowlevelilinstruction.cpp b/lowlevelilinstruction.cpp index fe386e8d..b7277831 100644 --- a/lowlevelilinstruction.cpp +++ b/lowlevelilinstruction.cpp @@ -18,6 +18,7 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS // IN THE SOFTWARE. +#include #ifdef BINARYNINJACORE_LIBRARY #include "lowlevelilfunction.h" #include "lowlevelilssafunction.h" @@ -1744,6 +1745,38 @@ MediumLevelILInstruction LowLevelILInstructionBase::GetMappedMediumLevelIL() con } +char* LowLevelILInstructionBase::Dump() const +{ + vector tokens; +#ifdef BINARYNINJACORE_LIBRARY + bool success = function->GetExprText(function->GetFunction(), function->GetArchitecture(), *this, tokens); +#else + bool success = function->GetExprText(function->GetArchitecture(), exprIndex, tokens); +#endif + if (success) + { + string text; + if (exprIndex != BN_INVALID_EXPR && (exprIndex & 0xffff000000000000) == 0) + { + text += "[expr " + to_string(exprIndex) + "] "; + } + if (instructionIndex != BN_INVALID_EXPR && (instructionIndex & 0xffff000000000000) == 0) + { + text += "[instr " + to_string(instructionIndex) + "] "; + } + for (auto& token: tokens) + { + text += token.text; + } + return strdup(text.c_str()); + } + else + { + return strdup("???"); + } +} + + void LowLevelILInstructionBase::Replace(ExprId expr) { function->ReplaceExpr(exprIndex, expr); -- cgit v1.3.1