<div dir="ltr">Hi Bernhard,<div><br></div><div>I am using custom entry points as described in: <a href="https://github.com/Sable/soot/wiki/Using-Soot-with-custom-entry-points">https://github.com/Sable/soot/wiki/Using-Soot-with-custom-entry-points</a></div><div><br></div><div>Following is my code:</div><div><br></div><div>







<p class="gmail-p1"><span class="gmail-s1">public</span> <span class="gmail-s1">static</span> <span class="gmail-s1">void</span> main(String[] <span class="gmail-s2">args</span>) {</p>
<p class="gmail-p1"><span class="gmail-Apple-tab-span"> </span><span class="gmail-Apple-tab-span">        </span>   List<String> <span class="gmail-s2">argsList</span> = <span class="gmail-s1">new</span> ArrayList<String>(Arrays.asList(<span class="gmail-s2">args</span>));</p>
<p class="gmail-p1"><span class="gmail-Apple-tab-span"> </span><span class="gmail-Apple-tab-span">        </span>   <span class="gmail-s2">argsList</span>.addAll(Arrays.asList(<span class="gmail-s1">new</span> String[]{</p>
<p class="gmail-p2"><span class="gmail-s3"><span class="gmail-Apple-tab-span">  </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span>   </span>"-allow-phantom-refs"<span class="gmail-s3">,</span></p>
<p class="gmail-p1"><span class="gmail-Apple-tab-span"> </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span>   <span class="gmail-s4">"-w"</span>,</p>
<p class="gmail-p3"><span class="gmail-s3"><span class="gmail-Apple-tab-span">  </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span>   </span>//"-no-bodies-for-excluded",</p>
<p class="gmail-p1"><span class="gmail-Apple-tab-span"> </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span>   <span class="gmail-s4">"-cp"</span>,</p>
<p class="gmail-p2"><span class="gmail-s3"><span class="gmail-Apple-tab-span">  </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span>   </span>"/Users/Downloads/jscience-4.2.3/jscience.jar"<span class="gmail-s3">,</span></p>
<p class="gmail-p2"><span class="gmail-s3"><span class="gmail-Apple-tab-span">  </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span>   </span>"-process-dir"<span class="gmail-s3">,</span></p>
<p class="gmail-p2"><span class="gmail-s3"><span class="gmail-Apple-tab-span">  </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-Apple-tab-span">        </span>   </span>"/Users//Downloads/jscience-4.2.3/jscience.jar"</p>
<p class="gmail-p1"><span class="gmail-Apple-tab-span"> </span><span class="gmail-Apple-tab-span">        </span>   }));</p>
<p class="gmail-p1"><span class="gmail-Apple-tab-span"> </span><span class="gmail-Apple-tab-span">        </span>   <span class="gmail-s2">args</span> = <span class="gmail-s2">argsList</span>.toArray(<span class="gmail-s1">new</span> String[0]);</p>
<p class="gmail-p4">  Options.v().parse(<span class="gmail-s2">args</span>);</p>
<p class="gmail-p1">   SootClass <span class="gmail-s2">c</span> = Scene.v().forceResolve(<span class="gmail-s4">"org.jscience.mathematics.vector.LUDecomposition"</span>, SootClass.<span class="gmail-s6">BODIES</span>);</p>
<p class="gmail-p1">    <span class="gmail-s2">c</span>.setApplicationClass();</p>
<p class="gmail-p1">    Scene.v().loadNecessaryClasses();</p>
<p class="gmail-p1">    SootMethod <span class="gmail-s2">method</span>=<span class="gmail-s2">c</span>.getMethodByName(<span class="gmail-s4">"solve"</span>);</p>
<p class="gmail-p1">    L<span class="gmail-s5">ist</span> <span class="gmail-s2">entryPoints</span>=<span class="gmail-s1">new</span> <span class="gmail-s5">ArrayList</span>();</p>
<p class="gmail-p1">    <span class="gmail-s7">entryPoints</span><span class="gmail-s5">.add(</span><span class="gmail-s7">method</span><span class="gmail-s5">)</span>;</p>
<p class="gmail-p1">    Scene.v().setEntryPoints(<span class="gmail-s7">entryPoints</span>);</p>
<p class="gmail-p1">    <span class="gmail-s5">HashMap</span> <span class="gmail-s2">opt</span> = <span class="gmail-s1">new</span> <span class="gmail-s5">HashMap</span>();</p>
<p class="gmail-p1">    <span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"enabled"</span><span class="gmail-s5">,</span><span class="gmail-s8">"true"</span><span class="gmail-s5">)</span>;</p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"verbose"</span><span class="gmail-s9">,</span><span class="gmail-s5">"true"</span><span class="gmail-s9">)</span><span class="gmail-s3">;</span></p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"ignore-types"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;          </p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"force-gc"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;            </p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"pre-jimplify"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;          </p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"vta"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;                   </p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"rta"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;                   </p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"field-based"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;           </p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"types-for-sites"</span><span class="gmail-s9">,</span><span class="gmail-s5">"false"</span><span class="gmail-s9">)</span><span class="gmail-s3">;        </span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"merge-stringbuffer"</span><span class="gmail-s9">,</span><span class="gmail-s5">"true"</span><span class="gmail-s9">)</span><span class="gmail-s3">;   </span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"string-constants"</span><span class="gmail-s9">,</span><span class="gmail-s5">"false"</span><span class="gmail-s9">)</span><span class="gmail-s3">;     </span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"simulate-natives"</span><span class="gmail-s9">,</span><span class="gmail-s5">"true"</span><span class="gmail-s9">)</span><span class="gmail-s3">;      </span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"simple-edges-bidirectional"</span><span class="gmail-s9">,</span><span class="gmail-s5">"false"</span><span class="gmail-s9">)</span><span class="gmail-s3">;</span></p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"on-fly-cg"</span><span class="gmail-s5">,</span><span class="gmail-s8">"true"</span><span class="gmail-s5">)</span>;            </p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"simplify-offline"</span><span class="gmail-s9">,</span><span class="gmail-s5">"false"</span><span class="gmail-s9">)</span><span class="gmail-s3">;    </span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"simplify-sccs"</span><span class="gmail-s9">,</span><span class="gmail-s5">"false"</span><span class="gmail-s9">)</span><span class="gmail-s3">;        </span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"ignore-types-for-sccs"</span><span class="gmail-s9">,</span><span class="gmail-s5">"false"</span><span class="gmail-s9">)</span><span class="gmail-s3">;</span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"propagator"</span><span class="gmail-s9">,</span><span class="gmail-s5">"worklist"</span><span class="gmail-s9">)</span><span class="gmail-s3">;</span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"set-impl"</span><span class="gmail-s9">,</span><span class="gmail-s5">"double"</span><span class="gmail-s9">)</span><span class="gmail-s3">;</span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"double-set-old"</span><span class="gmail-s9">,</span><span class="gmail-s5">"hybrid"</span><span class="gmail-s9">)</span><span class="gmail-s3">;         </span></p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"double-set-new"</span><span class="gmail-s9">,</span><span class="gmail-s5">"hybrid"</span><span class="gmail-s9">)</span><span class="gmail-s3">;</span></p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"dump-html"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;           </p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"dump-pag"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;             </p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"dump-solution"</span><span class="gmail-s9">,</span><span class="gmail-s5">"false"</span><span class="gmail-s9">)</span><span class="gmail-s3">;        </span></p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"topo-sort"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;           </p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"dump-types"</span><span class="gmail-s5">,</span><span class="gmail-s8">"true"</span><span class="gmail-s5">)</span>;             </p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"class-method-var"</span><span class="gmail-s9">,</span><span class="gmail-s5">"true"</span><span class="gmail-s9">)</span><span class="gmail-s3">;     </span></p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"dump-answer"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;          </p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span><span class="gmail-s7">opt</span><span class="gmail-s5">.put(</span><span class="gmail-s8">"add-tags"</span><span class="gmail-s5">,</span><span class="gmail-s8">"false"</span><span class="gmail-s5">)</span>;             </p>
<p class="gmail-p2"><span class="gmail-s3">   <span class="gmail-Apple-tab-span">     </span><span class="gmail-Apple-tab-span">        </span></span><span class="gmail-s7">opt</span><span class="gmail-s9">.put(</span><span class="gmail-s5">"set-mass"</span><span class="gmail-s9">,</span><span class="gmail-s5">"false"</span><span class="gmail-s9">)</span><span class="gmail-s3">;</span></p>
<p class="gmail-p3"><span class="gmail-s3">           </span>//PackManager.v().runPacks();</p>
<p class="gmail-p1">   <span class="gmail-Apple-tab-span">    </span><span class="gmail-Apple-tab-span">        </span>SparkTransformer.v().transform(<span class="gmail-s4">""</span>,<span class="gmail-s2">opt</span>);</p>
<p class="gmail-p1">           CallGraph <span class="gmail-s2">cg</span> = Scene.v().getCallGraph();</p>
<p class="gmail-p1"><span class="gmail-Apple-tab-span"> </span>       System.<span class="gmail-s6">out</span>.println(<span class="gmail-s2">cg</span>.size());</p>
<p class="gmail-p1"><span class="gmail-Apple-tab-span"> </span>       serializeCallGraph(<span class="gmail-s2">cg</span>,<span class="gmail-s4">"sparkCallGraph.dot"</span>)</p>
<p class="gmail-p1">}</p></div><div class="gmail_extra">Thanks,<br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>- Upulee</div><div dir="ltr"><span style="font-size:13.3333339691162px">--------------------------<span></span><span></span>----------------------------------------</span><br></div>Upulee Kanewala, Ph.D.<br></div><div>Assistant Professor</div><div dir="ltr">Computer Science Department</div><div dir="ltr">Montana State University<br>Email: <a href="mailto:upulee.kanewala@cs.montana.edu" target="_blank">upulee.kanewala@cs.montana.edu</a>       </div><div dir="ltr">URL: <a href="http://www.cs.montana.edu/upulee.kanewala/" target="_blank">http://www.cs.montana.edu/upulee.kanewala/</a></div><div dir="ltr">---------------------------------------------------------------------</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">On Tue, May 9, 2017 at 2:06 AM, Bernhard Berger <span dir="ltr"><<a href="mailto:berber@tzi.de" target="_blank">berber@tzi.de</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div style="word-wrap:break-word">Hi Upulee,<div><br></div><div>how do you generate the call graph? Normally Soot expects a static main-method to work correctly. Using non-static entry points has showed to result ins troubles: <a href="https://mailman.cs.mcgill.ca/pipermail/soot-list/2013-January/005105.html" target="_blank">https://mailman.cs.<wbr>mcgill.ca/pipermail/soot-list/<wbr>2013-January/005105.html</a></div><div><br></div><div>Regards, Bernhard</div><div><br></div><div><blockquote type="cite"><div><div class="h5"><div>Am 08.05.2017 um 23:37 schrieb Upulee Kanewala <<a href="mailto:upuleegk@gmail.com" target="_blank">upuleegk@gmail.com</a>>:</div><br class="m_-9215437147550257146Apple-interchange-newline"></div></div><div><div><div class="h5"><div dir="ltr">Hello all,<div><br></div><div>I am using SPARK to generate the call graph for a method from JScience listed below. The generated call graph only has the following three nodes and the edges:</div><div><br></div><div>solve -> StringBuilder:<init></div><div>solve -> DimentionException:<init></div><div>DimentionException:<init> -> RunTimeException:<init></div><div><br></div><div>What is the reason for missing the other method calls in the solve() method. Am I missing an option that is causing this? (I followed the examples in the survivor's guide to write my code).</div><div> </div><div><br></div><div><div> /**</div><div>     * Returns the solution X of the equation: A * X = B  with</div><div>     * <code>this = <a href="http://a.lu/" target="_blank">A.lu</a>()</code> using back and forward substitutions.</div><div>     *</div><div>     * @param  B the input matrix.</div><div>     * @return the solution X = (1 / A) * B.</div><div>     * @throws DimensionException if the dimensions do not match.</div><div>     */</div><div>    public DenseMatrix<F> solve(Matrix<F> B) {</div><div>        if (_n != B.getNumberOfRows())</div><div>            throw new DimensionException("Input vector has "</div><div>                    + B.getNumberOfRows() + " rows instead of " + _n);</div><div><br></div><div>        // Copies B with pivoting.</div><div>        final int n = B.getNumberOfColumns();</div><div>        DenseMatrix<F> X = createNullDenseMatrix(_n, n);</div><div>        for (int i = 0; i < _n; i++) {</div><div>            for (int j = 0; j < n; j++) {</div><div>                X.set(i, j, B.get(_pivots.get(i).intValue(<wbr>), j));</div><div>            }</div><div>        }</div><div><br></div><div>        // Solves L * Y = pivot(B)</div><div>        for (int k = 0; k < _n; k++) {</div><div>            for (int i = k + 1; i < _n; i++) {</div><div>                F luik = _LU.get(i, k);</div><div>                for (int j = 0; j < n; j++) {</div><div>                    X.set(i, j, X.get(i, j).plus(</div><div>                            luik.times(X.get(k, j).opposite())));</div><div>                }</div><div>            }</div><div>        }</div><div><br></div><div>        // Solves U * X = Y;</div><div>        for (int k = _n - 1; k >= 0; k--) {</div><div>            for (int j = 0; j < n; j++) {</div><div>                X.set(k, j, (_LU.get(k, k).inverse()).times(X.get(k, j)));</div><div>            }</div><div>            for (int i = 0; i < k; i++) {</div><div>                F luik = _LU.get(i, k);</div><div>                for (int j = 0; j < n; j++) {</div><div>                    X.set(i, j, X.get(i, j).plus(</div><div>                            luik.times(X.get(k, j).opposite())));</div><div>                }</div><div>            }</div><div>        }</div><div>        return X;</div><div>    }</div><div><br></div><div><br></div><div>Thanks,</div><div><div class="m_-9215437147550257146gmail_signature"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div>- Upulee</div><div dir="ltr"><br></div></div></div></div></div></div></div></div></div></div></div>
</div></div></div></div>
______________________________<wbr>_________________<br>Soot-list mailing list<br><a href="mailto:Soot-list@CS.McGill.CA" target="_blank">Soot-list@CS.McGill.CA</a><br><a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" target="_blank">https://mailman.CS.McGill.CA/<wbr>mailman/listinfo/soot-list</a><br></div></blockquote></div><br></div></div><br>______________________________<wbr>_________________<br>
Soot-list mailing list<br>
<a href="mailto:Soot-list@CS.McGill.CA">Soot-list@CS.McGill.CA</a><br>
<a href="https://mailman.CS.McGill.CA/mailman/listinfo/soot-list" rel="noreferrer" target="_blank">https://mailman.CS.McGill.CA/<wbr>mailman/listinfo/soot-list</a><br>
<br></blockquote></div><br></div></div>