[Soot-list] Rebuilding the context sensitive call graph

Khilan Gudka khilan.gudka at imperial.ac.uk
Thu Jan 31 21:28:56 EST 2008


Chris Pickett wrote:
> Khilan Gudka wrote:
>> Ok, so from what I understand, the call graph will record this fact by 
>> adding an edge from the specialinvoke statement to the corresponding 
>> target method that will be called (which it can determine statically 
>> as you said). So, even if it was dynamic dispatch, would it not still 
>> invoke the method I have duplicated? Although, does the jvm expect the 
>> method to also exist in all superclasses up to the reference type? 
>> Does the jvm perform such checks?
> 
> I think you are going to run into lots problems if you want to execute 
> these programs.  It is very much worth your time to make very simple 
> examples work and build on them until you handle all the complexity you 
> need to.  It is also worth your time to read the relevant bits of the 
> JVM Specification.  Renaming <init> is not really doable in my humble 
> opinion; like I said, you might want to try overloading it.  (You 
> shouldn't have to touch <clinit>.)
> 
> Chris

So would that involve introducing a dummy type for a context? We 
realised that statements may implicitly call clinit which was a painful 
discovery. However, we decided to ignore clinit edges and statically 
determine the classes that are accessed and manually load them in at the 
start of the program. This would mean that we wouldn't have to worry 
about these types of method invocations during the analysis. Do you 
think this is sound?

-- 
Khilan Gudka
PhD Student
Department of Computing
Imperial College London
http://www.khilan.com/


More information about the Soot-list mailing list