public void checkEqualityConstraint(object executor, Executor.BreakPointEventArgs data, Predicate <LiteralExpr> condition) { // Check that the equality constraint has been stored bool found = false; // Find the symbolic associated with variable "a". var theLocal = e.CurrentState.GetInScopeVariableAndExprByName("a"); //var symbolic = e.CurrentState.Symbolics.Where( s => s.Origin.AsVariable == theLocal.Key).First(); foreach (Expr constraint in e.CurrentState.Constraints.ConstraintExprs) { LiteralExpr literal = null; Variable symbolic = null; found = FindLiteralAssignment.findAnyVariable(constraint, out symbolic, out literal); if (found) { Assert.IsInstanceOf <SymbolicVariable>(symbolic); var asSym = symbolic as SymbolicVariable; if (asSym.Origin.IsVariable && asSym.Origin.AsVariable == theLocal.Key) { Assert.IsTrue(condition(literal)); found = true; break; } } } Assert.IsTrue(found, "Equality constraint not found"); }
public void checkConcrete(Object executor, Executor.BreakPointEventArgs eventArgs) { if (eventArgs.Name == "now_concrete") { Variable v = e.CurrentState.GetInScopeVariableAndExprByName("a").Key; Assert.IsFalse(e.IsSymbolic(v)); } }
static public void handleBreakPoint(object executor, Executor.BreakPointEventArgs eventArgs) { Console.ForegroundColor = ConsoleColor.DarkMagenta; Console.WriteLine("Hit break point " + eventArgs.Name); if (Debugger.IsAttached) { Debugger.Break(); } else { Console.WriteLine("Could not Break because debugger was not attached"); } Console.ResetColor(); }
public void checkConcrete(Object executor, Executor.BreakPointEventArgs eventArgs) { if (eventArgs.Name == "entry") { ++hits; // Check globals are symbolic foreach (Variable V in e.CurrentState.Mem.Globals.Keys) { Assert.IsTrue(e.IsSymbolic(V)); } // Check globals are symbolic foreach (Variable V in e.CurrentState.GetCurrentStackFrame().Locals.Keys) { Assert.IsTrue(e.IsSymbolic(V)); } return; } Assert.AreEqual(1, hits); Assert.AreEqual("now_concrete", eventArgs.Name); ++hits; // Check "a" is now concrete Variable varA = e.CurrentState.GetInScopeVariableAndExprByName("a").Key; Assert.IsFalse(e.IsSymbolic(varA)); // Check "x" is now concrete Variable varX = e.CurrentState.GetInScopeVariableAndExprByName("x").Key; Assert.IsFalse(e.IsSymbolic(varX)); // Check "y" is still symbolic Variable varY = e.CurrentState.GetInScopeVariableAndExprByName("y").Key; Assert.IsTrue(e.IsSymbolic(varY)); }