<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Source Code Pro";
        panose-1:2 11 5 9 3 4 3 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Sprechblasentext Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.HTMLVorformatiertZchn
        {mso-style-name:"HTML Vorformatiert Zchn";
        mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert";
        font-family:"Consolas","serif";
        mso-fareast-language:DE;}
span.E-MailFormatvorlage19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.SprechblasentextZchn
        {mso-style-name:"Sprechblasentext Zchn";
        mso-style-priority:99;
        mso-style-link:Sprechblasentext;
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:DE;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>The code for querying the PointTo-sets is still the same. The normal approach, however, is to not use any internal Soot objects, but stay at the interface level. Normally, you pick two locals for which you want to find out whether they can potentially alias, get their respective PointsTo sets, and then call hasNonEmptyIntersection() on them. If there is a non-empty intersection, you know that the respective objects may potentially alias at runtime.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Ding Li [mailto:dingli@usc.edu] <br><b>Gesendet:</b> Dienstag, 7. Juli 2015 21:00<br><b>An:</b> Steven Arzt; soot-list@cs.mcgill.ca<br><b>Betreff:</b> Re: [Soot-list] Recarding spark<o:p></o:p></span></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><p class=MsoNormal>Thanks Steven, I have tried your code, but it still doesn't give me any result. Could you give me a more concrete example? Maybe include how to query the result. Thanks a lot<o:p></o:p></p></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><div><div><p class=MsoNormal>On Tue, Jul 7, 2015 at 4:45 AM Steven Arzt &lt;<a href="mailto:Steven.Arzt@cased.de">Steven.Arzt@cased.de</a>&gt; wrote:<o:p></o:p></p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0cm 0cm 0cm 6.0pt;margin-left:4.8pt;margin-right:0cm'><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Ding,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>You are trying to use SPARK on an Android app. SPARK requires an entry point which Android applications, however, do not have. Android apps instead tightly integrate with the Android OS using a pre-defined lifecycle. One approach to build a callgraph for Android apps is thus to generate a dummy entry point (i.e., main method) which simulates the interactions between the app and the OS. You can build such a dummy main method using FlowDroid as follows:</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetupApplication app = new SetupApplication</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (&quot;D:/Tools/adt-bundle-windows-x86_64-20140321/sdk/platforms&quot;,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;D:/Temp/com.tweakersoft.aroundme-1.apk&quot;);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; app.calculateSourcesSinksEntrypoints(&quot;D:/Arbeit/Android Analyse/soot-infoflow-android/SourcesAndSinks.txt&quot;);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soot.G.reset();</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Options.v().set_src_prec(Options.src_prec_apk);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options.v().set_process_dir(Collections.singletonList(&quot;D:/Temp/com.tweakersoft.aroundme-1.apk&quot;));</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options.v().set_android_jars(&quot;D:/Tools/adt-bundle-windows-x86_64-20140321/sdk/platforms&quot;);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options.v().set_whole_program(true);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options.v().set_allow_phantom_refs(true);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options.v().set_output_format(Options.output_format_class);</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options.v().setPhaseOption(&quot;cg.spark&quot;, &quot;on&quot;);</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Scene.v().loadNecessaryClasses();</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SootMethod entryPoint = app.getEntryPointCreator().createDummyMain();</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Options.v().set_main_class(entryPoint.getSignature());</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Scene.v().setEntryPoints(Collections.singletonList(entryPoint));</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.out.println(entryPoint.getActiveBody());</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PackManager.v().runPacks();</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JimpleBasedInterproceduralCFG icfg = new JimpleBasedInterproceduralCFG();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(Scene.v().getCallGraph().size()); </span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Best regards,</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp; Steven</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>&nbsp;</span><o:p></o:p></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">soot-list-bounces@CS.McGill.CA</a> [mailto:<a href="mailto:soot-list-bounces@CS.McGill.CA" target="_blank">soot-list-bounces@CS.McGill.CA</a>] <b>Im Auftrag von </b>Ding Li<br><b>Gesendet:</b> Dienstag, 7. Juli 2015 04:01<br><b>An:</b> <a href="mailto:soot-list@CS.McGill.CA" target="_blank">soot-list@CS.McGill.CA</a><br><b>Betreff:</b> [Soot-list] Recarding spark</span><o:p></o:p></p></div></div><div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>Hi I have encountered some problem with spark:<o:p></o:p></p><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>My code is like this:<o:p></o:p></p></div><div><pre style='background:#2B2B2B'><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_src_prec(Options.</span><i><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#9876AA'>src_prec_apk</span></i><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_android_jars(androidpath)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_whole_program(</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>true</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_verbose(</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>false</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().setPhaseOption(</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#6A8759'>&quot;cg.spark&quot;</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>, </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#6A8759'>&quot;on&quot;</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_output_format(Options.</span><i><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#9876AA'>src_prec_J</span></i><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_keep_line_number(</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>true</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_keep_offset(</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>true</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_allow_phantom_refs(</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>true</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Options.<i>v</i>().set_process_dir(path_list)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Scene.<i>v</i>().loadNecessaryClasses()</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Scene.<i>v</i>().setEntryPoints(entryPoints)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>PackManager.<i>v</i>().runPacks()</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>PAG pag=(PAG)Scene.<i>v</i>().getPointsToAnalysis()</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br><br><br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:gray'>//for any method<br></span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>while </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>(stmtIt.hasNext()) {<br>&nbsp;&nbsp;&nbsp; Unit u = (Unit) stmtIt.next()</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br>&nbsp;&nbsp;&nbsp; </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Stmt stmt=(Stmt)u</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br><br>&nbsp;&nbsp;&nbsp; if</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>(stmt.containsInvokeExpr())<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; InvokeExpr exp = stmt.getInvokeExpr()</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>(exp.getUseBoxes().size()&gt;</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#6897BB'>1</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Value l=exp.getUseBoxes().get(</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#6897BB'>0</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>).getValue()</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>(l </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>instanceof </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>Local)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node n=pag.findLocalVarNode((Local) l)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>System.</span><i><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#9876AA'>out</span></i><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>.println(n)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>; </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:gray'>//it is null<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>PointsToSetInternal pset=(PointsToSetInternal)pag.reachingObjects((Local) l)</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>System.</span><i><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#9876AA'>out</span></i><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>.println(pset.size())</span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#CC7832'>; </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:gray'>//the size is 0<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style='font-size:10.5pt;font-family:"Source Code Pro";color:#A9B7C6'>}<br><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br><br>&nbsp;&nbsp;&nbsp; }<br>}</span><o:p></o:p></pre></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>&nbsp;<o:p></o:p></p></div><div><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'>I initialize soot with the first half, and then for any methods, I check the PointedToSet for the first arg of each method invocation. However, for any , I always get size of 0 in the PointedToSet and the Node of the argument in PAG is always null. I think at list the PointedToSet should contain the variable itself and the size should be at least 1, instead of empty. I am not quite sure where is wrong here, what should I set in oder to get pag.reachingObjects return a non-empty set? Thanks<o:p></o:p></p></div></div></div></div></blockquote></div></div></body></html>