[Soot-list] Paddle: getting updated version of context sensitive call graph/points-to sets

Christophe Foket christophe.foket at elis.ugent.be
Wed Mar 16 18:28:03 EDT 2011


Hello,

I was wondering what the best way is to rerun Paddle to get an updated 
version of the context sensitive call graph/points to sets. I've tried using

       Scene.v().releaseReachableMethods();
       Scene.v().releaseCallGraph();
       Scene.v().releasePointsToAnalysis();
       Scene.v().contextNumberer = null;

       PaddleOptions options = new PaddleOptions(paddleOptions);
       PaddleTransformer paddleTransformer = PaddleTransformer.v();
       paddleTransformer.setup(options);
       paddleTransformer.solve(options);

where paddleOptions is a HashMap containing the same key-value mapping 
as the options that were given to Soot.

However, this does not seem to be working, as some of the points-to sets 
are empty after re-runing Paddle this way.
For example, I have the following problem:

       Local local = ...
       
System.out.println(Scene.v().getPointsToAnalysis().reachingObjects(local).possibleTypes().size()); 
// prints "1"

       Scene.v().releaseReachableMethods();
       Scene.v().releaseCallGraph();
       Scene.v().releasePointsToAnalysis();
       Scene.v().contextNumberer = null;

       PaddleOptions options = new PaddleOptions(paddleOptions);
       PaddleTransformer paddleTransformer = PaddleTransformer.v();
       paddleTransformer.setup(options);
       paddleTransformer.solve(options);

       
System.out.println(Scene.v().getPointsToAnalysis().reachingObjects(local).possibleTypes().size()); 
// prints "0"

Kind regards,

Christophe


More information about the Soot-list mailing list