diff options
| author | Glenn Smith <glenn@vector35.com> | 2022-03-21 19:31:45 -0400 |
|---|---|---|
| committer | Glenn Smith <glenn@vector35.com> | 2022-03-21 19:31:45 -0400 |
| commit | 4bd9a3ca53cbd2ac25b47589ee54e8777bddd2de (patch) | |
| tree | 91dcd5be80431f133ae5c3c93ae8dc73ebe956d0 | |
| parent | 3017f8ff7660e2cd7bd652cb590e6904f6f7035a (diff) | |
Fix LLIL_FCMP_O not being handled in a couple places
Fixes #3032
| -rw-r--r-- | lowlevelilinstruction.cpp | 2 | ||||
| -rw-r--r-- | python/lowlevelil.py | 14 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lowlevelilinstruction.cpp b/lowlevelilinstruction.cpp index 59a3ad55..fe386e8d 100644 --- a/lowlevelilinstruction.cpp +++ b/lowlevelilinstruction.cpp @@ -216,6 +216,7 @@ unordered_map<BNLowLevelILOperation, vector<LowLevelILOperandUsage>> LowLevelILI {LLIL_FCMP_LE, {LeftExprLowLevelOperandUsage, RightExprLowLevelOperandUsage}}, {LLIL_FCMP_GE, {LeftExprLowLevelOperandUsage, RightExprLowLevelOperandUsage}}, {LLIL_FCMP_GT, {LeftExprLowLevelOperandUsage, RightExprLowLevelOperandUsage}}, + {LLIL_FCMP_O, {LeftExprLowLevelOperandUsage, RightExprLowLevelOperandUsage}}, {LLIL_FCMP_UO, {LeftExprLowLevelOperandUsage, RightExprLowLevelOperandUsage}}}; @@ -1914,6 +1915,7 @@ void LowLevelILInstruction::VisitExprs(const std::function<bool(const LowLevelIL case LLIL_FCMP_LE: case LLIL_FCMP_GE: case LLIL_FCMP_GT: + case LLIL_FCMP_O: case LLIL_FCMP_UO: AsTwoOperand().GetLeftExpr().VisitExprs(func); AsTwoOperand().GetRightExpr().VisitExprs(func); diff --git a/python/lowlevelil.py b/python/lowlevelil.py index faba03fe..bf984b2d 100644 --- a/python/lowlevelil.py +++ b/python/lowlevelil.py @@ -4418,6 +4418,20 @@ class LowLevelILFunction: """ return self.expr(LowLevelILOperation.LLIL_FCMP_GT, a, b) + def float_compare_ordered(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex: + """ + ``float_compare_ordered`` returns floating point comparison expression of size ``size`` checking if + expression ``a`` is ordered relative to expression ``b`` + + :param int size: the size of the operands in bytes + :param ExpressionIndex a: LHS expression + :param ExpressionIndex b: RHS expression + :param str flags: flags to set + :return: The expression ``is_ordered(a, b)`` + :rtype: ExpressionIndex + """ + return self.expr(LowLevelILOperation.LLIL_FCMP_O, a, b) + def float_compare_unordered(self, size: int, a: ExpressionIndex, b: ExpressionIndex) -> ExpressionIndex: """ ``float_compare_unordered`` returns floating point comparison expression of size ``size`` checking if |
