[Soot-list] Reachability in CFGs
Chris Pickett
chris.pickett at mail.mcgill.ca
Sun Nov 4 16:51:44 EST 2007
irem wrote:
> First of all, thanks for the suggestions on visualizing the control flow
> graphs.
>
> Actually, the reason I was interested in various predecessors and
> successors of nodes in control graphs is that I am interested in
> reachability.
>
> If we look at the following example:
>
> m1();
>
> try {
> m2();
> }
> catch (Exception e){
> m3();
> }
>
>
> A property such as "method m2 is always called before m3" holds for this
> program. But Soot constructs CFGs which concentrate on completed
> executions, hence there is an edge from the predecessor of the statement
> which calls m2 to the exception handler and it seems as if one can end
> up in the handler without calling m2.
As an aside, what do you mean by "call"? It is certainly possible for
INVOKE* to throw an exception before m2 is actually entered.
http://java.sun.com/docs/books/jvms/second_edition/html/Instructions2.doc6.html#invokeinterface
I don't think that changes what you are trying to do below, but I
thought I should mention it anyway.
Chris
> I think this was not the case for certain earlier versions, and I
> inherited a code that worked fine with them. But now I have to
> manipulate the CFGs given by soot to reflect reachability better.
>
> Anyway, right now, what I do is to construct the ExceptionalUnitGraph,
> and check
> for each node in the graph:
> for each of its exceptional successors in the graph:
> whether the successor is a handler unit for one of the
> ExceptionalDests of the node
> if this is so,
> I keep the edge between the node and successor
> else
> I delete the edge
>
>
>
> I have not tested this enough to see if it is correct. What does
> everyone think?
> And would you think of integrating such an alternative graph to soot,
> i.e. through some option? I think many people may be interested in it.
>
> Irem Aktug
> Ph.D. Student
> Stockholm, Sweden
>
>
> _______________________________________________
> 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