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.");
 }
Beispiel #5
0
        private void When_RunConstantPointerAnalysis()
        {
            var cpa = new ConstantPointerAnalysis(factory, store, program);

            cpa.FollowConstantPointers();
        }