[Soot-list] one question about InfoFlowAnalysis in the package soot.jimple.toolkits.infoflow
jiangfan shi
jiangfan.shi at gmail.com
Mon Jan 5 03:42:28 EST 2009
Hi, All,
I am trying to use InfoFlowAnalysis to analyze my program, but I did
not see an expected data flow edges among different methods in
different classes. By digging into the data flow graph for methods, I
did not see edges among local variables in methods.
To make my problem obvious to us, I created a tiny program, and I
could not get an expected data flow dependency relationships among
method and the local variable dependency information inside methods.
Anybody can give me some hints? Or do I miss some options
I listed my small program, the analysis arguments, the jimple file and
the analyzed results (variable dependency directed graph) in the
following:
My program:
package smallexample;
public class Main4 {
static int fee1,fee2,fee3;
public static void main(String[] args){
fee1=10;
fee2=fee1+2;
fee3=fee2+3;
}
}
Analysis arguments:
-w -main-class smallexample.Main4 -p cg.spark rta:true -f jimple
--app smallexample.Main4
Jimple file:
public class smallexample.Main4 extends java.lang.Object
{
static int fee1;
static int fee2;
static int fee3;
public void <init>()
{
smallexample.Main4 r0;
r0 := @this: smallexample.Main4;
specialinvoke r0.<java.lang.Object: void <init>()>();
return;
}
public static void main(java.lang.String[])
{
java.lang.String[] r0;
int $i0, $i1, $i2, $i3;
r0 := @parameter0: java.lang.String[];
<smallexample.Main4: int fee1> = 10;
$i0 = <smallexample.Main4: int fee1>;
$i1 = $i0 + 2;
<smallexample.Main4: int fee2> = $i1;
$i2 = <smallexample.Main4: int fee2>;
$i3 = $i2 + 3;
<smallexample.Main4: int fee3> = $i3;
return;
}
}
Analyzed results:
=============method<smallexample.Main4: void
main(java.lang.String[])>'s info flow graph ============
Node = r0
Preds:
@parameter0: java.lang.String[]
Succs:
Node = @parameter0: java.lang.String[]
Preds:
Succs:
r0
===================
There is no a generated dependency graph for the class level, and
further more for the method, main(), I did not see fee1<-fee2<-fee3,
which means fee3 depends on fee2 which depends on fee1.
Any hint is highly appreciated.
Thanks in advance!
Jiangfan
More information about the Soot-list
mailing list