svf-tools 1.0.561 → 1.0.564
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +7 -38
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +17 -17
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +10 -10
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp.html +0 -1
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +9 -111
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +7 -69
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +37 -37
- package/SVF-doxygen/html/html/SVFModule_8cpp.html +1 -0
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +6 -2
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +65 -3
- package/SVF-doxygen/html/html/SVFStat_8h_source.html +16 -11
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +7 -7
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +1 -1
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat-members.html +18 -68
- package/SVF-doxygen/html/html/classSVF_1_1AndersenStat.html +23 -208
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat-members.html +17 -67
- package/SVF-doxygen/html/html/classSVF_1_1DDAStat.html +22 -176
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat-members.html +20 -70
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +20 -188
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat-members.html +17 -67
- package/SVF-doxygen/html/html/classSVF_1_1ICFGStat.html +18 -172
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +36 -33
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MTA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat-members.html +23 -73
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +26 -180
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat-members.html +22 -72
- package/SVF-doxygen/html/html/classSVF_1_1MemSSAStat.html +18 -172
- package/SVF-doxygen/html/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat-members.html +11 -64
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +33 -1830
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat-members.html +48 -98
- package/SVF-doxygen/html/html/classSVF_1_1SVFGStat.html +32 -186
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +128 -122
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +5 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat-members.html +22 -17
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +237 -34
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat-members.html +17 -67
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +20 -187
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/functions_a.html +5 -9
- package/SVF-doxygen/html/html/functions_b.html +8 -11
- package/SVF-doxygen/html/html/functions_c.html +2 -2
- package/SVF-doxygen/html/html/functions_e.html +2 -3
- package/SVF-doxygen/html/html/functions_f.html +6 -6
- package/SVF-doxygen/html/html/functions_func_b.html +1 -4
- package/SVF-doxygen/html/html/functions_func_p.html +4 -5
- package/SVF-doxygen/html/html/functions_i.html +3 -3
- package/SVF-doxygen/html/html/functions_l.html +6 -6
- package/SVF-doxygen/html/html/functions_m.html +1 -9
- package/SVF-doxygen/html/html/functions_n.html +0 -114
- package/SVF-doxygen/html/html/functions_o.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +18 -27
- package/SVF-doxygen/html/html/functions_s.html +12 -21
- package/SVF-doxygen/html/html/functions_t.html +14 -22
- package/SVF-doxygen/html/html/functions_u.html +0 -3
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_vars_a.html +0 -4
- package/SVF-doxygen/html/html/functions_vars_e.html +1 -2
- package/SVF-doxygen/html/html/functions_vars_m.html +1 -9
- package/SVF-doxygen/html/html/functions_vars_n.html +0 -114
- package/SVF-doxygen/html/html/functions_vars_p.html +1 -7
- package/SVF-doxygen/html/html/functions_vars_s.html +1 -8
- package/SVF-doxygen/html/html/functions_vars_t.html +9 -15
- package/SVF-doxygen/html/html/functions_vars_u.html +0 -3
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +1 -2
- package/SVF-doxygen/html/html/search/all_10.js +12 -14
- package/SVF-doxygen/html/html/search/all_11.js +1 -1
- package/SVF-doxygen/html/html/search/all_12.js +9 -11
- package/SVF-doxygen/html/html/search/all_13.js +7 -9
- package/SVF-doxygen/html/html/search/all_14.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +4 -4
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_2.js +1 -2
- package/SVF-doxygen/html/html/search/all_3.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +2 -2
- package/SVF-doxygen/html/html/search/all_6.js +2 -2
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +4 -4
- package/SVF-doxygen/html/html/search/all_d.js +2 -4
- package/SVF-doxygen/html/html/search/all_e.js +4 -40
- package/SVF-doxygen/html/html/search/all_f.js +2 -2
- package/SVF-doxygen/html/html/search/functions_1.js +1 -2
- package/SVF-doxygen/html/html/search/functions_f.js +3 -3
- package/SVF-doxygen/html/html/search/variables_1.js +1 -2
- package/SVF-doxygen/html/html/search/variables_10.js +1 -3
- package/SVF-doxygen/html/html/search/variables_12.js +1 -3
- package/SVF-doxygen/html/html/search/variables_13.js +6 -8
- package/SVF-doxygen/html/html/search/variables_14.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_c.js +1 -1
- package/SVF-doxygen/html/html/search/variables_d.js +2 -4
- package/SVF-doxygen/html/html/search/variables_e.js +4 -40
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/include/DDA/DDAVFSolver.h +4 -4
- package/include/Util/PTAStat.h +0 -79
- package/include/Util/SVFStat.h +7 -2
- package/lib/MTA/LockAnalysis.cpp +4 -4
- package/lib/MTA/MHP.cpp +2 -2
- package/lib/SVF-FE/LLVMModule.cpp +5 -0
- package/lib/SVF-FE/SVFIRBuilder.cpp +26 -0
- package/lib/Util/ExtAPI.cpp +42 -0
- package/lib/Util/PTAStat.cpp +7 -254
- package/lib/Util/SVFModule.cpp +4 -0
- package/lib/Util/SVFStat.cpp +202 -2
- package/lib/WPA/AndersenStat.cpp +31 -31
- package/lib/WPA/FlowSensitiveStat.cpp +14 -14
- package/lib/WPA/VersionedFlowSensitiveStat.cpp +13 -13
- package/package.json +1 -1
|
@@ -122,7 +122,7 @@ $(function() {
|
|
|
122
122
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00436">LLVMUtil.cpp:436</a></div></div>
|
|
123
123
|
<div class="ttc" id="classSVF_1_1PointsTo_html"><div class="ttname"><a href="classSVF_1_1PointsTo.html">SVF::PointsTo</a></div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00028">PointsTo.h:28</a></div></div>
|
|
124
124
|
<div class="ttc" id="classSVF_1_1SVFIR_html"><div class="ttname"><a href="classSVF_1_1SVFIR.html">SVF::SVFIR</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00043">SVFIR.h:43</a></div></div>
|
|
125
|
-
<div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#
|
|
125
|
+
<div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00031">SVFModule.cpp:31</a></div></div>
|
|
126
126
|
<div class="ttc" id="classSVF_1_1SVFIR_html_aa1943d53e75aef9b014953143c6894da"><div class="ttname"><a href="classSVF_1_1SVFIR.html#aa1943d53e75aef9b014953143c6894da">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG()</div><div class="ttdoc">Return ICFG. </div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00132">SVFIR.h:132</a></div></div>
|
|
127
127
|
<div class="ttc" id="svf-ex_8cpp_html_af45b449c07f1c975eea45d40d1cc37f6"><div class="ttname"><a href="svf-ex_8cpp.html#af45b449c07f1c975eea45d40d1cc37f6">traverseOnICFG</a></div><div class="ttdeci">void traverseOnICFG(ICFG *icfg, const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00080">svf-ex.cpp:80</a></div></div>
|
|
128
128
|
<div class="ttc" id="cJSON_8h_html_ad4c68ea99a26b0a98ad9a79982960458"><div class="ttname"><a href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a></div><div class="ttdeci">const char *const string</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00172">cJSON.h:172</a></div></div>
|
|
@@ -154,7 +154,7 @@ Functions</h2></td></tr>
|
|
|
154
154
|
<div class="fragment"><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> {</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span> </div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <span class="keywordtype">int</span> arg_num = 0;</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordtype">char</span> **arg_value = <span class="keyword">new</span> <span class="keywordtype">char</span>*[argc];</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  std::vector<std::string> moduleNameVec;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">LLVMUtil::processArguments</a>(argc, argv, arg_num, arg_value, moduleNameVec);</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  cl::ParseCommandLineOptions(arg_num, arg_value,</div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="stringliteral">"Whole Program Points-to Analysis\n"</span>);</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span> </div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <span class="keywordflow">if</span> (Options::WriteAnder == <span class="stringliteral">"ir_annotator"</span>)</div><div class="line"><a name="l00051"></a><span class="lineno"> 51</span>  {</div><div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  }</div><div class="line"><a name="l00054"></a><span class="lineno"> 54</span> </div><div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* svfModule = LLVMModuleSet::getLLVMModuleSet()->buildSVFModule(moduleNameVec);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  svfModule-><a class="code" href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">buildSymbolTableInfo</a>();</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> </div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  <a class="code" href="classSVF_1_1WPAPass.html">WPAPass</a> *wpa = <span class="keyword">new</span> <a class="code" href="classSVF_1_1WPAPass.html">WPAPass</a>();</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  wpa-><a class="code" href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">runOnModule</a>(svfModule);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> </div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">return</span> 0;</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> }</div><div class="ttc" id="classSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00041">SVFModule.h:41</a></div></div>
|
|
155
155
|
<div class="ttc" id="classSVF_1_1WPAPass_html"><div class="ttname"><a href="classSVF_1_1WPAPass.html">SVF::WPAPass</a></div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8h_source.html#l00054">WPAPass.h:54</a></div></div>
|
|
156
156
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00436">LLVMUtil.cpp:436</a></div></div>
|
|
157
|
-
<div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#
|
|
157
|
+
<div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00031">SVFModule.cpp:31</a></div></div>
|
|
158
158
|
<div class="ttc" id="classSVF_1_1WPAPass_html_a394dcd976c1ef08d9cadcba8f5d07c75"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">SVF::WPAPass::runOnModule</a></div><div class="ttdeci">virtual void runOnModule(SVFModule *svfModule)</div><div class="ttdoc">Run pointer analysis on SVFModule. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00070">WPAPass.cpp:70</a></div></div>
|
|
159
159
|
</div><!-- fragment -->
|
|
160
160
|
</div>
|
|
@@ -76,7 +76,7 @@ $(function() {
|
|
|
76
76
|
<div class="ttc" id="Options_8h_html"><div class="ttname"><a href="Options_8h.html">Options.h</a></div></div>
|
|
77
77
|
<div class="ttc" id="namespaceSVF_html"><div class="ttname"><a href="namespaceSVF.html">SVF</a></div><div class="ttdoc">for isBitcode </div><div class="ttdef"><b>Definition:</b> <a href="CFGNormalizer_8h_source.html#l00035">CFGNormalizer.h:35</a></div></div>
|
|
78
78
|
<div class="ttc" id="namespaceSVF_1_1LLVMUtil_html_accdd44093d6d145dc92edeaaff3f5732"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#accdd44093d6d145dc92edeaaff3f5732">SVF::LLVMUtil::processArguments</a></div><div class="ttdeci">void processArguments(int argc, char **argv, int &arg_num, char **arg_value, std::vector< std::string > &moduleNameVec)</div><div class="ttdoc">Parse argument for multi-module analysis. </div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00436">LLVMUtil.cpp:436</a></div></div>
|
|
79
|
-
<div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#
|
|
79
|
+
<div class="ttc" id="classSVF_1_1SVFModule_html_aa03ab5272652290f30870c6e2d053d98"><div class="ttname"><a href="classSVF_1_1SVFModule.html#aa03ab5272652290f30870c6e2d053d98">SVF::SVFModule::buildSymbolTableInfo</a></div><div class="ttdeci">void buildSymbolTableInfo()</div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8cpp_source.html#l00031">SVFModule.cpp:31</a></div></div>
|
|
80
80
|
<div class="ttc" id="classSVF_1_1WPAPass_html_a394dcd976c1ef08d9cadcba8f5d07c75"><div class="ttname"><a href="classSVF_1_1WPAPass.html#a394dcd976c1ef08d9cadcba8f5d07c75">SVF::WPAPass::runOnModule</a></div><div class="ttdeci">virtual void runOnModule(SVFModule *svfModule)</div><div class="ttdoc">Run pointer analysis on SVFModule. </div><div class="ttdef"><b>Definition:</b> <a href="WPAPass_8cpp_source.html#l00070">WPAPass.cpp:70</a></div></div>
|
|
81
81
|
<div class="ttc" id="LLVMUtil_8h_html"><div class="ttname"><a href="LLVMUtil_8h.html">LLVMUtil.h</a></div></div>
|
|
82
82
|
</div><!-- fragment --></div><!-- contents -->
|
|
@@ -422,11 +422,11 @@ protected:
|
|
|
422
422
|
{
|
|
423
423
|
DPIm dpm(oldDpm);
|
|
424
424
|
dpm.setLocVar(edge->getSrcNode(),ptr);
|
|
425
|
-
DOTIMESTAT(double start = DDAStat::getClk());
|
|
425
|
+
DOTIMESTAT(double start = DDAStat::getClk(true));
|
|
426
426
|
/// handle context-/path- sensitivity
|
|
427
427
|
if(handleBKCondition(dpm,edge)==false)
|
|
428
428
|
{
|
|
429
|
-
DOTIMESTAT(ddaStat->_TotalTimeOfBKCondition += DDAStat::getClk() - start);
|
|
429
|
+
DOTIMESTAT(ddaStat->_TotalTimeOfBKCondition += DDAStat::getClk(true) - start);
|
|
430
430
|
DBOUT(DDDA, SVFUtil::outs() << "\t!!! infeasible path svfgNode: " << edge->getDstID() << " --| " << edge->getSrcID() << "\n");
|
|
431
431
|
DOSTAT(ddaStat->_NumOfInfeasiblePath++);
|
|
432
432
|
return;
|
|
@@ -562,9 +562,9 @@ protected:
|
|
|
562
562
|
{
|
|
563
563
|
if (unionDDAPts(dpm, pts))
|
|
564
564
|
{
|
|
565
|
-
DOSTAT(double start = DDAStat::getClk());
|
|
565
|
+
DOSTAT(double start = DDAStat::getClk(true));
|
|
566
566
|
reCompute(dpm);
|
|
567
|
-
DOSTAT(ddaStat->_AnaTimeCyclePerQuery += DDAStat::getClk() - start);
|
|
567
|
+
DOSTAT(ddaStat->_AnaTimeCyclePerQuery += DDAStat::getClk(true) - start);
|
|
568
568
|
}
|
|
569
569
|
}
|
|
570
570
|
virtual inline const CPtSet& getCachedTLPointsTo(const DPIm& dpm)
|
package/include/Util/PTAStat.h
CHANGED
|
@@ -48,95 +48,16 @@ class PointerAnalysis;
|
|
|
48
48
|
class PTAStat: public SVFStat
|
|
49
49
|
{
|
|
50
50
|
public:
|
|
51
|
-
static const char* TotalAnalysisTime; ///< Total analysis time
|
|
52
|
-
static const char* SCCDetectionTime; ///< Total SCC detection time
|
|
53
|
-
static const char* SCCMergeTime; ///< Total SCC merge time
|
|
54
|
-
|
|
55
|
-
static const char* ProcessLoadStoreTime;///< time of processing loads and stores
|
|
56
|
-
static const char* ProcessCopyGepTime; ///< time of processing copys and geps
|
|
57
|
-
static const char* UpdateCallGraphTime; ///< time of updating call graph
|
|
58
|
-
|
|
59
|
-
static const char* TotalNumOfPointers; ///< Total SVFIR value node
|
|
60
|
-
static const char* TotalNumOfObjects; ///< Total SVFIR object node
|
|
61
|
-
static const char* TotalNumOfFieldObjects; ///< Total SVFIR field object node
|
|
62
|
-
static const char* MaxStructSize; ///< Max struct size
|
|
63
|
-
static const char* TotalNumOfEdges; ///< Total SVFIR edge number
|
|
64
|
-
|
|
65
|
-
static const char* NumOfAddrs; ///< SVFIR addr edge
|
|
66
|
-
static const char* NumOfLoads; ///< SVFIR load edge
|
|
67
|
-
static const char* NumOfStores; ///< SVFIR store edge
|
|
68
|
-
static const char* NumOfCopys; ///< SVFIR copy edge
|
|
69
|
-
static const char* NumOfGeps; ///< SVFIR gep edge
|
|
70
|
-
static const char* NumOfCalls; ///< SVFIR call edge
|
|
71
|
-
static const char* NumOfReturns; ///< SVFIR return edge
|
|
72
|
-
|
|
73
|
-
static const char* NumOfProcessedAddrs; ///< SVFIR processed addr edge
|
|
74
|
-
static const char* NumOfProcessedLoads; ///< SVFIR processed load edge
|
|
75
|
-
static const char* NumOfProcessedStores; ///< SVFIR processed store edge
|
|
76
|
-
static const char* NumOfProcessedCopys; ///< SVFIR processed copy edge
|
|
77
|
-
static const char* NumOfProcessedGeps; ///< SVFIR processed gep edge
|
|
78
|
-
|
|
79
|
-
static const char* NumOfSfr; ///< num of field representatives
|
|
80
|
-
static const char* NumOfFieldExpand;
|
|
81
|
-
|
|
82
|
-
static const char* NumOfFunctionObjs; ///< Function numbers
|
|
83
|
-
static const char* NumOfGlobalObjs; ///< SVFIR global object node
|
|
84
|
-
static const char* NumOfHeapObjs; ///< SVFIR heap object node
|
|
85
|
-
static const char* NumOfStackObjs; ///< SVFIR stack object node
|
|
86
|
-
|
|
87
|
-
static const char* NumOfObjsHasVarStruct; ///< SVFIR object node has var struct (maybe nested with array)
|
|
88
|
-
static const char* NumOfObjsHasVarArray; ///< SVFIR object node has var array (maybe nested with struct)
|
|
89
|
-
static const char* NumOfObjsHasConstStruct; ///< SVFIR object node has const struct (maybe nested with array)
|
|
90
|
-
static const char* NumOfObjsHasConstArray; ///< SVFIR object node has const array (maybe nested with struct)
|
|
91
|
-
static const char* NumOfNonPtrObjs; ///< SVFIR object node which is non pointer type object (do not have pts)
|
|
92
|
-
static const char* NumOfConstantObjs; ///< SVFIR object node which is purely constant
|
|
93
|
-
|
|
94
|
-
static const char* NumberOfFieldInsensitiveObj;
|
|
95
|
-
static const char* NumberOfFieldSensitiveObj;
|
|
96
|
-
|
|
97
|
-
static const char* NumOfPointers; ///< SVFIR value node, each of them maps to a llvm value
|
|
98
|
-
static const char* NumOfGepFieldPointers; ///< SVFIR gep value node (field value, dynamically created dummy node)
|
|
99
|
-
|
|
100
|
-
static const char* NumOfMemObjects; ///< SVFIR object node, each of them maps to a llvm value
|
|
101
|
-
static const char* NumOfGepFieldObjects; ///< SVFIR gep object node (field obj, dynamically created dummy node)
|
|
102
|
-
|
|
103
|
-
static const char* AveragePointsToSetSize; ///< Average points-to size of all variables
|
|
104
|
-
static const char* AverageTopLevPointsToSetSize; ///< Average points-to size of top-level variables
|
|
105
|
-
static const char* MaxPointsToSetSize; ///< Max points-to size
|
|
106
|
-
|
|
107
|
-
static const char* NumOfIterations; ///< Number of iterations during resolution
|
|
108
|
-
|
|
109
|
-
static const char* NumOfIndirectCallSites; ///< Number of indirect callsites
|
|
110
|
-
static const char* NumOfIndirectEdgeSolved; ///< Number of indirect calledge resolved
|
|
111
|
-
|
|
112
|
-
static const char* NumOfSCCDetection; ///< Number of scc detection performed
|
|
113
|
-
static const char* NumOfCycles; ///< Number of scc cycles detected
|
|
114
|
-
static const char* NumOfPWCCycles; ///< Number of scc cycles detected
|
|
115
|
-
static const char* NumOfNodesInCycles; ///< Number of nodes in cycles detected
|
|
116
|
-
static const char* MaxNumOfNodesInSCC; ///< max Number of nodes in one scc
|
|
117
|
-
|
|
118
|
-
static const char* NumOfNullPointer; ///< Number of pointers points-to null
|
|
119
|
-
|
|
120
51
|
PTAStat(PointerAnalysis* p);
|
|
121
52
|
virtual ~PTAStat() {}
|
|
122
53
|
|
|
123
|
-
NUMStatMap PTNumStatMap;
|
|
124
54
|
NodeBS localVarInRecursion;
|
|
125
55
|
|
|
126
|
-
double startTime;
|
|
127
|
-
double endTime;
|
|
128
|
-
|
|
129
56
|
void performStat() override;
|
|
130
57
|
|
|
131
|
-
virtual void printStat(std::string str = "") override;
|
|
132
|
-
|
|
133
58
|
void callgraphStat() override;
|
|
134
59
|
private:
|
|
135
|
-
void bitcastInstStat();
|
|
136
|
-
void branchStat();
|
|
137
|
-
|
|
138
60
|
PointerAnalysis* pta;
|
|
139
|
-
std::string moduleName;
|
|
140
61
|
};
|
|
141
62
|
|
|
142
63
|
} // End namespace SVF
|
package/include/Util/SVFStat.h
CHANGED
|
@@ -71,6 +71,7 @@ public:
|
|
|
71
71
|
static double getClk(bool mark = false);
|
|
72
72
|
|
|
73
73
|
NUMStatMap generalNumMap;
|
|
74
|
+
NUMStatMap PTNumStatMap;
|
|
74
75
|
TIMEStatMap timeStatMap;
|
|
75
76
|
|
|
76
77
|
double startTime;
|
|
@@ -78,7 +79,7 @@ public:
|
|
|
78
79
|
|
|
79
80
|
virtual void performStat() = 0;
|
|
80
81
|
|
|
81
|
-
virtual void printStat(std::string str = "")
|
|
82
|
+
virtual void printStat(std::string str = "");
|
|
82
83
|
|
|
83
84
|
virtual void performStatPerQuery(NodeID) {}
|
|
84
85
|
|
|
@@ -86,8 +87,12 @@ public:
|
|
|
86
87
|
|
|
87
88
|
virtual void callgraphStat() {}
|
|
88
89
|
|
|
89
|
-
|
|
90
|
+
static double timeOfBuildingLLVMModule;
|
|
91
|
+
static double timeOfBuildingSymbolTable;
|
|
92
|
+
static double timeOfBuildingSVFIR;
|
|
90
93
|
|
|
94
|
+
private:
|
|
95
|
+
void branchStat();
|
|
91
96
|
std::string moduleName;
|
|
92
97
|
}; // End class SVFStat
|
|
93
98
|
|
package/lib/MTA/LockAnalysis.cpp
CHANGED
|
@@ -591,12 +591,12 @@ bool LockAnalysis::isProtectedByCommonLock(const Instruction *i1, const Instruct
|
|
|
591
591
|
{
|
|
592
592
|
numOfTotalQueries++;
|
|
593
593
|
bool commonlock = false;
|
|
594
|
-
DOTIMESTAT(double queryStart = PTAStat::getClk());
|
|
594
|
+
DOTIMESTAT(double queryStart = PTAStat::getClk(true));
|
|
595
595
|
if (isInsideIntraLock(i1) && isInsideIntraLock(i2))
|
|
596
596
|
commonlock = isProtectedByCommonCILock(i1,i2) ;
|
|
597
597
|
else
|
|
598
598
|
commonlock = isProtectedByCommonCxtLock(i1,i2);
|
|
599
|
-
DOTIMESTAT(double queryEnd = PTAStat::getClk());
|
|
599
|
+
DOTIMESTAT(double queryEnd = PTAStat::getClk(true));
|
|
600
600
|
DOTIMESTAT(lockQueriesTime += (queryEnd - queryStart) / TIMEINTERVAL);
|
|
601
601
|
return commonlock;
|
|
602
602
|
}
|
|
@@ -667,7 +667,7 @@ bool LockAnalysis::isProtectedByCommonCxtLock(const Instruction *i1, const Instr
|
|
|
667
667
|
*/
|
|
668
668
|
bool LockAnalysis::isInSameSpan(const Instruction *i1, const Instruction *i2)
|
|
669
669
|
{
|
|
670
|
-
DOTIMESTAT(double queryStart = PTAStat::getClk());
|
|
670
|
+
DOTIMESTAT(double queryStart = PTAStat::getClk(true));
|
|
671
671
|
|
|
672
672
|
bool sameSpan = false;
|
|
673
673
|
if (isInsideIntraLock(i1) && isInsideIntraLock(i2))
|
|
@@ -675,7 +675,7 @@ bool LockAnalysis::isInSameSpan(const Instruction *i1, const Instruction *i2)
|
|
|
675
675
|
else
|
|
676
676
|
sameSpan = isInSameCSSpan(i1, i2);
|
|
677
677
|
|
|
678
|
-
DOTIMESTAT(double queryEnd = PTAStat::getClk());
|
|
678
|
+
DOTIMESTAT(double queryEnd = PTAStat::getClk(true));
|
|
679
679
|
DOTIMESTAT(lockQueriesTime += (queryEnd - queryStart) / TIMEINTERVAL);
|
|
680
680
|
return sameSpan;
|
|
681
681
|
}
|
package/lib/MTA/MHP.cpp
CHANGED
|
@@ -627,9 +627,9 @@ bool MHP::mayHappenInParallel(const Instruction* i1, const Instruction* i2)
|
|
|
627
627
|
{
|
|
628
628
|
numOfTotalQueries++;
|
|
629
629
|
|
|
630
|
-
DOTIMESTAT(double queryStart = PTAStat::getClk());
|
|
630
|
+
DOTIMESTAT(double queryStart = PTAStat::getClk(true));
|
|
631
631
|
bool mhp=mayHappenInParallelCache(i1,i2);
|
|
632
|
-
DOTIMESTAT(double queryEnd = PTAStat::getClk());
|
|
632
|
+
DOTIMESTAT(double queryEnd = PTAStat::getClk(true));
|
|
633
633
|
DOTIMESTAT(interleavingQueriesTime += (queryEnd - queryStart) / TIMEINTERVAL);
|
|
634
634
|
|
|
635
635
|
return mhp;
|
|
@@ -83,6 +83,8 @@ SVFModule* LLVMModuleSet::buildSVFModule(Module &mod)
|
|
|
83
83
|
|
|
84
84
|
SVFModule* LLVMModuleSet::buildSVFModule(const std::vector<std::string> &moduleNameVec)
|
|
85
85
|
{
|
|
86
|
+
double startTime = SVFStat::getClk(true);
|
|
87
|
+
|
|
86
88
|
assert(llvmModuleSet && "LLVM Module set needs to be created!");
|
|
87
89
|
|
|
88
90
|
loadModules(moduleNameVec);
|
|
@@ -94,6 +96,9 @@ SVFModule* LLVMModuleSet::buildSVFModule(const std::vector<std::string> &moduleN
|
|
|
94
96
|
|
|
95
97
|
build();
|
|
96
98
|
|
|
99
|
+
double endTime = SVFStat::getClk(true);
|
|
100
|
+
SVFStat::timeOfBuildingLLVMModule = (endTime - startTime)/TIMEINTERVAL;
|
|
101
|
+
|
|
97
102
|
return svfModule;
|
|
98
103
|
}
|
|
99
104
|
|
|
@@ -49,6 +49,7 @@ using namespace LLVMUtil;
|
|
|
49
49
|
*/
|
|
50
50
|
SVFIR* SVFIRBuilder::build(SVFModule* svfModule)
|
|
51
51
|
{
|
|
52
|
+
double startTime = SVFStat::getClk(true);
|
|
52
53
|
|
|
53
54
|
// We read SVFIR from a user-defined txt instead of parsing SVFIR from LLVM IR
|
|
54
55
|
if (SVFModule::pagReadFromTXT())
|
|
@@ -141,6 +142,10 @@ SVFIR* SVFIRBuilder::build(SVFModule* svfModule)
|
|
|
141
142
|
LLVMLoopAnalysis loopAnalysis;
|
|
142
143
|
loopAnalysis.build(pag->getICFG());
|
|
143
144
|
}
|
|
145
|
+
|
|
146
|
+
double endTime = SVFStat::getClk(true);
|
|
147
|
+
SVFStat::timeOfBuildingSVFIR = (endTime - startTime)/TIMEINTERVAL;
|
|
148
|
+
|
|
144
149
|
return pag;
|
|
145
150
|
}
|
|
146
151
|
|
|
@@ -1281,6 +1286,27 @@ void SVFIRBuilder::handleExtCall(CallSite cs, const SVFFunction *callee)
|
|
|
1281
1286
|
else
|
|
1282
1287
|
writeWrnMsg("We need two valid NodeIDs and an offset to add a Gep edge");
|
|
1283
1288
|
}
|
|
1289
|
+
else if (op.getOperator() == "BinaryOPStmt")
|
|
1290
|
+
{
|
|
1291
|
+
if (op.getOperands().size() == 4)
|
|
1292
|
+
addBinaryOPEdge(op.getOperands()[0], op.getOperands()[1], op.getOperands()[2], op.getOperands()[3]);
|
|
1293
|
+
else
|
|
1294
|
+
writeWrnMsg("We need four valid NodeIDs to add a BinaryOP edge");
|
|
1295
|
+
}
|
|
1296
|
+
else if (op.getOperator() == "UnaryOPStmt")
|
|
1297
|
+
{
|
|
1298
|
+
if (op.getOperands().size() == 3)
|
|
1299
|
+
addUnaryOPEdge(op.getOperands()[0], op.getOperands()[1], op.getOperands()[2]);
|
|
1300
|
+
else
|
|
1301
|
+
writeWrnMsg("We need three valid NodeIDs to add a UnaryOP edge");
|
|
1302
|
+
}
|
|
1303
|
+
else if (op.getOperator() == "CmpStmt")
|
|
1304
|
+
{
|
|
1305
|
+
if (op.getOperands().size() == 4)
|
|
1306
|
+
addCmpEdge(op.getOperands()[0], op.getOperands()[1], op.getOperands()[2], op.getOperands()[3]);
|
|
1307
|
+
else
|
|
1308
|
+
writeWrnMsg("We need four valid NodeIDs to add a CmpStmt edge");
|
|
1309
|
+
}
|
|
1284
1310
|
else if (op.getOperator() == "memset_like")
|
|
1285
1311
|
{
|
|
1286
1312
|
// this is for memset(void *str, int c, size_t n)
|
package/lib/Util/ExtAPI.cpp
CHANGED
|
@@ -266,6 +266,48 @@ s32_t ExtAPI::getNodeIDType(std::string s)
|
|
|
266
266
|
return -2;
|
|
267
267
|
else if(argStr == "Obj")
|
|
268
268
|
return -3;
|
|
269
|
+
else if(argStr == "Add")
|
|
270
|
+
return BinaryOperator::Add;
|
|
271
|
+
else if(argStr == "Sub")
|
|
272
|
+
return BinaryOperator::Sub;
|
|
273
|
+
else if(argStr == "Mul")
|
|
274
|
+
return BinaryOperator::Mul;
|
|
275
|
+
else if(argStr == "SDiv")
|
|
276
|
+
return BinaryOperator::SDiv;
|
|
277
|
+
else if(argStr == "SRem")
|
|
278
|
+
return BinaryOperator::SRem;
|
|
279
|
+
else if(argStr == "Xor")
|
|
280
|
+
return BinaryOperator::Xor;
|
|
281
|
+
else if(argStr == "And")
|
|
282
|
+
return BinaryOperator::And;
|
|
283
|
+
else if(argStr == "Or")
|
|
284
|
+
return BinaryOperator::Or;
|
|
285
|
+
else if(argStr == "AShr")
|
|
286
|
+
return BinaryOperator::AShr;
|
|
287
|
+
else if(argStr == "Shl")
|
|
288
|
+
return BinaryOperator::Shl;
|
|
289
|
+
else if(argStr == "ICMP_EQ")
|
|
290
|
+
return CmpInst::ICMP_EQ;
|
|
291
|
+
else if(argStr == "ICMP_NE")
|
|
292
|
+
return CmpInst::ICMP_NE;
|
|
293
|
+
else if(argStr == "ICMP_UGT")
|
|
294
|
+
return CmpInst::ICMP_UGT;
|
|
295
|
+
else if(argStr == "ICMP_SGT")
|
|
296
|
+
return CmpInst::ICMP_SGT;
|
|
297
|
+
else if(argStr == "ICMP_UGE")
|
|
298
|
+
return CmpInst::ICMP_UGE;
|
|
299
|
+
else if(argStr == "ICMP_SGE")
|
|
300
|
+
return CmpInst::ICMP_SGE;
|
|
301
|
+
else if(argStr == "ICMP_ULT")
|
|
302
|
+
return CmpInst::ICMP_ULT;
|
|
303
|
+
else if(argStr == "ICMP_SLT")
|
|
304
|
+
return CmpInst::ICMP_SLT;
|
|
305
|
+
else if(argStr == "ICMP_ULE")
|
|
306
|
+
return CmpInst::ICMP_ULE;
|
|
307
|
+
else if(argStr == "ICMP_SLE")
|
|
308
|
+
return CmpInst::ICMP_SLE;
|
|
309
|
+
else if(argStr == "FNeg")
|
|
310
|
+
return UnaryOperator::FNeg;
|
|
269
311
|
else // offset
|
|
270
312
|
{
|
|
271
313
|
u32_t i=0;
|