summaryrefslogtreecommitdiff
path: root/binaryninjaapi.h
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2018-01-18 20:15:04 -0500
committerPeter LaFosse <peter@vector35.com>2018-03-23 17:10:06 -0400
commit82204e9fc38a480e0f53514d92b68df7783fee0a (patch)
treeb4cb83912e16464906edfdf70b5306f5891565bc /binaryninjaapi.h
parente20cbad0fa12471d939fbdaaa1e815b38d66d0dc (diff)
Allow flag roles to be dependent on semantic class
Diffstat (limited to 'binaryninjaapi.h')
-rw-r--r--binaryninjaapi.h11
1 files changed, 6 insertions, 5 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index e29b64c6..e47b034c 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -1613,7 +1613,7 @@ namespace BinaryNinja
static uint32_t* GetAllFlagWriteTypesCallback(void* ctxt, size_t* count);
static uint32_t* GetAllSemanticFlagClassesCallback(void* ctxt, size_t* count);
static uint32_t* GetAllSemanticFlagGroupsCallback(void* ctxt, size_t* count);
- static BNFlagRole GetFlagRoleCallback(void* ctxt, uint32_t flag);
+ static BNFlagRole GetFlagRoleCallback(void* ctxt, uint32_t flag, uint32_t semClass);
static uint32_t* GetFlagsRequiredForFlagConditionCallback(void* ctxt, BNLowLevelILFlagCondition cond,
uint32_t semClass, size_t* count);
static uint32_t* GetFlagsRequiredForSemanticFlagGroupCallback(void* ctxt, uint32_t semGroup, size_t* count);
@@ -1691,7 +1691,7 @@ namespace BinaryNinja
virtual std::vector<uint32_t> GetAllFlagWriteTypes();
virtual std::vector<uint32_t> GetAllSemanticFlagClasses();
virtual std::vector<uint32_t> GetAllSemanticFlagGroups();
- virtual BNFlagRole GetFlagRole(uint32_t flag);
+ virtual BNFlagRole GetFlagRole(uint32_t flag, uint32_t semClass = 0);
virtual std::vector<uint32_t> GetFlagsRequiredForFlagCondition(BNLowLevelILFlagCondition cond,
uint32_t semClass = 0);
virtual std::vector<uint32_t> GetFlagsRequiredForSemanticFlagGroup(uint32_t semGroup);
@@ -1703,7 +1703,7 @@ namespace BinaryNinja
ExprId GetDefaultFlagWriteLowLevelIL(BNLowLevelILOperation op, size_t size, BNFlagRole role,
BNRegisterOrConstant* operands, size_t operandCount, LowLevelILFunction& il);
virtual ExprId GetFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, uint32_t semClass, LowLevelILFunction& il);
- ExprId GetDefaultFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, LowLevelILFunction& il);
+ ExprId GetDefaultFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, uint32_t semClass, LowLevelILFunction& il);
virtual ExprId GetSemanticFlagGroupLowLevelIL(uint32_t semGroup, LowLevelILFunction& il);
virtual BNRegisterInfo GetRegisterInfo(uint32_t reg);
virtual uint32_t GetStackPointerRegister();
@@ -1836,7 +1836,7 @@ namespace BinaryNinja
virtual std::vector<uint32_t> GetAllFlagWriteTypes() override;
virtual std::vector<uint32_t> GetAllSemanticFlagClasses() override;
virtual std::vector<uint32_t> GetAllSemanticFlagGroups() override;
- virtual BNFlagRole GetFlagRole(uint32_t flag) override;
+ virtual BNFlagRole GetFlagRole(uint32_t flag, uint32_t semClass = 0) override;
virtual std::vector<uint32_t> GetFlagsRequiredForFlagCondition(BNLowLevelILFlagCondition cond,
uint32_t semClass = 0) override;
virtual std::vector<uint32_t> GetFlagsRequiredForSemanticFlagGroup(uint32_t semGroup) override;
@@ -2531,7 +2531,8 @@ namespace BinaryNinja
const ILSourceLocation& loc = ILSourceLocation());
ExprId RegisterStackTopRelative(size_t size, uint32_t regStack, ExprId entry,
const ILSourceLocation& loc = ILSourceLocation());
- ExprId RegisterStackPop(size_t size, uint32_t regStack, const ILSourceLocation& loc = ILSourceLocation());
+ ExprId RegisterStackPop(size_t size, uint32_t regStack, uint32_t flags = 0,
+ const ILSourceLocation& loc = ILSourceLocation());
ExprId RegisterStackTopRelativeSSA(size_t size, const SSARegisterStack& regStack, ExprId entry,
const SSARegister& top, const ILSourceLocation& loc = ILSourceLocation());
ExprId RegisterStackAbsoluteSSA(size_t size, const SSARegisterStack& regStack, uint32_t reg,