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

Christophe Foket christophe.foket at elis.ugent.be
Mon Mar 21 13:11:39 EDT 2011


This seems to work. However, G.reset() also removes the current Scene, 
which results in further problems. I've tried various things like 
copying the classes from the old Scene to the new Scene or even changing 
the new Scene back to the old Scene using

             Field sceneField = 
Singletons.class.getDeclaredField("instance_soot_Scene");
             sceneField.setAccessible(true);
             sceneField.set(G.v(), oldScene);

However, none of these hacks seem to result in anything useful.

Christophe

On 03/18/2011 09:09 PM, Ondrej Lhotak wrote:
> The only reliable way to clear the existing state of Soot (and Paddle)
> that I'm aware of is with G.reset().
>
> Ondrej
>
> On Wed, Mar 16, 2011 at 11:28:03PM +0100, Christophe Foket wrote:
>> 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
>> _______________________________________________
>> Soot-list mailing list
>> Soot-list at sable.mcgill.ca
>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>>



More information about the Soot-list mailing list