[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