summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2019-08-01 16:31:34 -0400
committerRusty Wagner <rusty@vector35.com>2020-04-17 14:20:36 -0400
commitc9845e5a200228f20809336d9e9afee45e776d19 (patch)
tree3b02742c03e6a63075663a68c0a36d9ad16187fa /binaryninjaapi.h
parent652dd72149b9c030e438d6de1a03ef54eafd8091 (diff)
Add mem SSA to HLIL
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 1cbcc973..eba63058 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -4068,17 +4068,29 @@ __attribute__ ((format (printf, 1, 2)))
ExprId Assign(size_t size, ExprId dest, ExprId src, const ILSourceLocation& loc = ILSourceLocation());
ExprId AssignUnpack(const std::vector<ExprId>& output, ExprId src,
const ILSourceLocation& loc = ILSourceLocation());
+ ExprId AssignMemSSA(size_t size, ExprId dest, size_t destMemVersion, ExprId src, size_t srcMemVersion,
+ const ILSourceLocation& loc = ILSourceLocation());
+ ExprId AssignUnpackMemSSA(const std::vector<ExprId>& output, size_t destMemVersion, ExprId src,
+ size_t srcMemVersion, const ILSourceLocation& loc = ILSourceLocation());
ExprId Var(size_t size, const Variable& src, const ILSourceLocation& loc = ILSourceLocation());
ExprId VarSSA(size_t size, const SSAVariable& src, const ILSourceLocation& loc = ILSourceLocation());
ExprId VarPhi(const SSAVariable& dest, const std::vector<SSAVariable>& sources,
const ILSourceLocation& loc = ILSourceLocation());
+ ExprId MemPhi(size_t dest, const std::vector<size_t>& sources,
+ const ILSourceLocation& loc = ILSourceLocation());
ExprId StructField(size_t size, ExprId src, uint64_t offset,
const ILSourceLocation& loc = ILSourceLocation());
ExprId ArrayIndex(size_t size, ExprId src, ExprId idx, const ILSourceLocation& loc = ILSourceLocation());
+ ExprId ArrayIndexSSA(size_t size, ExprId src, size_t srcMemVersion, ExprId idx,
+ const ILSourceLocation& loc = ILSourceLocation());
ExprId Split(size_t size, ExprId high, ExprId low, const ILSourceLocation& loc = ILSourceLocation());
ExprId Deref(size_t size, ExprId src, const ILSourceLocation& loc = ILSourceLocation());
ExprId DerefField(size_t size, ExprId src, uint64_t offset,
const ILSourceLocation& loc = ILSourceLocation());
+ ExprId DerefSSA(size_t size, ExprId src, size_t srcMemVersion,
+ const ILSourceLocation& loc = ILSourceLocation());
+ ExprId DerefFieldSSA(size_t size, ExprId src, size_t srcMemVersion, uint64_t offset,
+ const ILSourceLocation& loc = ILSourceLocation());
ExprId AddressOf(ExprId src, const ILSourceLocation& loc = ILSourceLocation());
ExprId Const(size_t size, uint64_t val, const ILSourceLocation& loc = ILSourceLocation());
ExprId ConstPointer(size_t size, uint64_t val, const ILSourceLocation& loc = ILSourceLocation());
@@ -4141,6 +4153,10 @@ __attribute__ ((format (printf, 1, 2)))
ExprId Syscall(const std::vector<ExprId>& params, const ILSourceLocation& loc = ILSourceLocation());
ExprId TailCall(ExprId dest, const std::vector<ExprId>& params,
const ILSourceLocation& loc = ILSourceLocation());
+ ExprId CallSSA(ExprId dest, const std::vector<ExprId>& params, size_t destMemVersion, size_t srcMemVersion,
+ const ILSourceLocation& loc = ILSourceLocation());
+ ExprId SyscallSSA(const std::vector<ExprId>& params, size_t destMemVersion, size_t srcMemVersion,
+ const ILSourceLocation& loc = ILSourceLocation());
ExprId CompareEqual(size_t size, ExprId left, ExprId right,
const ILSourceLocation& loc = ILSourceLocation());
ExprId CompareNotEqual(size_t size, ExprId left, ExprId right,
@@ -4170,6 +4186,8 @@ __attribute__ ((format (printf, 1, 2)))
ExprId Trap(int64_t vector, const ILSourceLocation& loc = ILSourceLocation());
ExprId Intrinsic(uint32_t intrinsic, const std::vector<ExprId>& params,
const ILSourceLocation& loc = ILSourceLocation());
+ ExprId IntrinsicSSA(uint32_t intrinsic, const std::vector<ExprId>& params, size_t destMemVersion,
+ size_t srcMemVersion, const ILSourceLocation& loc = ILSourceLocation());
ExprId Undefined(const ILSourceLocation& loc = ILSourceLocation());
ExprId Unimplemented(const ILSourceLocation& loc = ILSourceLocation());
ExprId UnimplementedMemoryRef(size_t size, ExprId target,
@@ -4198,7 +4216,8 @@ __attribute__ ((format (printf, 1, 2)))
ExprId FloatCompareUnordered(size_t size, ExprId a, ExprId b, const ILSourceLocation& loc = ILSourceLocation());
std::vector<uint64_t> GetOperandList(ExprId i, size_t listOperand);
- ExprId AddOperandList(const std::vector<ExprId> operands);
+ ExprId AddOperandList(const std::vector<ExprId>& operands);
+ ExprId AddIndexList(const std::vector<size_t>& operands);
ExprId AddSSAVariableList(const std::vector<SSAVariable>& vars);
BNHighLevelILInstruction GetRawExpr(size_t i) const;