[Soot-list] Interprocedural flow analysis

Eric Bodden eric.bodden at mail.mcgill.ca
Tue Mar 7 19:58:58 EST 2006


Hello, Andy.

I am also not an expert on Soot (yet) but I can tell you what I know.
In order to do interprocedural (fukk program) analysis, you have to run
Soot in whole program mode. This will construct a call graph for you.
Then you will usually run your int*ra*procedural analysis with a
BodyTransformer in one of the later packs (e.g. the Jimple
transformation pack "jtp"). This analysis then calculates all
information necessary per method and stores it in an appropriate place
(usually you tag the relevant unit or bodies). Then, in the same or
another transformer you make use of the reachability information the
call graph gives you in order to propagate this information across the
program. The call graph package has functionality which lets you answer
questions of reachability e.g., the class TransitiveTargets.

That's about all I know so far. Hope that helps.

Eric  

> -----Original Message-----
> From: soot-list-bounces at sable.mcgill.ca 
> [mailto:soot-list-bounces at sable.mcgill.ca] On Behalf Of Andy Maule
> Sent: Tuesday, March 07, 2006 6:11 AM
> To: soot-list
> Subject: [Soot-list] Interprocedural flow analysis
> 
> Hi,
> 
> I'm a bit of a beginner with Soot, and I'm having a little 
> trouble. I'll describe the problem I want to solve, and then 
> hopefully someone might be able give me some advice on how to 
> solve it.
> 
> I want to do some full program reachability analysis. I have 
> a set of local variables. I want to trace the reachability of 
> each of these variables and see where they are used. In 
> particular I want to know everywhere in the program where 
> they are either modified, or passed as arguments to some 
> specific methods that I'm interested in.
> 
> So far I've extracted all the local definitions that I'm 
> interested in. I now need to find some interprocedural way of 
> doing the flow analysis to trace these definitions and see 
> where they intercept methods that I'm interested in.
> 
> I'm currently looking into the
> soot.jimple.toolkits.annotation.purity.PurityIntraproceduralAn
> alysis class for inspiration. It's a bit difficult to follow, 
> as I'm so new to soot, so any help would be appreciated. 
> Especially letting me know if I'm heading in the right direction.
> 
> Thanks
> 
> Andy Maule 
> 
> _______________________________________________
> 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