[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