[Soot-list] about Heros

rohanpadhye rohanpadhye at cse.iitb.ac.in
Fri Apr 19 01:26:16 EDT 2013


Hello Yufeng,

As far as I understand, inter-procedural analysis via 
graph-reachability (what Heros uses) does not allow context-sensitive 
data flow values or flow functions. The analysis itself ensures 
propogation of facts along inter-procedurally valid paths only, so I am 
not saying it is context-insensitive, but just that the computed results 
are not parameterized by a <context, statement> pair but instead just a 
mapping from statements to values (also known as meet over valid paths 
solution).

If that was confusing let me summarize by saying that no, I don't think 
you can handle that statement differently for different contexts, and 
this is a limitation of the IFDS approach, not the Heros framework.

I actually faced the same problem myself which is why I am working on 
an alternate approach to inter-procedural analysis in Soot using 
value-based context-sensitivity (similar to Sharir & Pneuli's tabulation 
method). In this method both flow functions and final results are 
parametrized by the context object. Let me know if you need something 
like this.

Regards,

Rohan Padhye

On 2013-04-18 21:16, Zhang Yufeng wrote:
> Hi Eric,
> I am using Heros in my project.
> I have two questions about the "context-sensitive" problem.
>
> The first question:
> In my IFDS problem,
> in implementing the function
> public FlowFunction<Local> getNormalFlowFunction(Unit curr, Unit 
> succ) {}
> I need to know the context about where the method including 'curr' is 
> invoked.
>
> In my problem, the operations on the Domain D for the same unit are
> different in different context.
> For example, in the following fuction:
>
> void foo() {
> obj1=obj2;
> }
>
> for statement
> obj1=obj2;
>
> the operation on the 'facts' in the domain 'D' is different in the
> different context (where the function foo() is invoked).
>
> But in the function
> public FlowFunction<Local> getNormalFlowFunction(Unit curr, Unit 
> succ) {}
> there is no information indicating that the curr unit is encountered
> under what context.
>
> Can I do this in Heros?
>
>
> The second question is also about the context-sensitive problem.
> After I get the results by solving the IFDS problem.
> I can get the result at each unit by using:
> solver.resultsAt((Stmt)unit);
> right?
> My question is:
> does Heros keep the context-sensitive information in the results?
> In some cases, the results at the same unit are different in 
> different context.
> How can I get this from Heros?
>
> I don't know whether I make it clear.
>
> Thanks.
> Best.
> Yufeng
>
> _______________________________________________
> 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