svf-tools 1.0.585 → 1.0.587
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/CFLAlias_8cpp_source.html +8 -9
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +10 -10
- package/SVF-doxygen/html/html/CFLBase_8cpp_source.html +25 -18
- package/SVF-doxygen/html/html/CFLBase_8h_source.html +24 -23
- package/SVF-doxygen/html/html/CFLGrammar_8txt.html +26 -8
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFLStat_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/CFLStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +15 -14
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +14 -14
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_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_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +48 -45
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase-members.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1CFLBase.html +100 -64
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +6 -5
- package/SVF-doxygen/html/html/classSVF_1_1CFLStat.html +12 -11
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLVF.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +1 -1
- package/SVF-doxygen/html/html/functions_f.html +24 -25
- package/SVF-doxygen/html/html/functions_func_f.html +1 -0
- package/SVF-doxygen/html/html/functions_n.html +1 -1
- package/SVF-doxygen/html/html/functions_vars_n.html +1 -1
- package/SVF-doxygen/html/html/globals_v.html +4 -1
- package/SVF-doxygen/html/html/globals_vars.html +4 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1cppUtil.html +36 -35
- package/SVF-doxygen/html/html/search/all_13.js +1 -1
- package/SVF-doxygen/html/html/search/all_15.js +2 -1
- package/SVF-doxygen/html/html/search/all_6.js +1 -1
- package/SVF-doxygen/html/html/search/all_e.js +1 -1
- package/SVF-doxygen/html/html/search/functions_5.js +1 -1
- package/SVF-doxygen/html/html/search/variables_15.js +2 -1
- package/SVF-doxygen/html/html/search/variables_e.js +1 -1
- package/include/CFL/CFLBase.h +4 -1
- package/include/CFL/CFLGrammar.txt +2 -2
- package/include/Util/ExtAPI.json +2 -2
- package/lib/CFL/CFLAlias.cpp +2 -2
- package/lib/CFL/CFLBase.cpp +12 -0
- package/lib/CFL/CFLSolver.cpp +11 -14
- package/lib/CFL/CFLStat.cpp +1 -0
- package/lib/Graphs/CFLGraph.cpp +1 -1
- package/lib/SVF-FE/CPPUtil.cpp +4 -0
- package/package.json +1 -1
|
@@ -66,40 +66,40 @@ $(function() {
|
|
|
66
66
|
<div class="title">CPPUtil.h</div> </div>
|
|
67
67
|
</div><!--header-->
|
|
68
68
|
<div class="contents">
|
|
69
|
-
<a href="CPPUtil_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">//===- CPPUtil.h -- Base class of pointer analyses ---------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</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> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CPPUtil.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Apr 13, 2016</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Xiaokang Fan</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></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="preprocessor">#ifndef CPPUtil_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define CPPUtil_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>"</span></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">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>CHGraph;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">/*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> * Util class to assist pointer analysis for cpp programs</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> */</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"><a class="line" href="namespaceSVF_1_1cppUtil.html"> 43</a></span> <span class="keyword">namespace </span><a class="code" href="namespacecppUtil.html">cppUtil</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html"> 46</a></span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">DemangledName</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297"> 48</a></span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02"> 49</a></span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243"> 50</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</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> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">DemangledName</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(const <a class="code" href="namespacestd.html">std</a>::<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a> &<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</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="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">getBeforeBrackets</a>(const std::string &name);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(const Value *val);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a1e99d5cf28e0d6546e0d85b805a7e371">isLoadVtblInst</a>(const LoadInst *loadInst);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(CallSite cs);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(const Function *F);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(const Function *F);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">isCPPThunkFunction</a>(const Function *F);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> const <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">getThunkTarget</a>(const Function *F);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"> * VtableA = {&A::foo}</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment"> * A::A(this){</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"> * *this = &VtableA;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"> * }</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"> *</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> *</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"> * A* p = new A;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"> * cs: p->foo(...)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment"> * ==></span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment"> * vtptr = *p;</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"> * vfn = &vtptr[i]</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment"> * %funp = *vfn</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment"> * call %funp(p,...)</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment"> * getConstructorThisPtr(A) return "this" pointer</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"> * getVCallThisPtr(cs) return p (this pointer)</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"> * getVCallVtblPtr(cs) return vtptr</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"> * getVCallIdx(cs) return i</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment"> * getClassNameFromVtblObj(VtableA) return</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> * getClassNameFromType(type of p) return type A</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"> */</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> const <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* <a class="code" href="namespaceSVF_1_1cppUtil.html#a26c3ceb82a398663284690c898a5354d">getConstructorThisPtr</a>(const Function* fun);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> const <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">getVCallThisPtr</a>(CallSite cs);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> const <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(CallSite cs);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#ad2a35c1d2e357690e634bb250a68795d">getVCallIdx</a>(CallSite cs);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">getClassNameFromVtblObj</a>(const Value *value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a891719bac36ebb6c001f073dfa5a9e7b">getClassNameFromType</a>(const Type *ty);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">getClassNameOfThisPtr</a>(CallSite cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">getFunNameOfVCallSite</a>(CallSite cs);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#abcba23ffa41fe5b456289e528d1b4c4e">VCallInCtorOrDtor</a>(CallSite cs);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">/*</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> * A(A* this){</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> * store this this.addr;</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> * tmp = load this.addr;</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"> * this1 = bitcast(tmp);</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment"> * B(this1);</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"> * }</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"> * this and this1 are the same thisPtr in the constructor</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"> */</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a5dd3230226002e126f6b0a877f9550ce">isSameThisPtrInConstructor</a>(const Argument* thisPtr1, const Value* thisPtr2);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html"> 108</a></span> namespace ctir</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace"> 113</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">derefMDName</a> = <span class="stringliteral">"ctir"</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058"> 116</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058">vtMDName</a> = <span class="stringliteral">"ctir.vt"</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9"> 119</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">vtInitMDName</a> = <span class="stringliteral">"ctir.vt.init"</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3"> 122</a></span> <span class="keyword">const</span> uint32_t <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3">moduleFlagValue</a> = 1;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> } <span class="comment">// End namespace cppUtil</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#endif </span><span class="comment">/* CPPUtil_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad2a35c1d2e357690e634bb250a68795d"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad2a35c1d2e357690e634bb250a68795d">SVF::cppUtil::getVCallIdx</a></div><div class="ttdeci">u64_t getVCallIdx(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00391">CPPUtil.cpp:391</a></div></div>
|
|
69
|
+
<a href="CPPUtil_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">//===- CPPUtil.h -- Base class of pointer analyses ---------------------------//</span></div><div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment">//</span></div><div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment">// SVF: Static Value-Flow Analysis</span></div><div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment">//</span></div><div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment">// Copyright (C) <2013-2017> <Yulei Sui></span></div><div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment">//</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> <span class="comment">// This program is free software: you can redistribute it and/or modify</span></div><div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment">// it under the terms of the GNU General Public License as published by</span></div><div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment">// the Free Software Foundation, either version 3 of the License, or</span></div><div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment">// (at your option) any later version.</span></div><div class="line"><a name="l00012"></a><span class="lineno"> 12</span> </div><div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment">// This program is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div><div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment">// GNU General Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno"> 17</span> </div><div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// You should have received a copy of the GNU General Public License</span></div><div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// along with this program. If not, see <http://www.gnu.org/licenses/>.</span></div><div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment">//</span></div><div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment">//===----------------------------------------------------------------------===//</span></div><div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div><div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/*</span></div><div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * CPPUtil.h</span></div><div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> *</span></div><div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * Created on: Apr 13, 2016</span></div><div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * Author: Xiaokang Fan</span></div><div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> */</span></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="preprocessor">#ifndef CPPUtil_H_</span></div><div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="preprocessor">#define CPPUtil_H_</span></div><div class="line"><a name="l00032"></a><span class="lineno"> 32</span> </div><div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="preprocessor">#include "<a class="code" href="Util_2BasicTypes_8h.html">Util/BasicTypes.h</a>"</span></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">namespace </span><a class="code" href="namespaceSVF.html">SVF</a></div><div class="line"><a name="l00036"></a><span class="lineno"> 36</span> {</div><div class="line"><a name="l00037"></a><span class="lineno"> 37</span> </div><div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">class </span>CHGraph;</div><div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">/*</span></div><div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> * Util class to assist pointer analysis for cpp programs</span></div><div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> */</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"><a class="line" href="namespaceSVF_1_1cppUtil.html"> 43</a></span> <span class="keyword">namespace </span><a class="code" href="namespacecppUtil.html">cppUtil</a></div><div class="line"><a name="l00044"></a><span class="lineno"> 44</span> {</div><div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html"> 46</a></span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">DemangledName</a></div><div class="line"><a name="l00047"></a><span class="lineno"> 47</span> {</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297"> 48</a></span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">className</a>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02"> 49</a></span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">funcName</a>;</div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243"> 50</a></span>  <span class="keywordtype">bool</span> <a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">isThunkFunc</a>;</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> </div><div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="keyword">struct </span><a class="code" href="structSVF_1_1cppUtil_1_1DemangledName.html">DemangledName</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">demangle</a>(const <a class="code" href="namespacestd.html">std</a>::<a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">string</a> &<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</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="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">getBeforeBrackets</a>(const std::string &name);</div><div class="line"><a name="l00056"></a><span class="lineno"> 56</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">isValVtbl</a>(const Value *val);</div><div class="line"><a name="l00057"></a><span class="lineno"> 57</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a1e99d5cf28e0d6546e0d85b805a7e371">isLoadVtblInst</a>(const LoadInst *loadInst);</div><div class="line"><a name="l00058"></a><span class="lineno"> 58</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">isVirtualCallSite</a>(CallSite cs);</div><div class="line"><a name="l00059"></a><span class="lineno"> 59</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(const Function *F);</div><div class="line"><a name="l00060"></a><span class="lineno"> 60</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(const Function *F);</div><div class="line"><a name="l00061"></a><span class="lineno"> 61</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">isCPPThunkFunction</a>(const Function *F);</div><div class="line"><a name="l00062"></a><span class="lineno"> 62</span> const <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">getThunkTarget</a>(const Function *F);</div><div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div><div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="comment">/*</span></div><div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="comment"> * VtableA = {&A::foo}</span></div><div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="comment"> * A::A(this){</span></div><div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment"> * *this = &VtableA;</span></div><div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="comment"> * }</span></div><div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment"> *</span></div><div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="comment"> *</span></div><div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="comment"> * A* p = new A;</span></div><div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="comment"> * cs: p->foo(...)</span></div><div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="comment"> * ==></span></div><div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="comment"> * vtptr = *p;</span></div><div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="comment"> * vfn = &vtptr[i]</span></div><div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="comment"> * %funp = *vfn</span></div><div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment"> * call %funp(p,...)</span></div><div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="comment"> * getConstructorThisPtr(A) return "this" pointer</span></div><div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="comment"> * getVCallThisPtr(cs) return p (this pointer)</span></div><div class="line"><a name="l00080"></a><span class="lineno"> 80</span> <span class="comment"> * getVCallVtblPtr(cs) return vtptr</span></div><div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment"> * getVCallIdx(cs) return i</span></div><div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="comment"> * getClassNameFromVtblObj(VtableA) return</span></div><div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="comment"> * getClassNameFromType(type of p) return type A</span></div><div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="comment"> */</span></div><div class="line"><a name="l00085"></a><span class="lineno"> 85</span> const <a class="code" href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">Argument</a>* <a class="code" href="namespaceSVF_1_1cppUtil.html#a26c3ceb82a398663284690c898a5354d">getConstructorThisPtr</a>(const Function* fun);</div><div class="line"><a name="l00086"></a><span class="lineno"> 86</span> const <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">getVCallThisPtr</a>(CallSite cs);</div><div class="line"><a name="l00087"></a><span class="lineno"> 87</span> const <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">getVCallVtblPtr</a>(CallSite cs);</div><div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <a class="code" href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">u64_t</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#ad2a35c1d2e357690e634bb250a68795d">getVCallIdx</a>(CallSite cs);</div><div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">getClassNameFromVtblObj</a>(const Value *value);</div><div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a891719bac36ebb6c001f073dfa5a9e7b">getClassNameFromType</a>(const Type *ty);</div><div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">getClassNameOfThisPtr</a>(CallSite cs);</div><div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">getFunNameOfVCallSite</a>(CallSite cs);</div><div class="line"><a name="l00093"></a><span class="lineno"> 93</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#abcba23ffa41fe5b456289e528d1b4c4e">VCallInCtorOrDtor</a>(CallSite cs);</div><div class="line"><a name="l00094"></a><span class="lineno"> 94</span> </div><div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">/*</span></div><div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment"> * A(A* this){</span></div><div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment"> * store this this.addr;</span></div><div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment"> * tmp = load this.addr;</span></div><div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="comment"> * this1 = bitcast(tmp);</span></div><div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="comment"> * B(this1);</span></div><div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment"> * }</span></div><div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment"> * this and this1 are the same thisPtr in the constructor</span></div><div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment"> */</span></div><div class="line"><a name="l00104"></a><span class="lineno"> 104</span> bool <a class="code" href="namespaceSVF_1_1cppUtil.html#a5dd3230226002e126f6b0a877f9550ce">isSameThisPtrInConstructor</a>(const Argument* thisPtr1, const Value* thisPtr2);</div><div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div><div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html"> 108</a></span> namespace ctir</div><div class="line"><a name="l00109"></a><span class="lineno"> 109</span> {</div><div class="line"><a name="l00113"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace"> 113</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">derefMDName</a> = <span class="stringliteral">"ctir"</span>;</div><div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058"> 116</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058">vtMDName</a> = <span class="stringliteral">"ctir.vt"</span>;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9"> 119</a></span> <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">vtInitMDName</a> = <span class="stringliteral">"ctir.vt.init"</span>;</div><div class="line"><a name="l00120"></a><span class="lineno"> 120</span> </div><div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3"> 122</a></span> <span class="keyword">const</span> uint32_t <a class="code" href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3">moduleFlagValue</a> = 1;</div><div class="line"><a name="l00123"></a><span class="lineno"> 123</span> }</div><div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div><div class="line"><a name="l00125"></a><span class="lineno"> 125</span> } <span class="comment">// End namespace cppUtil</span></div><div class="line"><a name="l00126"></a><span class="lineno"> 126</span> </div><div class="line"><a name="l00127"></a><span class="lineno"> 127</span> } <span class="comment">// End namespace SVF</span></div><div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div><div class="line"><a name="l00129"></a><span class="lineno"> 129</span> <span class="preprocessor">#endif </span><span class="comment">/* CPPUtil_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad2a35c1d2e357690e634bb250a68795d"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad2a35c1d2e357690e634bb250a68795d">SVF::cppUtil::getVCallIdx</a></div><div class="ttdeci">u64_t getVCallIdx(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00395">CPPUtil.cpp:395</a></div></div>
|
|
70
70
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a02b3f4190d325c921922c25e319dc8d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a02b3f4190d325c921922c25e319dc8d9">SVF::cppUtil::ctir::vtInitMDName</a></div><div class="ttdeci">const std::string vtInitMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00119">CPPUtil.h:119</a></div></div>
|
|
71
71
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_aca6465c72effcaddeb34f55da4555754"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aca6465c72effcaddeb34f55da4555754">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00260">CPPUtil.cpp:260</a></div></div>
|
|
72
72
|
<div class="ttc" id="Util_2BasicTypes_8h_html"><div class="ttname"><a href="Util_2BasicTypes_8h.html">BasicTypes.h</a></div></div>
|
|
73
73
|
<div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_af6117df8aec7f4c077058fa8f00b0243"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#af6117df8aec7f4c077058fa8f00b0243">SVF::cppUtil::DemangledName::isThunkFunc</a></div><div class="ttdeci">bool isThunkFunc</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00050">CPPUtil.h:50</a></div></div>
|
|
74
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad6f9578cdce518141772a11617160da8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">SVF::cppUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
74
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad6f9578cdce518141772a11617160da8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">SVF::cppUtil::isConstructor</a></div><div class="ttdeci">bool isConstructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00458">CPPUtil.cpp:458</a></div></div>
|
|
75
75
|
<div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html">SVF::cppUtil::DemangledName</a></div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00046">CPPUtil.h:46</a></div></div>
|
|
76
76
|
<div class="ttc" id="cJSON_8h_html_a25d22ecc7e656d2c59332072684e8766"><div class="ttname"><a href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a></div><div class="ttdeci">const char *const name</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8h_source.html#l00264">cJSON.h:264</a></div></div>
|
|
77
77
|
<div class="ttc" id="namespacestd_html"><div class="ttname"><a href="namespacestd.html">std</a></div></div>
|
|
78
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a891719bac36ebb6c001f073dfa5a9e7b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a891719bac36ebb6c001f073dfa5a9e7b">SVF::cppUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
79
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_af19bec54621f4605bac4feaf9f73803c"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">SVF::cppUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
78
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a891719bac36ebb6c001f073dfa5a9e7b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a891719bac36ebb6c001f073dfa5a9e7b">SVF::cppUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00415">CPPUtil.cpp:415</a></div></div>
|
|
79
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_af19bec54621f4605bac4feaf9f73803c"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">SVF::cppUtil::isDestructor</a></div><div class="ttdeci">bool isDestructor(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00490">CPPUtil.cpp:490</a></div></div>
|
|
80
80
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a0cd5347bc8043d4306e66a4a96005ace"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a0cd5347bc8043d4306e66a4a96005ace">SVF::cppUtil::ctir::derefMDName</a></div><div class="ttdeci">const std::string derefMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00113">CPPUtil.h:113</a></div></div>
|
|
81
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a5dd3230226002e126f6b0a877f9550ce"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a5dd3230226002e126f6b0a877f9550ce">SVF::cppUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
82
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a917c4bd2d5fd1354b5069bf0a68533d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">SVF::cppUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
83
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_abcba23ffa41fe5b456289e528d1b4c4e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abcba23ffa41fe5b456289e528d1b4c4e">SVF::cppUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
84
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a26c3ceb82a398663284690c898a5354d"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26c3ceb82a398663284690c898a5354d">SVF::cppUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
81
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a5dd3230226002e126f6b0a877f9550ce"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a5dd3230226002e126f6b0a877f9550ce">SVF::cppUtil::isSameThisPtrInConstructor</a></div><div class="ttdeci">bool isSameThisPtrInConstructor(const Argument *thisPtr1, const Value *thisPtr2)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00343">CPPUtil.cpp:343</a></div></div>
|
|
82
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a917c4bd2d5fd1354b5069bf0a68533d9"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a917c4bd2d5fd1354b5069bf0a68533d9">SVF::cppUtil::isCPPThunkFunction</a></div><div class="ttdeci">bool isCPPThunkFunction(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00289">CPPUtil.cpp:289</a></div></div>
|
|
83
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_abcba23ffa41fe5b456289e528d1b4c4e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abcba23ffa41fe5b456289e528d1b4c4e">SVF::cppUtil::VCallInCtorOrDtor</a></div><div class="ttdeci">bool VCallInCtorOrDtor(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00567">CPPUtil.cpp:567</a></div></div>
|
|
84
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a26c3ceb82a398663284690c898a5354d"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26c3ceb82a398663284690c898a5354d">SVF::cppUtil::getConstructorThisPtr</a></div><div class="ttdeci">const Argument * getConstructorThisPtr(const Function *fun)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00369">CPPUtil.cpp:369</a></div></div>
|
|
85
85
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a1e99d5cf28e0d6546e0d85b805a7e371"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1e99d5cf28e0d6546e0d85b805a7e371">SVF::cppUtil::isLoadVtblInst</a></div><div class="ttdeci">bool isLoadVtblInst(const LoadInst *loadInst)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00229">CPPUtil.cpp:229</a></div></div>
|
|
86
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_ac9c6d4315e7a1a826add7ed9cf924553"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">SVF::cppUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
87
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad83c097f1c77cdf52fc219ef07ee0b1a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
86
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_ac9c6d4315e7a1a826add7ed9cf924553"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ac9c6d4315e7a1a826add7ed9cf924553">SVF::cppUtil::getThunkTarget</a></div><div class="ttdeci">const Function * getThunkTarget(const Function *F)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00295">CPPUtil.cpp:295</a></div></div>
|
|
87
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_ad83c097f1c77cdf52fc219ef07ee0b1a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad83c097f1c77cdf52fc219ef07ee0b1a">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const Value *value)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00438">CPPUtil.cpp:438</a></div></div>
|
|
88
88
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_aa4630844aa25aa4801659304a2552058"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#aa4630844aa25aa4801659304a2552058">SVF::cppUtil::ctir::vtMDName</a></div><div class="ttdeci">const std::string vtMDName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00116">CPPUtil.h:116</a></div></div>
|
|
89
89
|
<div class="ttc" id="namespaceSVF_html_a5faee14fa1dd41447bc73ac365fe33c1"><div class="ttname"><a href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">SVF::Function</a></div><div class="ttdeci">llvm::Function Function</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00069">BasicTypes.h:69</a></div></div>
|
|
90
90
|
<div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_a1dd17b240663bc9412adefde82385e02"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a1dd17b240663bc9412adefde82385e02">SVF::cppUtil::DemangledName::funcName</a></div><div class="ttdeci">std::string funcName</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00049">CPPUtil.h:49</a></div></div>
|
|
91
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a7c9507812041b5de8dbbca5b602fefbd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">SVF::cppUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
91
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a7c9507812041b5de8dbbca5b602fefbd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a7c9507812041b5de8dbbca5b602fefbd">SVF::cppUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00319">CPPUtil.cpp:319</a></div></div>
|
|
92
92
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_1_1ctir_html_a05c7c51164928786d70713094db7f3f3"><div class="ttname"><a href="namespaceSVF_1_1cppUtil_1_1ctir.html#a05c7c51164928786d70713094db7f3f3">SVF::cppUtil::ctir::moduleFlagValue</a></div><div class="ttdeci">const uint32_t moduleFlagValue</div><div class="ttdoc">Value we expect a ctir-annotated module to have. </div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00122">CPPUtil.h:122</a></div></div>
|
|
93
93
|
<div class="ttc" id="structSVF_1_1cppUtil_1_1DemangledName_html_a5cd207bce618521166e6fa235014b297"><div class="ttname"><a href="structSVF_1_1cppUtil_1_1DemangledName.html#a5cd207bce618521166e6fa235014b297">SVF::cppUtil::DemangledName::className</a></div><div class="ttdeci">std::string className</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8h_source.html#l00048">CPPUtil.h:48</a></div></div>
|
|
94
94
|
<div class="ttc" id="namespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdoc">LLVM Aliases and constants. </div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00087">BasicTypes.h:87</a></div></div>
|
|
95
95
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_aeef0f5c6486379043a7d47b0635f2667"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aeef0f5c6486379043a7d47b0635f2667">SVF::cppUtil::isValVtbl</a></div><div class="ttdeci">bool isValVtbl(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00124">CPPUtil.cpp:124</a></div></div>
|
|
96
96
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a1cf2e4671b16b477cc779c72f2419234"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1cf2e4671b16b477cc779c72f2419234">SVF::cppUtil::getBeforeBrackets</a></div><div class="ttdeci">std::string getBeforeBrackets(const std::string &name)</div></div>
|
|
97
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3b00cc9770022f124958513bf1e52a05"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">SVF::cppUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
98
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3bed7bc0a0ae580841ca049f91690ff7"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">SVF::cppUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
97
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3b00cc9770022f124958513bf1e52a05"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3b00cc9770022f124958513bf1e52a05">SVF::cppUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00384">CPPUtil.cpp:384</a></div></div>
|
|
98
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a3bed7bc0a0ae580841ca049f91690ff7"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a3bed7bc0a0ae580841ca049f91690ff7">SVF::cppUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">std::string getClassNameOfThisPtr(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00524">CPPUtil.cpp:524</a></div></div>
|
|
99
99
|
<div class="ttc" id="namespacecppUtil_html"><div class="ttname"><a href="namespacecppUtil.html">cppUtil</a></div></div>
|
|
100
100
|
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a1007c092efaeae41002efd91b803a7f6"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a1007c092efaeae41002efd91b803a7f6">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &name)</div></div>
|
|
101
101
|
<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>
|
|
102
|
-
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a0a67c31dcc44784b09dca54b4b7c624a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">SVF::cppUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#
|
|
102
|
+
<div class="ttc" id="namespaceSVF_1_1cppUtil_html_a0a67c31dcc44784b09dca54b4b7c624a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a0a67c31dcc44784b09dca54b4b7c624a">SVF::cppUtil::getFunNameOfVCallSite</a></div><div class="ttdeci">std::string getFunNameOfVCallSite(CallSite cs)</div><div class="ttdef"><b>Definition:</b> <a href="CPPUtil_8cpp_source.html#l00551">CPPUtil.cpp:551</a></div></div>
|
|
103
103
|
<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>
|
|
104
104
|
<div class="ttc" id="namespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdef"><b>Definition:</b> <a href="Util_2BasicTypes_8h_source.html#l00071">BasicTypes.h:71</a></div></div>
|
|
105
105
|
<div class="ttc" id="namespaceSVF_html_a366625858f450a1ea5f985a3c83e0f14"><div class="ttname"><a href="namespaceSVF.html#a366625858f450a1ea5f985a3c83e0f14">SVF::u64_t</a></div><div class="ttdeci">unsigned long long u64_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFBasicTypes_8h_source.html#l00087">SVFBasicTypes.h:87</a></div></div>
|