[Soot-list] The PointsToSets are empty for a simple case(SPARK)

Richard L. Halpert richardlhalpert at gmail.com
Wed Apr 18 20:58:44 EDT 2007


$ soot --ph cg
Phase cg:

The Call Graph Constructor computes a call graph for whole
program analysis. When this pack finishes, a call graph is
available in the Scene. The different phases in this pack are
different ways to construct the call graph. Exactly one phase in
this pack must be enabled; Soot will raise an error otherwise.

Recognized options (with default values):
 enabled (true)
...
 all-reachable (false)         Assume all methods of application classes are

                               reachable.
...

On 4/18/07, Chris Pickett <chris.pickett at mail.mcgill.ca> wrote:
>
> I just list all the classes I want to force on the command line, but
> that doesn't guarantee they'll get included in the call
> graph.  (I think.)  There is some place in Soot with a hard-coded list
> of entry points, you can try looking for it with `grep -ir entry *'.
>
> Chris
>
> Peng Li wrote:
> > HI Eric,
> > Yes, you are correct!! The class is not reachable from the main-class
> > (I didnot realize that the class is just a test case).
> >
> > I am wonderng  if spark has any options to force it handle all the
> > classes no matter if they are dead code? Currently, I just put a new
> > line "JGradientChooser jgc = new JGradientChooser ()" into the main
> > class to create a "fake" tie between the main class and
> > JGradientChooser . Do you have a better way to do that? I did not find
> > any helpful information from the online soot phase options.
> >
> > Cheers
> > Peng
> >
> > 2007/4/17, Eric Bodden <eric.bodden at mail.mcgill.ca>:
> >> Is the class you are looking at reachable? Soot usually only reports
> >> empty points-to sets, if it's dead code, i.e. not reachable from your
> >> main-class.
> >>
> >> Eric
> >>
> >> On 17/04/07, Peng Li <lipeng360 at gmail.com> wrote:
> >> > HI
> >> > I am using SPARK to analyse a simple GUI class. It is very simple,
> >> > public class JGradientChooser extends JDialog
> >> > {
> >> > Color[] colors = { Color.WHITE, Color.BLACK };
> >> > String[] elements = { "linear", "radial" };
> >> >
> >> > JComboBox combo1 = new JComboBox(elements);
> >> > JComboBox combo2 = new JComboBox(elements1);
> >> >
> >> > AlphaColorJButton button_color1 = new AlphaColorJButton(colors[0]);
> >> > AlphaColorJButton button_color2 = new AlphaColorJButton(colors[1]);
> >> > //AlphaColorJButton is an GUI class that extends JButton.
> >> >
> >> > PreviewPanel preview_panel = new PreviewPanel(button_color1,
> >> > button_color2,combo1,combo2);
> >> > }
> >> >
> >> > The weird thing is when I use spark to get the PointsToSets for all
> >> > the parameters of new PreviewPanel(button_color1,
> >> > button_color2,combo1,combo2). The PointsToSets are all empty...
> >> >
> >> > specialinvoke $r43.<at.bestsolution.ext.swing.dialog.PreviewPanel:
> >> > void
> >> <init>(at.bestsolution.ext.swing.AlphaColorJButton,
> at.bestsolution.ext.swing.AlphaColorJButton,javax.swing.JComboBox,
> javax.swing.JComboBox)>(r9,
> >>
> >> > r11, r4, r8)
> >> > r9 PointsToSet size is 0
> >> > r11 PointsToSet size is 0
> >> > r4 PointsToSet size is 0
> >> > r8 PointsToSet size is 0
> >> >
> >> > I emailed this mailing-list before to ask why the PointsToSet
> for  the
> >> > parameter of AlphaColorJButton button_color1 = new
> >> > AlphaColorJButton(colors[0]); is empy. Eric replied me the reason is
> >> > because the way how SPARK handles array element(color[0]). However,
> >> > for the JGradientChooser, the result does not make sense since the
> >> > parameters of PreviewPanel() are not array or array elements?
> >> >
> >> > I have tried many combinations of the spark options, but all of them
> >> > did not work.
> >> > cheers
> >> > Peng
> >> >
> >> > PS.
> >> > the spark options,
> >> > opt.put("enabled","true");
> >> > opt.put("verbose","true");
> >> > opt.put("ignore-types","false");
> >> > opt.put("force-gc","false");
> >> > opt.put("pre-jimplify","false");
> >> > opt.put("vta","false");
> >> > opt.put("rta","false");
> >> > opt.put("field-based","false");
> >> > opt.put("types-for-sites","false");
> >> > opt.put("merge-stringbuffer","true");
> >> > opt.put("string-constants","false");   //
> >> > opt.put("simulate-natives","true");
> >> > opt.put("simple-edges-bidirectional","false");
> >> > opt.put("on-fly-cg","true");     //     true
> >> > opt.put("simplify-offline","false");
> >> > opt.put("simplify-sccs","false");
> >> > opt.put("ignore-types-for-sccs","false");
> >> > opt.put("propagator","worklist"); //worklist
> >> > opt.put("set-impl","double");
> >> > opt.put("double-set-old","hybrid");
> >> > opt.put("double-set-new","hybrid");
> >> > opt.put("dump-html","false");
> >> > opt.put("dump-pag","false");
> >> > opt.put("dump-solution","false");
> >> > opt.put("topo-sort","false");
> >> > opt.put("dump-types","true");
> >> > opt.put("class-method-var","true");
> >> > opt.put("dump-answer","false");
> >> > opt.put("add-tags","false");
> >> > opt.put("set-mass","false");
> >> > _______________________________________________
> >> > Soot-list mailing list
> >> > Soot-list at sable.mcgill.ca
> >> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> >> >
> >>
> >>
> >> --
> >> Eric Bodden
> >> Sable Research Group
> >> McGill University, Montréal, Canada
> >>
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20070418/131a3258/attachment-0001.htm


More information about the Soot-list mailing list