mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-05-30 12:51:48 +08:00
GP-0: absint tests
This commit is contained in:
@@ -413,6 +413,11 @@ public class PcodeInterval
|
|||||||
MathNumber max = starting.interval.getHigh().max(eval.interval.getHigh());
|
MathNumber max = starting.interval.getHigh().max(eval.interval.getHigh());
|
||||||
yield new PcodeInterval(min, max);
|
yield new PcodeInterval(min, max);
|
||||||
}
|
}
|
||||||
|
case LogicalAnd op -> {
|
||||||
|
MathNumber min = starting.interval.getLow().max(eval.interval.getLow());
|
||||||
|
MathNumber max = starting.interval.getHigh().min(eval.interval.getHigh());
|
||||||
|
yield new PcodeInterval(min, max);
|
||||||
|
}
|
||||||
default -> throw new AssertionError();
|
default -> throw new AssertionError();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -28,12 +28,12 @@ public class DataflowAnalysesTest extends AbstractLisaTest {
|
|||||||
public void testAvailable() {
|
public void testAvailable() {
|
||||||
lisaOptions.setValueDomain(ValueDomainOption.DDATA_AVAILABLE);
|
lisaOptions.setValueDomain(ValueDomainOption.DDATA_AVAILABLE);
|
||||||
runTest();
|
runTest();
|
||||||
equalsAssert(valueOf("0040000b:1:register:00000000"), "register:00000000 < 5"); //SUB AX, 0x5
|
equalsAssert(valueOf("0040000b:1:register:00000000"), "register:00000000 < 5"); //SUB AX, 0x5
|
||||||
equalsAssert(valueOf("0040000b:5:register:00000000"),
|
equalsAssert(valueOf("0040000b:5:register:00000000"),
|
||||||
"[register:00000000 == 0, register:00000000 INT_SLESS 0]"); //SUB AX, 0x5
|
"[register:00000000 < 0, register:00000000 == 0]"); //SUB AX, 0x5
|
||||||
equalsAssert(valueOf("0040000f:0:register:00000000"),
|
equalsAssert(valueOf("0040000f:0:register:00000000"),
|
||||||
"[register:00000000 == 0, register:00000000 INT_AND 255, register:00000000 INT_SLESS 0]"); //MOV RDX, RAX
|
"[register:00000000 < 0, register:00000000 == 0, register:00000000 INT_AND 255]"); //MOV RDX, RAX
|
||||||
equalsAssert(valueOf("00400012:0:register:00000010"), null); //RET
|
equalsAssert(valueOf("00400012:0:register:00000010"), null); //RET
|
||||||
}
|
}
|
||||||
|
|
||||||
@Category(AbstractLisaTest.class)
|
@Category(AbstractLisaTest.class)
|
||||||
@@ -42,8 +42,8 @@ public class DataflowAnalysesTest extends AbstractLisaTest {
|
|||||||
lisaOptions.setValueDomain(ValueDomainOption.DDATA_CONSTPROP);
|
lisaOptions.setValueDomain(ValueDomainOption.DDATA_CONSTPROP);
|
||||||
runTest();
|
runTest();
|
||||||
equalsAssert(valueOf("0040000b:0:register:00000000"), "4"); //SUB AX, 0x5
|
equalsAssert(valueOf("0040000b:0:register:00000000"), "4"); //SUB AX, 0x5
|
||||||
equalsAssert(valueOf("0040000f:0:register:00000000"), "ffff"); //MOV RDX, RAX
|
equalsAssert(valueOf("0040000f:0:register:00000000"), "-1"); //MOV RDX, RAX
|
||||||
equalsAssert(valueOf("00400012:0:register:00000010"), "ffff"); //RET
|
equalsAssert(valueOf("00400012:0:register:00000010"), "-1"); //RET
|
||||||
}
|
}
|
||||||
|
|
||||||
@Category(AbstractLisaTest.class)
|
@Category(AbstractLisaTest.class)
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public class MiscAnalysesTest extends AbstractLisaTest {
|
|||||||
lisaOptions.setInterproceduralOption(InterproceduralOption.CONTEXT);
|
lisaOptions.setInterproceduralOption(InterproceduralOption.CONTEXT);
|
||||||
runTest();
|
runTest();
|
||||||
equalsAssert(valueOf("0040000b:0:register:00000000"), "="); //SUB AX, 0x5
|
equalsAssert(valueOf("0040000b:0:register:00000000"), "="); //SUB AX, 0x5
|
||||||
equalsAssert(valueOf("0040000b:3:register:00000000"), "≠"); //SUB AX, 0x5
|
equalsAssert(valueOf("0040000b:3:register:00000000"), "#TOP#"); //SUB AX, 0x5
|
||||||
equalsAssert(valueOf("0040000f:0:register:00000000"), "="); //MOV RDX, RAX
|
equalsAssert(valueOf("0040000f:0:register:00000000"), "="); //MOV RDX, RAX
|
||||||
equalsAssert(valueOf("0040000f:0:register:00000010"), null); //MOV RDX, RAX
|
equalsAssert(valueOf("0040000f:0:register:00000010"), null); //MOV RDX, RAX
|
||||||
equalsAssert(valueOf("00400012:0:register:00000010"), "="); //RET
|
equalsAssert(valueOf("00400012:0:register:00000010"), "="); //RET
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class NumericAnalysesTest extends AbstractLisaTest {
|
|||||||
lisaOptions.setValueDomain(ValueDomainOption.VALUE_POWERSET);
|
lisaOptions.setValueDomain(ValueDomainOption.VALUE_POWERSET);
|
||||||
lisaOptions.setDescendingPhaseOption(DescendingPhaseOption.GLB);
|
lisaOptions.setDescendingPhaseOption(DescendingPhaseOption.GLB);
|
||||||
runTest();
|
runTest();
|
||||||
equalsAssert(valueOf("0040000b:0:register:00000000"), "[-Inf, +Inf]"); //SUB AX, 0x5
|
equalsAssert(valueOf("0040000b:0:register:00000000"), "[4, 4]"); //SUB AX, 0x5
|
||||||
equalsAssert(valueOf("0040000f:0:register:00000000"), "[-Inf, +Inf]"); //MOV RDX, RAX
|
equalsAssert(valueOf("0040000f:0:register:00000000"), "[-Inf, +Inf]"); //MOV RDX, RAX
|
||||||
equalsAssert(valueOf("00400012:0:register:00000010"), "[-Inf, +Inf]"); //RET
|
equalsAssert(valueOf("00400012:0:register:00000010"), "[-Inf, +Inf]"); //RET
|
||||||
}
|
}
|
||||||
@@ -104,8 +104,8 @@ public class NumericAnalysesTest extends AbstractLisaTest {
|
|||||||
runTest();
|
runTest();
|
||||||
equalsAssert(valueOf("0040000e:37:register:00000000"), null);
|
equalsAssert(valueOf("0040000e:37:register:00000000"), null);
|
||||||
equalsAssert(valueOf("00400010:13:register:00000000"), "[-Inf, +Inf]");
|
equalsAssert(valueOf("00400010:13:register:00000000"), "[-Inf, +Inf]");
|
||||||
equalsAssert(valueOf("00400018:47:register:00000000"), "[0, +Inf]"); // [3, +Inf] optimized out
|
equalsAssert(valueOf("00400018:41:register:00000000"), "[0, +Inf]"); // [3, +Inf] optimized out
|
||||||
equalsAssert(valueOf("00400012:46:register:00000000"), "[-Inf, 2]");
|
equalsAssert(valueOf("00400012:18:register:00000000"), "[-Inf, 2]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Category(AbstractLisaTest.class)
|
@Category(AbstractLisaTest.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user