[Soot-list] Question about the CHA-based call graph in Soot.

Yu Feng fengyu8299 at gmail.com
Sun Feb 9 18:30:58 EST 2014


Hi all,

I ran the following simple codes with command-line options:

soot.Main.v().run(new String[] {

"-W",

"-main-class", className,

"-process-dir", "/Documents/workspace/CFLexamples/bin",

"-src-prec", "java",

"-allow-phantom-refs",

"-no-bodies-for-excluded",

"-exclude", "java",

"-exclude", "javax",

"-output-format", "none",

"-p", "jb", "use-original-names:true",

"-p", "cg.cha", "on",

"-app", className } );
A {
foo();
}

B extends A{
foo();
}

C extends A{
foo();
}

A a = new C();
a.foo();

Based on CHA(http://www.cs.ucla.edu/~palsberg/paper/oopsla00.pdf), all the
'foo()' in A, B and C should be added to the call edges for 'a.foo()' .

With the default cg.cha in soot, I got the precise result:  foo()@C, but
this is inconsistent with the concept of CHA.

Did Soot perform any optimization automatically? How can I get an
'imprecise' and original version of CHA-based call graph?

Thanks in advance,


-- 
--Yu
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20140209/7c849f3e/attachment.html 


More information about the Soot-list mailing list