[Soot-list] wrong result for method reachObjects(local,
field) in points-to analysis
Ondrej Lhotak
olhotak at uwaterloo.ca
Tue Mar 7 17:36:02 EST 2006
At one point in the execution of your program (between the lines w.f = x
and w.x = y), w.f *does* point to the object pointed to by x. Therefore,
this object must be included in the points-to set for w.f.
In general, Spark is flow-insensitive, meaning that it computes a
single solution which is true for the entire program execution,
rather than computing different solutions for specific program
points.
Ondrej
On Tue, Mar 07, 2006 at 04:55:33PM -0500, Aiwu Shi wrote:
> hi,
>
> I use a simple program to test my points-to analysis.
>
> I am not extending Soot in the recommended way, but just calling into
> Soot/Spark directly like the following:
>
> //set the PointsToAnalysis with phase options
> options.put("enabled", "true");
> options.put("on-fly-cg", "true");
> options.put("set-impl", "hybrid");
> options.put("propagator", "worklist");
> options.put("verbose", "true");
> SparkTransformer.v().transform("cg.spark",options);
>
> I want to get the PointsToSet for the field f of local variable w, that
> is, the PointsToSet of w.f. after my analysis, I got the PointsToSet
> include two AllocNode, one is AllocNode for x, the other is AllocNode for
> y.
> in fact, we can know, the w.f should only contain the AllocNode of y.
> so, is there a bug for the method of reachObject(local, field)? please
> explain for me. thanks
>
> Aiwu
>
>
> my analyzed sample class is followed:
>
> class Sample{
> private C f;
>
> public C f2( ){
> C x;
> C y;
> Sample w=new Sample();
> x = new C();
> y = new C();
>
> w.f=x;
> w.f=y;
>
> return x;
> }
> }
> _______________________________________________
> 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