mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-05-22 03:22:01 +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());
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user