private void RunTest(Program program, string outputFile) { var listener = new FakeDecompilerEventListener(); EquivalenceClassBuilder eqb = new EquivalenceClassBuilder(factory, store, listener); DataTypeBuilder dtb = new DataTypeBuilder(factory, store, program.Platform); eqb.Build(program); TraitCollector trco = new TraitCollector(factory, store, dtb, program); trco.CollectProgramTraits(program); dtb.BuildEquivalenceClassDataTypes(); var tv = new TypeVariableReplacer(store); tv.ReplaceTypeVariables(); store.CopyClassDataTypesToTypeVariables(); var ppr = new PtrPrimitiveReplacer(factory, store, program); ppr.ReplaceAll(listener); var cpa = new ConstantPointerAnalysis(factory, store, program); cpa.FollowConstantPointers(); Verify(null, outputFile); }
public void CpaPointerToArray() { var cpa = new ConstantPointerAnalysis(factory, store, new Program()); var isInside = cpa.IsInsideArray( new StructureType { Fields = { new StructureField(300, new ArrayType(PrimitiveType.Int32, 0)) } }, 304, PrimitiveType.Int32); Assert.IsTrue(isInside, "Since the array has no specified size, offset 304 should be inside the array."); }
private void RunTest(Program program, string outputFile) { EquivalenceClassBuilder eqb = new EquivalenceClassBuilder(factory, store); DataTypeBuilder dtb = new DataTypeBuilder(factory, store, program.Platform); eqb.Build(program); TraitCollector trco = new TraitCollector(factory, store, dtb, program); trco.CollectProgramTraits(program); dtb.BuildEquivalenceClassDataTypes(); var tv = new TypeVariableReplacer(store); tv.ReplaceTypeVariables(); store.CopyClassDataTypesToTypeVariables(); var ppr = new PtrPrimitiveReplacer(factory, store, program); ppr.ReplaceAll(new FakeDecompilerEventListener()); var cpa = new ConstantPointerAnalysis(factory, store, program); cpa.FollowConstantPointers(); Verify(null, outputFile); }
public void CpaPointerToArray() { var cpa = new ConstantPointerAnalysis(factory, store, new Program()); var isInside = cpa.IsInsideArray( new StructureType { Fields = { new StructureField(300, new ArrayType(PrimitiveType.Int32, 0)) } }, 304, PrimitiveType.Int32); Assert.IsTrue(isInside, "Since the array has no specified size, offset 304 should be inside the array."); }
private void When_RunConstantPointerAnalysis() { var cpa = new ConstantPointerAnalysis(factory, store, program); cpa.FollowConstantPointers(); }