diff options
| author | Rusty Wagner <rusty@vector35.com> | 2018-01-18 20:15:04 -0500 |
|---|---|---|
| committer | Peter LaFosse <peter@vector35.com> | 2018-03-23 17:10:06 -0400 |
| commit | 82204e9fc38a480e0f53514d92b68df7783fee0a (patch) | |
| tree | b4cb83912e16464906edfdf70b5306f5891565bc /architecture.cpp | |
| parent | e20cbad0fa12471d939fbdaaa1e815b38d66d0dc (diff) | |
Allow flag roles to be dependent on semantic class
Diffstat (limited to 'architecture.cpp')
| -rw-r--r-- | architecture.cpp | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/architecture.cpp b/architecture.cpp index 64314031..168c1397 100644 --- a/architecture.cpp +++ b/architecture.cpp @@ -318,10 +318,10 @@ uint32_t* Architecture::GetAllSemanticFlagGroupsCallback(void* ctxt, size_t* cou } -BNFlagRole Architecture::GetFlagRoleCallback(void* ctxt, uint32_t flag) +BNFlagRole Architecture::GetFlagRoleCallback(void* ctxt, uint32_t flag, uint32_t semClass) { Architecture* arch = (Architecture*)ctxt; - return arch->GetFlagRole(flag); + return arch->GetFlagRole(flag, semClass); } @@ -781,7 +781,7 @@ vector<uint32_t> Architecture::GetAllSemanticFlagGroups() } -BNFlagRole Architecture::GetFlagRole(uint32_t) +BNFlagRole Architecture::GetFlagRole(uint32_t, uint32_t) { return SpecialFlagRole; } @@ -820,8 +820,7 @@ uint32_t Architecture::GetSemanticClassForFlagWriteType(uint32_t) size_t Architecture::GetFlagWriteLowLevelIL(BNLowLevelILOperation op, size_t size, uint32_t flagWriteType, uint32_t flag, BNRegisterOrConstant* operands, size_t operandCount,LowLevelILFunction& il) { - (void)flagWriteType; - BNFlagRole role = GetFlagRole(flag); + BNFlagRole role = GetFlagRole(flag, GetSemanticClassForFlagWriteType(flagWriteType)); return BNGetDefaultArchitectureFlagWriteLowLevelIL(m_object, op, size, role, operands, operandCount, il.GetObject()); } @@ -835,15 +834,17 @@ size_t Architecture::GetDefaultFlagWriteLowLevelIL(BNLowLevelILOperation op, siz } -ExprId Architecture::GetFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, uint32_t, LowLevelILFunction& il) +ExprId Architecture::GetFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, + uint32_t semClass, LowLevelILFunction& il) { - return BNGetDefaultArchitectureFlagConditionLowLevelIL(m_object, cond, il.GetObject()); + return BNGetDefaultArchitectureFlagConditionLowLevelIL(m_object, cond, semClass, il.GetObject()); } -ExprId Architecture::GetDefaultFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, LowLevelILFunction& il) +ExprId Architecture::GetDefaultFlagConditionLowLevelIL(BNLowLevelILFlagCondition cond, + uint32_t semClass, LowLevelILFunction& il) { - return BNGetDefaultArchitectureFlagConditionLowLevelIL(m_object, cond, il.GetObject()); + return BNGetDefaultArchitectureFlagConditionLowLevelIL(m_object, cond, semClass, il.GetObject()); } @@ -1333,9 +1334,9 @@ vector<uint32_t> CoreArchitecture::GetAllSemanticFlagGroups() } -BNFlagRole CoreArchitecture::GetFlagRole(uint32_t flag) +BNFlagRole CoreArchitecture::GetFlagRole(uint32_t flag, uint32_t semClass) { - return BNGetArchitectureFlagRole(m_object, flag); + return BNGetArchitectureFlagRole(m_object, flag, semClass); } |
