[Soot-list] Various questions

Evan Driscoll driscoll at cs.wisc.edu
Thu Apr 28 18:37:36 EDT 2011


I'm interested in using Soot as a front end. Specifically, I'd like it 
to do pointer analysis for me to build a call graph, then I want to walk 
over the interprocedural CFG. Essentially I'm transforming the CFG into 
a form that I can feed to some existing code, so I'm not doing 
transformations at all, and I'm not really doing dataflow analysis.

The most useful information I got is from a combination of "using soot 
to instrument a class file" [1] and the "survivor's guide" [2]. The 
skeleton of the code I have now is from [1]: I have a main function 
which adds my class to the 'jtp' pack, and then my class extends 
'BodyTransformer'. My 'internalTransform' function builds and traverses 
the intraprocedural CFG, and also looks at Scene.v().getCallGraph() to 
know possible targets for function calls.


My questions:

1. It seems weird to use a 'BodyTransformer' when I'm not transforming.
    Is there something better to use?

2. What pack should I use? Should I leave it in 'jtp', or move it to
    'wjtp'? Or something else, like 'wjap'?

3. If I turn on one of the fancier pointer analysis options (e.g.
    '-p cg.spark enabled:true'), presumably the code will just start
    taking advantage of the increased precision. Is this true?

4. Does it sound like what I'm doing is pretty reasonable in the first
    place, or is there some easier way that I'm missing?


Thanks for your help,
Evan



[1] http://www.sable.mcgill.ca/soot/tutorial/profiler2/index.html
[2] http://www.brics.dk/SootGuide/


More information about the Soot-list mailing list