GP-0: absint tests

This commit is contained in:
d-millar
2026-02-12 18:17:17 +00:00
parent 9aaa1c9553
commit 1ffd570491
4 changed files with 15 additions and 10 deletions
@@ -413,6 +413,11 @@ public class PcodeInterval
MathNumber max = starting.interval.getHigh().max(eval.interval.getHigh());
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();
};
@@ -28,12 +28,12 @@ public class DataflowAnalysesTest extends AbstractLisaTest {
public void testAvailable() {
lisaOptions.setValueDomain(ValueDomainOption.DDATA_AVAILABLE);
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"),
"[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"),
"[register:00000000 == 0, register:00000000 INT_AND 255, register:00000000 INT_SLESS 0]"); //MOV RDX, RAX
equalsAssert(valueOf("00400012:0:register:00000010"), null); //RET
"[register:00000000 < 0, register:00000000 == 0, register:00000000 INT_AND 255]"); //MOV RDX, RAX
equalsAssert(valueOf("00400012:0:register:00000010"), null); //RET
}
@Category(AbstractLisaTest.class)
@@ -42,8 +42,8 @@ public class DataflowAnalysesTest extends AbstractLisaTest {
lisaOptions.setValueDomain(ValueDomainOption.DDATA_CONSTPROP);
runTest();
equalsAssert(valueOf("0040000b:0:register:00000000"), "4"); //SUB AX, 0x5
equalsAssert(valueOf("0040000f:0:register:00000000"), "ffff"); //MOV RDX, RAX
equalsAssert(valueOf("00400012:0:register:00000010"), "ffff"); //RET
equalsAssert(valueOf("0040000f:0:register:00000000"), "-1"); //MOV RDX, RAX
equalsAssert(valueOf("00400012:0:register:00000010"), "-1"); //RET
}
@Category(AbstractLisaTest.class)
@@ -30,7 +30,7 @@ public class MiscAnalysesTest extends AbstractLisaTest {
lisaOptions.setInterproceduralOption(InterproceduralOption.CONTEXT);
runTest();
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:00000010"), null); //MOV RDX, RAX
equalsAssert(valueOf("00400012:0:register:00000010"), "="); //RET
@@ -49,7 +49,7 @@ public class NumericAnalysesTest extends AbstractLisaTest {
lisaOptions.setValueDomain(ValueDomainOption.VALUE_POWERSET);
lisaOptions.setDescendingPhaseOption(DescendingPhaseOption.GLB);
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("00400012:0:register:00000010"), "[-Inf, +Inf]"); //RET
}
@@ -104,8 +104,8 @@ public class NumericAnalysesTest extends AbstractLisaTest {
runTest();
equalsAssert(valueOf("0040000e:37:register:00000000"), null);
equalsAssert(valueOf("00400010:13:register:00000000"), "[-Inf, +Inf]");
equalsAssert(valueOf("00400018:47:register:00000000"), "[0, +Inf]"); // [3, +Inf] optimized out
equalsAssert(valueOf("00400012:46:register:00000000"), "[-Inf, 2]");
equalsAssert(valueOf("00400018:41:register:00000000"), "[0, +Inf]"); // [3, +Inf] optimized out
equalsAssert(valueOf("00400012:18:register:00000000"), "[-Inf, 2]");
}
@Category(AbstractLisaTest.class)