[Soot-list] How to use Paddle

Ondrej Lhotak olhotak at uwaterloo.ca
Wed Apr 5 14:27:40 EDT 2006


Manu is right: all of the conf: options with "context" in their name
invoke the Zhu/Calman/Whaley/Lam algorithm, which requires the use of
BDDs. Therefore, they only work in BDD mode, which is enabled with the
option -p cg.spark bdd.

In addition, the SableJBDD library is not as complete as some of the
others. The most complete of the backends is the BuDDy backend.

Ondrej

On Sun, Mar 26, 2006 at 08:28:02AM -0800, Manu Sridharan wrote:
> Hi Joe,
> 
> I think I see a couple of problems.  First, I think you'll need the -p
> cg.paddle bdd:true option to use BDDs; it might be failing because
> this option is missing.  Also, you need to set the context and
> possibly context-heap options, as context-sensitive analysis is
> disabled by default.  Also, I don't think you want the
> conf:cha-context option; by default, Paddle constructs a
> context-sensitive call graph once context-sensitive analysis is
> enabled.  The Paddle options are documented here:
> 
> http://www.sable.mcgill.ca/soot/tutorial/phase/phase.html#SECTION00043000000000000000
> 
> I'm not sure of the best way to use the context-sensitive call graph,
> so hopefully someone else can answer that.
> 
> -Manu
> 
> On 3/26/06, Joe Qian <owqian at gmail.com> wrote:
> > Hi everyone,
> > I just try to use Paddle to obtain a context-sensitive call graph.
> > When I run soot.Main() with (I use Paddle0.2, Jedd0.3 and ScableJBdd)
> >
> > -p cg.paddle enabled:true
> > -p cg.paddle conf:cha-context
> > -p cg.paddle backend:sable;
> >
> > the following problem occurs:
> >
> > ==================================================================
> > Soot started on Sun Mar 26 21:53:58 CST 2006
> > Unique table : weak 1031
> > Pooling dynamic 1000000
> > Cache kind none, size 1031, associativities 2
> > java.lang.NullPointerException
> > at
> > soot.jimple.paddle.TradReachableMethods.<init>(TradReachableMethods.java:37)
> > at soot.jimple.paddle.TradFactory.ReachableMethods(TradFactory.java:144)
> > at soot.jimple.paddle.CHAContextConfig.setup(CHAContextConfig.java:39)
> > at soot.jimple.paddle.PaddleScene.setup(PaddleScene.java:1308)
> > at soot.jimple.paddle.PaddleTransformer.setup(PaddleTransformer.java:84)
> > at
> > soot.jimple.paddle.PaddleTransformer.internalTransform(PaddleTransformer.java:45)
> > at soot.SceneTransformer.transform(SceneTransformer.java:39)
> > at soot.jimple.paddle.PaddleHook.internalTransform(PaddleHook.java:43)
> > at soot.SceneTransformer.transform(SceneTransformer.java:39)
> > at soot.Transform.apply(Transform.java:89)
> > at soot.RadioScenePack.internalApply(RadioScenePack.java:60)
> > at
> > soot.jimple.toolkits.callgraph.CallGraphPack.internalApply(CallGraphPack.java:40)
> > at soot.Pack.apply(Pack.java:110)
> > at soot.PackManager.runWholeProgramPacks(PackManager.java:375)
> > at soot.PackManager.runPacks(PackManager.java:321)
> > at soot.Main.run(Main.java:203)
> > at soot.Main.main(Main.java:146)
> > ====================================================================
> >
> > Could any body give me some sujestion?
> > i'm also not very clear about how to use a context sensitive call graph.
> > Is there any example code to follow
> >
> > --
> > Sincerely,
> > Joe
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> >
> _______________________________________________
> 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