[Soot-list] How to re-launch points-to analysis after wjop.si, so the points-to analysis corresponds to the inlined program?

Marc-André Laverdière-Papineau marc-andre.laverdiere-papineau at polymtl.ca
Tue May 28 15:51:56 EDT 2013


Hello,

By default, Soot won't re-run the points-to analysis under any circumstance.

That being said, nothing prevents you from re-running Spark manually.
What I don't know is if you need to clear any state before doing that...

Marc-André Laverdière-Papineau
Doctorant - PhD Candidate

On 27/05/13 02:39 PM, Zhoulai wrote:
> Hello,
> 
> I have a naive question about how to re-launch points-to analysis after
> the wjop.si <http://wjop.si> phase (i.e., inlining transformation).
> 
> Following this great tutorial of Eric
> http://www.bodden.de/2008/11/26/soot-packs/
> 
> the phase cg is performed before other whole-program phases, in part.
> the inlining wjop.si <http://wjop.si> phase. I have encountered a
> situation in which I need to get the points-to analysis for the program
> after in-lining, which is slightly different from the points-to analysis
> for the program before inlining. However, I don't see how to re-launch
> points-to analysis after the the phase wjop.si <http://wjop.si>. Can
> anyone help?
> 
> I have a small program showing points-to graph of program after inlining
> and before inlining are different:
> 
> --------------original program in java -----------------
> public class Test4 {
>     public static void main(String[] args) {
>         A x=new A();
>         x.val=5;
>         foo(x);
>         int u = x.val;
>     }
>     public static void foo(A x) {
>    
>         x.val=10;   
>     }
> 
> }
> ------------------Jimple program after inlining---------------
> 
>     public static void main(java.lang.String[])
>     {
>         java.lang.String[] r0;
>         cases.A $r1, r2, r3;
>         int i0;
> 
>         r0 := @parameter0: java.lang.String[];
>         $r1 = new cases.A;
>         specialinvoke $r1.<cases.A: void <init>()>();
>         r2 = $r1;
>         r2.<cases.A: int val> = 5;
>         r3 = r2;
>         r3.<cases.A: int val> = 10;
>         i0 = r2.<cases.A: int val>;
>         return;
>     }
> -----------------------------------
> 
> Note the line 'r3=r2' which is introduce an extra points-to relation
> compared to the one for the original program.   I would like to know how
> to run again the points-to analysis for the inlined program. This could
> be a possible duplicate of the early question which is not yet answered
> http://www.sable.mcgill.ca/pipermail/soot-list/2009-March/002278.html
> 
> For info, my current soot options are  here
> 
>         args= new String[]{
>                 "-f","J","-cp",sootClassPath,"-pp",
>                 "-w","-W","-f","J",
>                 "-p","wjop.si <http://wjop.si>","on",
>                 "-p", "cg.spark", "enabled:true",
>                 className,
>                 "-d","sootOutput_inline",
>                 "-no-bodies-for-excluded",
>         };
> 
> 
> Any ideas? Thank you.
> Zhoulai
> 
>  
> 
> 
> _______________________________________________
> 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