svf-tools 1.0.355 → 1.0.359
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/AndersenSFR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +6 -6
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -4
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +3 -3
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/ICFG_8h_source.html +17 -18
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MHP_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +10 -10
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFG_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +8 -8
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +5 -5
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +22 -22
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +52 -50
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +86 -83
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFG_8h_source.html +6 -6
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ICFG-members.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +234 -234
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder-members.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +48 -51
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter-members.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFGPrinter.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1IRGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1LocationSet.html +27 -29
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +87 -87
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1ObjTypeInfo.html +99 -99
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1PTAStat.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +20 -20
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +31 -31
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StInfo-members.html +20 -15
- package/SVF-doxygen/html/html/classSVF_1_1StInfo.html +239 -89
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo-members.html +6 -4
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfo.html +178 -130
- package/SVF-doxygen/html/html/classSVF_1_1TCT-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1TypeBasedHeapCloning.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +16 -16
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +6 -6
- package/SVF-doxygen/html/html/functions_a.html +13 -13
- package/SVF-doxygen/html/html/functions_e.html +3 -0
- package/SVF-doxygen/html/html/functions_f.html +15 -20
- package/SVF-doxygen/html/html/functions_func.html +13 -13
- package/SVF-doxygen/html/html/functions_func_g.html +51 -50
- package/SVF-doxygen/html/html/functions_func_s.html +8 -5
- package/SVF-doxygen/html/html/functions_g.html +45 -44
- 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_n.html +6 -0
- package/SVF-doxygen/html/html/functions_p.html +9 -9
- package/SVF-doxygen/html/html/functions_r.html +2 -4
- package/SVF-doxygen/html/html/functions_s.html +22 -19
- package/SVF-doxygen/html/html/functions_t.html +7 -7
- package/SVF-doxygen/html/html/functions_vars_e.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_f.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_n.html +6 -0
- package/SVF-doxygen/html/html/search/all_1.js +6 -6
- package/SVF-doxygen/html/html/search/all_10.js +6 -6
- package/SVF-doxygen/html/html/search/all_12.js +2 -2
- package/SVF-doxygen/html/html/search/all_13.js +9 -8
- package/SVF-doxygen/html/html/search/all_14.js +4 -4
- package/SVF-doxygen/html/html/search/all_15.js +1 -1
- package/SVF-doxygen/html/html/search/all_16.js +1 -1
- package/SVF-doxygen/html/html/search/all_5.js +1 -0
- package/SVF-doxygen/html/html/search/all_6.js +0 -1
- package/SVF-doxygen/html/html/search/all_7.js +18 -19
- package/SVF-doxygen/html/html/search/all_9.js +1 -1
- package/SVF-doxygen/html/html/search/all_c.js +2 -2
- package/SVF-doxygen/html/html/search/all_d.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +4 -2
- package/SVF-doxygen/html/html/search/functions_0.js +6 -6
- package/SVF-doxygen/html/html/search/functions_10.js +1 -0
- package/SVF-doxygen/html/html/search/functions_6.js +18 -19
- package/SVF-doxygen/html/html/search/functions_e.js +1 -1
- package/SVF-doxygen/html/html/search/variables_14.js +2 -2
- package/SVF-doxygen/html/html/search/variables_15.js +1 -1
- package/SVF-doxygen/html/html/search/variables_5.js +1 -0
- package/SVF-doxygen/html/html/search/variables_6.js +0 -1
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +3 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +2 -2
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +2 -2
- package/include/Graphs/ICFG.h +18 -18
- package/include/Graphs/ICFGNode.h +2 -2
- package/include/Graphs/SVFG.h +4 -4
- package/include/Graphs/SVFGOPT.h +2 -2
- package/include/Graphs/VFG.h +7 -7
- package/include/MTA/LockResultValidator.h +1 -1
- package/include/MTA/MHP.h +2 -2
- package/include/MTA/PCG.h +2 -2
- package/include/MTA/TCT.h +2 -2
- package/include/MemoryModel/SVFIR.h +2 -2
- package/include/MemoryModel/SymbolTableInfo.h +37 -41
- package/include/SVF-FE/ICFGBuilder.h +5 -5
- package/include/SVF-FE/SVFIRBuilder.h +1 -1
- package/lib/Graphs/ICFG.cpp +23 -23
- package/lib/Graphs/SVFG.cpp +4 -4
- package/lib/Graphs/VFG.cpp +3 -3
- package/lib/MSSA/MemRegion.cpp +7 -7
- package/lib/MSSA/MemSSA.cpp +3 -3
- package/lib/MTA/LockAnalysis.cpp +4 -4
- package/lib/MTA/MTAResultValidator.cpp +1 -1
- package/lib/MTA/PCG.cpp +1 -1
- package/lib/MTA/TCT.cpp +2 -2
- package/lib/MemoryModel/LocationSet.cpp +42 -37
- package/lib/MemoryModel/PointerAnalysis.cpp +1 -1
- package/lib/MemoryModel/SymbolTableInfo.cpp +71 -8
- package/lib/SABER/LeakChecker.cpp +3 -3
- package/lib/SVF-FE/CallGraphBuilder.cpp +4 -4
- package/lib/SVF-FE/ICFGBuilder.cpp +19 -27
- package/lib/SVF-FE/SVFIRBuilder.cpp +15 -15
- package/lib/WPA/Andersen.cpp +3 -3
- package/lib/WPA/WPAPass.cpp +4 -4
- package/package.json +1 -1
- package/tools/Example/svf-ex.cpp +1 -1
|
@@ -66,13 +66,14 @@ $(function() {
|
|
|
66
66
|
<div class="title">LockResultValidator.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="LockResultValidator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * LOCKResultValidator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Created on: 24/07/2021</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#ifndef LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#define LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">/* Validate the result of lock analysis */</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a> {</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html"> 17</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1LockResultValidator.html">LockResultValidator</a> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6"> 19</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a>;</div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03954bdf28345cd7fbcd5cc242d40681"> 20</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const Instruction*, CxtLockSetStr></a> <a class="code" href="classSVF_1_1LockResultValidator.html#a03954bdf28345cd7fbcd5cc242d40681">CxtStmtToCxtLockS</a>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f"> 22</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">LOCK_FLAG</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529"> 24</a></span>  <a class="code" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529">LockResultValidator</a>(<a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* la) : <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>(la) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a> = <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-><a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-><a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375"> 28</a></span>  <a class="code" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375">~LockResultValidator</a>() {}</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">analyze</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2"> 32</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Get CallICFGNode</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8"> 37</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8">getCBN</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-><a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-><a class="code" href="classSVF_1_1TCT.html#afea9de8f27e501fdc2723cc14a8dc93f">getCallBlockNode</a>(inst);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6"> 40</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">getPreviousMemoryAccessInst</a>( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  I = I->getPrevNode();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">while</span> (I)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(I) || SVFUtil::isa<StoreInst>(I))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(SVFUtil::isa<CallInst> (I)) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-><a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8">getCBN</a>(I), callees);</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>  <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  ecit = callees.end(); cit!=ecit; cit++)</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>  <span class="keywordflow">if</span>(*cit != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  callee = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*<span class="keyword">></span> (*cit);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </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>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span> (callee)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48">ExtAPI::EFT_L_A0__A0R_A1R</a> == <a class="code" href="classSVF_1_1ExtAPI.html#a86508e03ca1c2e37fc9414cb2335c3ec">ExtAPI::getExtAPI</a>()-><a class="code" href="classSVF_1_1ExtAPI.html#a90b433cf855adcf34c6ef7f7e5be62b1">get_type</a>(callee)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  || callee-><a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>().find(<span class="stringliteral">"llvm.memset"</span>) != StringRef::npos)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  I = I->getPrevNode();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb"> 74</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">inFilter</a>(std::string name) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.find(name) != <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.end();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07"> 78</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">match</a>(std::string lockName, CxtLockSetStr LS) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> LS.find(lockName) != LS.end();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> &<a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &s, <span class="keywordtype">char</span> delim, <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> &elems);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> <a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::string <a class="code" href="classSVF_1_1LockResultValidator.html#ab71d89c954395df7d108263b3fa87330">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* scenario, LOCK_FLAG analysisRes);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> <a class="code" href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">getStringArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae6c8782d10e96951f059789aaa309cc2">collectLockTargets</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">validateStmtInLock</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a"> 92</a></span>  CxtStmtToCxtLockS <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb"> 93</a></span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">LockAnalysis::CxtStmtToCxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9"> 94</a></span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">LockAnalysis::CxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9">cxtLockSet</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798"> 96</a></span>  <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61"> 97</a></span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f"> 99</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">LOCK_TRUE</a> = 0x01;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8"> 100</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">LOCK_IMPRECISE</a> = 0x02;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf"> 101</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">LOCK_UNSOUND</a> = 0x04;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371"> 103</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">LOCK</a> = <span class="stringliteral">"LOCK"</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91"> 105</a></span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a> = {<span class="stringliteral">"LOCK"</span>, <span class="stringliteral">"INTERLEV_ACCESS"</span>, <span class="stringliteral">"PAUSE"</span>, <span class="stringliteral">"CXT_THREAD"</span>, <span class="stringliteral">"TCT_ACCESS"</span>};</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }; </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#endif </span><span class="comment">/* LOCKRESULTVALIDATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LockResultValidator_html_adb743de97f26167b39f6a348a63db371"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">SVF::LockResultValidator::LOCK</a></div><div class="ttdeci">static constexpr char const * LOCK</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00103">LockResultValidator.h:103</a></div></div>
|
|
69
|
+
<a href="LockResultValidator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> * LOCKResultValidator.h</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> *</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * Created on: 24/07/2021</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> */</span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> </div><div class="line"><a name="l00007"></a><span class="lineno"> 7</span> </div><div class="line"><a name="l00008"></a><span class="lineno"> 8</span> </div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="preprocessor">#ifndef LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="preprocessor">#define LOCKRESULTVALIDATOR_H_</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> </div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="preprocessor">#include "<a class="code" href="LockAnalysis_8h.html">MTA/LockAnalysis.h</a>"</span></div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> </div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">/* Validate the result of lock analysis */</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> </div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="keyword">namespace </span><a class="code" href="namespaceSVF.html">SVF</a> {</div><div class="line"><a name="l00017"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html"> 17</a></span> <span class="keyword">class </span><a class="code" href="classSVF_1_1LockResultValidator.html">LockResultValidator</a> {</div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="keyword">public</span>:</div><div class="line"><a name="l00019"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6"> 19</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> <a class="code" href="classSVF_1_1LockResultValidator.html#afec6058866fe334646db78227fb4d6a6">CxtLockSetStr</a>;</div><div class="line"><a name="l00020"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03954bdf28345cd7fbcd5cc242d40681"> 20</a></span>  <span class="keyword">typedef</span> <a class="code" href="namespaceSVF.html#a8234d4b959abc9123993bcff4eee34c1">Map<const Instruction*, CxtLockSetStr></a> <a class="code" href="classSVF_1_1LockResultValidator.html#a03954bdf28345cd7fbcd5cc242d40681">CxtStmtToCxtLockS</a>;</div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span>  </div><div class="line"><a name="l00022"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f"> 22</a></span>  <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a3b7d25dfe5251f49afbb733c25eee70f">LOCK_FLAG</a>;</div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span>  </div><div class="line"><a name="l00024"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529"> 24</a></span>  <a class="code" href="classSVF_1_1LockResultValidator.html#acfe0b43eee73c5e02f5744d8993cb529">LockResultValidator</a>(<a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* la) : <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>(la) {</div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span>  <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a> = <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-><a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-><a class="code" href="classSVF_1_1TCT.html#aabc2c84e951ed9ae64207e379acb3074">getSVFModule</a>();</div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span>  }</div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span>  </div><div class="line"><a name="l00028"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375"> 28</a></span>  <a class="code" href="classSVF_1_1LockResultValidator.html#a6790b9a632b172e1ea537ab93f526375">~LockResultValidator</a>() {}</div><div class="line"><a name="l00029"></a><span class="lineno"> 29</span>  </div><div class="line"><a name="l00030"></a><span class="lineno"> 30</span>  <span class="keywordtype">void</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">analyze</a>();</div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span>  </div><div class="line"><a name="l00032"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2"> 32</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a7b8a2bf9962bd57e103039ead85821d2">getModule</a>()<span class="keyword"> const </span>{</div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00034"></a><span class="lineno"> 34</span>  }</div><div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">private</span>:</div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span>  <span class="comment">// Get CallICFGNode</span></div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8"> 37</a></span>  <span class="keyword">inline</span> <a class="code" href="classSVF_1_1CallICFGNode.html">CallICFGNode</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8">getCBN</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst) {</div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-><a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-><a class="code" href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">getCallICFGNode</a>(inst);</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  }</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6"> 40</a></span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *<a class="code" href="classSVF_1_1LockResultValidator.html#a0be1cdab3c36835044e3b26d5d8402e6">getPreviousMemoryAccessInst</a>( <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a> *I) {</div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  I = I->getPrevNode();</div><div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <span class="keywordflow">while</span> (I)</div><div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  {</div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span>  <span class="keywordflow">if</span> (SVFUtil::isa<LoadInst>(I) || SVFUtil::isa<StoreInst>(I))</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00046"></a><span class="lineno"> 46</span>  <a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>* callee = <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span>  </div><div class="line"><a name="l00048"></a><span class="lineno"> 48</span>  <span class="keywordflow">if</span>(SVFUtil::isa<CallInst> (I)) {</div><div class="line"><a name="l00049"></a><span class="lineno"> 49</span>  <a class="code" href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">PTACallGraph::FunctionSet</a> callees;</div><div class="line"><a name="l00050"></a><span class="lineno"> 50</span>  <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>-><a class="code" href="classSVF_1_1LockAnalysis.html#a3e0bdc0a404d0b77ae0a1dde49c6b43d">getTCT</a>()-><a class="code" href="classSVF_1_1TCT.html#a1602d02773578bca73dcbd29b95c67d0">getThreadCallGraph</a>()-><a class="code" href="classSVF_1_1PTACallGraph.html#a317e09edb29b110cf4273009551d31ec">getCallees</a>(<a class="code" href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8">getCBN</a>(I), callees);</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>  <span class="keywordflow">for</span>(PTACallGraph::FunctionSet::const_iterator cit = callees.begin(),</div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  ecit = callees.end(); cit!=ecit; cit++)</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>  <span class="keywordflow">if</span>(*cit != <span class="keyword">nullptr</span>) {</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span>  callee = <span class="keyword">const_cast<</span><a class="code" href="classSVF_1_1SVFFunction.html">SVFFunction</a>*<span class="keyword">></span> (*cit);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span>  <span class="keywordflow">break</span>;</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span>  }</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span>  </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>  }</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  </div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  <span class="keywordflow">if</span> (callee)</div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span>  {</div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span>  <span class="keywordflow">if</span> (<a class="code" href="classSVF_1_1ExtAPI.html#aaf94c82d98f8ed1514ee49c9881a4094a54aa3d7051aab7d65ee1154538bfbb48">ExtAPI::EFT_L_A0__A0R_A1R</a> == <a class="code" href="classSVF_1_1ExtAPI.html#a86508e03ca1c2e37fc9414cb2335c3ec">ExtAPI::getExtAPI</a>()-><a class="code" href="classSVF_1_1ExtAPI.html#a90b433cf855adcf34c6ef7f7e5be62b1">get_type</a>(callee)</div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  || callee-><a class="code" href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">getName</a>().find(<span class="stringliteral">"llvm.memset"</span>) != StringRef::npos)</div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  <span class="keywordflow">return</span> I;</div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  }</div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  I = I->getPrevNode();</div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  }</div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span>  <span class="keywordflow">return</span> <span class="keyword">nullptr</span>;</div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  }</div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span>  </div><div class="line"><a name="l00074"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb"> 74</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">inFilter</a>(std::string name) {</div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span>  <span class="keywordflow">return</span> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.find(name) != <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a>.end();</div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  }</div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  </div><div class="line"><a name="l00078"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07"> 78</a></span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">match</a>(std::string lockName, CxtLockSetStr LS) {</div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> LS.find(lockName) != LS.end();</div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  }</div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  </div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> &<a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &s, <span class="keywordtype">char</span> delim, <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> &elems);</div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> <a class="code" href="classSVF_1_1LockResultValidator.html#ab8a6935e1ea6f99d60ead862a7b1782f">split</a>(<span class="keyword">const</span> std::string &s, <span class="keywordtype">char</span> delim);</div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  </div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  std::string <a class="code" href="classSVF_1_1LockResultValidator.html#ab71d89c954395df7d108263b3fa87330">getOutput</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>* scenario, LOCK_FLAG analysisRes);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  </div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> <a class="code" href="classSVF_1_1LockResultValidator.html#a1b1b841451fe51cb58417e864a28cbfc">getStringArg</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a7875172ff434b2210eea7cecfbbd959e">Instruction</a>* inst, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> arg_num);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  </div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  <span class="keywordtype">bool</span> <a class="code" href="classSVF_1_1LockResultValidator.html#ae6c8782d10e96951f059789aaa309cc2">collectLockTargets</a>();</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">validateStmtInLock</a>();</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  </div><div class="line"><a name="l00092"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a"> 92</a></span>  CxtStmtToCxtLockS <a class="code" href="classSVF_1_1LockResultValidator.html#a841c1dfb065999215b5f415e403f7a2a">instToCxtLockSet</a>;</div><div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb"> 93</a></span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">LockAnalysis::CxtStmtToCxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">cxtStmtToCxtLockSet</a>;</div><div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9"> 94</a></span>  <a class="code" href="classSVF_1_1LockAnalysis.html#a0716c155b42b3ae7a6c8d7593bb6ac83">LockAnalysis::CxtLockSet</a> <a class="code" href="classSVF_1_1LockResultValidator.html#a51e6f48be9f2a65b390e4e0350eb12a9">cxtLockSet</a>;</div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  </div><div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798"> 96</a></span>  <a class="code" href="classSVF_1_1LockAnalysis.html">LockAnalysis</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">_la</a>;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61"> 97</a></span>  <a class="code" href="classSVF_1_1SVFModule.html">SVFModule</a>* <a class="code" href="classSVF_1_1LockResultValidator.html#a2e3ded56c4e1e1a2a0b28c0d44011b61">_mod</a>;</div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  </div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f"> 99</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a005c38dd07eb66d52066fa1927b1e19f">LOCK_TRUE</a> = 0x01;</div><div class="line"><a name="l00100"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8"> 100</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a760c0f6f891daa4532a44c6594794bb8">LOCK_IMPRECISE</a> = 0x02;</div><div class="line"><a name="l00101"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf"> 101</a></span>  <span class="keyword">static</span> <span class="keyword">const</span> LOCK_FLAG <a class="code" href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">LOCK_UNSOUND</a> = 0x04;</div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div><div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371"> 103</a></span>  <span class="keyword">static</span> constexpr <span class="keywordtype">char</span> <span class="keyword">const</span> *<a class="code" href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">LOCK</a> = <span class="stringliteral">"LOCK"</span>;</div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  </div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91"> 105</a></span>  <a class="code" href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">Set<std::string></a> <a class="code" href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">filterFun</a> = {<span class="stringliteral">"LOCK"</span>, <span class="stringliteral">"INTERLEV_ACCESS"</span>, <span class="stringliteral">"PAUSE"</span>, <span class="stringliteral">"CXT_THREAD"</span>, <span class="stringliteral">"TCT_ACCESS"</span>};</div><div class="line"><a name="l00106"></a><span class="lineno"> 106</span> }; </div><div class="line"><a name="l00107"></a><span class="lineno"> 107</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="preprocessor">#endif </span><span class="comment">/* LOCKRESULTVALIDATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="classSVF_1_1LockResultValidator_html_adb743de97f26167b39f6a348a63db371"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#adb743de97f26167b39f6a348a63db371">SVF::LockResultValidator::LOCK</a></div><div class="ttdeci">static constexpr char const * LOCK</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00103">LockResultValidator.h:103</a></div></div>
|
|
70
70
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_ad8a03181445edeb835fed08c88f6e0bb"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ad8a03181445edeb835fed08c88f6e0bb">SVF::LockResultValidator::cxtStmtToCxtLockSet</a></div><div class="ttdeci">LockAnalysis::CxtStmtToCxtLockSet cxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00093">LockResultValidator.h:93</a></div></div>
|
|
71
71
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html">SVF::LockResultValidator</a></div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00017">LockResultValidator.h:17</a></div></div>
|
|
72
72
|
<div class="ttc" id="classSVF_1_1PTACallGraph_html_a5f5a5ec7e707a21994d301cc07d32a5a"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html#a5f5a5ec7e707a21994d301cc07d32a5a">SVF::PTACallGraph::FunctionSet</a></div><div class="ttdeci">Set< const SVFFunction * > FunctionSet</div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00228">PTACallGraph.h:228</a></div></div>
|
|
73
73
|
<div class="ttc" id="classSVF_1_1SVFFunction_html"><div class="ttname"><a href="classSVF_1_1SVFFunction.html">SVF::SVFFunction</a></div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00233">BasicTypes.h:233</a></div></div>
|
|
74
74
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_a03589368482d3f7ee7f6734e257dcbdf"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a03589368482d3f7ee7f6734e257dcbdf">SVF::LockResultValidator::LOCK_UNSOUND</a></div><div class="ttdeci">static const LOCK_FLAG LOCK_UNSOUND</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00101">LockResultValidator.h:101</a></div></div>
|
|
75
75
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_a445dbda778198acac87fbbfa029b0dfb"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a445dbda778198acac87fbbfa029b0dfb">SVF::LockResultValidator::inFilter</a></div><div class="ttdeci">bool inFilter(std::string name)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00074">LockResultValidator.h:74</a></div></div>
|
|
76
|
+
<div class="ttc" id="classSVF_1_1TCT_html_a238810a60f1010c5177e01683c8c1159"><div class="ttname"><a href="classSVF_1_1TCT.html#a238810a60f1010c5177e01683c8c1159">SVF::TCT::getCallICFGNode</a></div><div class="ttdeci">CallICFGNode * getCallICFGNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
|
|
76
77
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_a97eef42fa816256818b44382604b53c8"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a97eef42fa816256818b44382604b53c8">SVF::LockResultValidator::getCBN</a></div><div class="ttdeci">CallICFGNode * getCBN(const Instruction *inst)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00037">LockResultValidator.h:37</a></div></div>
|
|
77
78
|
<div class="ttc" id="classSVF_1_1SVFValue_html_adc15c1f7a77158142156fba7524e89c9"><div class="ttname"><a href="classSVF_1_1SVFValue.html#adc15c1f7a77158142156fba7524e89c9">SVF::SVFValue::getName</a></div><div class="ttdeci">const llvm::StringRef getName() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00231">SVFBasicTypes.h:231</a></div></div>
|
|
78
79
|
<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>
|
|
@@ -108,7 +109,6 @@ $(function() {
|
|
|
108
109
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_a88ff3ed1398a0b847d71a4c0352ed66d"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a88ff3ed1398a0b847d71a4c0352ed66d">SVF::LockResultValidator::analyze</a></div><div class="ttdeci">void analyze()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00150">LockResultValidator.cpp:150</a></div></div>
|
|
109
110
|
<div class="ttc" id="classSVF_1_1LockAnalysis_html_a710aad28484677637367e9098a55c7d7"><div class="ttname"><a href="classSVF_1_1LockAnalysis.html#a710aad28484677637367e9098a55c7d7">SVF::LockAnalysis::CxtStmtToCxtLockSet</a></div><div class="ttdeci">Map< CxtStmt, CxtLockSet > CxtStmtToCxtLockSet</div><div class="ttdef"><b>Definition:</b> <a href="LockAnalysis_8h_source.html#l00055">LockAnalysis.h:55</a></div></div>
|
|
110
111
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_acddd2f9d118cbf448d92626d281fdaf9"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#acddd2f9d118cbf448d92626d281fdaf9">SVF::LockResultValidator::validateStmtInLock</a></div><div class="ttdeci">LOCK_FLAG validateStmtInLock()</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8cpp_source.html#l00101">LockResultValidator.cpp:101</a></div></div>
|
|
111
|
-
<div class="ttc" id="classSVF_1_1TCT_html_afea9de8f27e501fdc2723cc14a8dc93f"><div class="ttname"><a href="classSVF_1_1TCT.html#afea9de8f27e501fdc2723cc14a8dc93f">SVF::TCT::getCallBlockNode</a></div><div class="ttdeci">CallICFGNode * getCallBlockNode(const Instruction *inst)</div><div class="ttdoc">Get CallICFGNode given inst. </div><div class="ttdef"><b>Definition:</b> <a href="TCT_8h_source.html#l00151">TCT.h:151</a></div></div>
|
|
112
112
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_ae68afb4d129dc6cecfc3561f6a17c798"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#ae68afb4d129dc6cecfc3561f6a17c798">SVF::LockResultValidator::_la</a></div><div class="ttdeci">LockAnalysis * _la</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00096">LockResultValidator.h:96</a></div></div>
|
|
113
113
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_aa1b48d5792e596703f3283316e9f4c07"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#aa1b48d5792e596703f3283316e9f4c07">SVF::LockResultValidator::match</a></div><div class="ttdeci">bool match(std::string lockName, CxtLockSetStr LS)</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00078">LockResultValidator.h:78</a></div></div>
|
|
114
114
|
<div class="ttc" id="classSVF_1_1LockResultValidator_html_a70cdb993b3e90c70cc083fb8ed93fb91"><div class="ttname"><a href="classSVF_1_1LockResultValidator.html#a70cdb993b3e90c70cc083fb8ed93fb91">SVF::LockResultValidator::filterFun</a></div><div class="ttdeci">Set< std::string > filterFun</div><div class="ttdef"><b>Definition:</b> <a href="LockResultValidator_8h_source.html#l00105">LockResultValidator.h:105</a></div></div>
|