svf-tools 1.0.864 → 1.0.865
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/CppUtil_8cpp_source.html +76 -71
- package/SVF-doxygen/html/CppUtil_8h_source.html +7 -7
- package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +5 -5
- package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +67 -62
- package/package.json +1 -1
- package/svf-llvm/lib/CppUtil.cpp +10 -4
|
@@ -814,70 +814,75 @@ $(function() {
|
|
|
814
814
|
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> *callBase = SVFUtil::dyn_cast<CallBase>(val))</div>
|
|
815
815
|
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  {</div>
|
|
816
816
|
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *foo = callBase->getCalledFunction();</div>
|
|
817
|
-
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="
|
|
818
|
-
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> 
|
|
819
|
-
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> 
|
|
820
|
-
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> }</div>
|
|
821
|
-
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  </div>
|
|
822
|
-
<div class="line"><a name="
|
|
823
|
-
<div class="line"><a name="
|
|
824
|
-
<div class="line"><a name="l00805"></a><span class="lineno"> 805</span> 
|
|
825
|
-
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> 
|
|
826
|
-
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  </div>
|
|
827
|
-
<div class="line"><a name="
|
|
828
|
-
<div class="line"><a name="
|
|
829
|
-
<div class="line"><a name="
|
|
830
|
-
<div class="line"><a name="
|
|
831
|
-
<div class="line"><a name="
|
|
832
|
-
<div class="line"><a name="
|
|
833
|
-
<div class="line"><a name="
|
|
834
|
-
<div class="line"><a name="
|
|
835
|
-
<div class="line"><a name="
|
|
836
|
-
<div class="line"><a name="
|
|
837
|
-
<div class="line"><a name="
|
|
838
|
-
<div class="line"><a name="
|
|
839
|
-
<div class="line"><a name="
|
|
840
|
-
<div class="line"><a name="
|
|
841
|
-
<div class="line"><a name="
|
|
842
|
-
<div class="line"><a name="
|
|
843
|
-
<div class="line"><a name="
|
|
844
|
-
<div class="line"><a name="
|
|
845
|
-
<div class="line"><a name="
|
|
846
|
-
<div class="line"><a name="
|
|
847
|
-
<div class="line"><a name="
|
|
848
|
-
<div class="line"><a name="
|
|
849
|
-
<div class="line"><a name="
|
|
850
|
-
<div class="line"><a name="
|
|
851
|
-
<div class="line"><a name="
|
|
852
|
-
<div class="line"><a name="
|
|
853
|
-
<div class="line"><a name="
|
|
854
|
-
<div class="line"><a name="
|
|
855
|
-
<div class="line"><a name="
|
|
856
|
-
<div class="line"><a name="
|
|
857
|
-
<div class="line"><a name="
|
|
858
|
-
<div class="line"><a name="
|
|
859
|
-
<div class="line"><a name="
|
|
860
|
-
<div class="line"><a name="
|
|
861
|
-
<div class="line"><a name="
|
|
862
|
-
<div class="line"><a name="
|
|
863
|
-
<div class="line"><a name="
|
|
864
|
-
<div class="line"><a name="
|
|
865
|
-
<div class="line"><a name="
|
|
866
|
-
<div class="line"><a name="
|
|
867
|
-
<div class="line"><a name="
|
|
868
|
-
<div class="line"><a name="
|
|
869
|
-
<div class="line"><a name="
|
|
870
|
-
<div class="line"><a name="
|
|
871
|
-
<div class="line"><a name="
|
|
872
|
-
<div class="line"><a name="
|
|
873
|
-
<div class="line"><a name="
|
|
874
|
-
<div class="line"><a name="
|
|
875
|
-
<div class="line"><a name="
|
|
876
|
-
<div class="line"><a name="
|
|
877
|
-
<div class="line"><a name="
|
|
878
|
-
<div class="line"><a name="
|
|
879
|
-
<div class="line"><a name="
|
|
880
|
-
<div class="line"><a name="
|
|
817
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="comment">// indirect call</span></div>
|
|
818
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">if</span>(!foo) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
819
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(foo) || <a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(foo) || <a class="code" href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">isTemplateFunc</a>(foo) || <a class="code" href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">isDynCast</a>(foo);</div>
|
|
820
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div>
|
|
821
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
822
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> }</div>
|
|
823
|
+
<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  </div>
|
|
824
|
+
<div class="line"><a name="l00805"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013"> 805</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">cppUtil::matchesLabel</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &foo, <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &label)</div>
|
|
825
|
+
<div class="line"><a name="l00806"></a><span class="lineno"> 806</span> {</div>
|
|
826
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">return</span> foo.compare(0, label.size(), label) == 0;</div>
|
|
827
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> }</div>
|
|
828
|
+
<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  </div>
|
|
829
|
+
<div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138"> 816</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">cppUtil::isTemplateFunc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *foo)</div>
|
|
830
|
+
<div class="line"><a name="l00817"></a><span class="lineno"> 817</span> {</div>
|
|
831
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  assert(foo->hasName() && <span class="stringliteral">"foo does not have a name? possible indirect call"</span>);</div>
|
|
832
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = foo->getName().str();</div>
|
|
833
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordtype">bool</span> matchedLabel = <a class="code" href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">matchesLabel</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>, <a class="code" href="CppUtil_8cpp.html#a64bb8e85e7f5a08516c02c83ea329e63">znstLabel</a>) || <a class="code" href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">matchesLabel</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>, <a class="code" href="CppUtil_8cpp.html#a73f68716197e7fbd42cb334af32b9ee2">znkstLabel</a>) ||</div>
|
|
834
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <a class="code" href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">matchesLabel</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>, <a class="code" href="CppUtil_8cpp.html#a9d0fa1ab7e36b676084a4f680c1e5f2e">znkLabel</a>);</div>
|
|
835
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="comment">// we exclude "_ZNK6cArray3dupEv" -> cArray::dup() const</span></div>
|
|
836
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &demangledName = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">llvm::demangle</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
|
|
837
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">return</span> matchedLabel && demangledName.find(<span class="charliteral">'<'</span>) != std::string::npos && demangledName.find(<span class="charliteral">'>'</span>) != std::string::npos;</div>
|
|
838
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> }</div>
|
|
839
|
+
<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  </div>
|
|
840
|
+
<div class="line"><a name="l00832"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5"> 832</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">cppUtil::isDynCast</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *foo)</div>
|
|
841
|
+
<div class="line"><a name="l00833"></a><span class="lineno"> 833</span> {</div>
|
|
842
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  assert(foo->hasName() && <span class="stringliteral">"foo does not have a name? possible indirect call"</span>);</div>
|
|
843
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> foo->getName().str() == <a class="code" href="CppUtil_8cpp.html#a7972d88aaaa4644ee22e5b95ac465a80">dyncast</a>;</div>
|
|
844
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> }</div>
|
|
845
|
+
<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  </div>
|
|
846
|
+
<div class="line"><a name="l00843"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5"> 843</a></span> <span class="keywordtype">bool</span> <a class="code" href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">cppUtil::isNewAlloc</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *foo)</div>
|
|
847
|
+
<div class="line"><a name="l00844"></a><span class="lineno"> 844</span> {</div>
|
|
848
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  assert(foo->hasName() && <span class="stringliteral">"foo does not have a name? possible indirect call"</span>);</div>
|
|
849
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">return</span> foo->getName().str() == <a class="code" href="CppUtil_8cpp.html#a809a0913c3e4226ef8fd2df7aaa63d8d">znwm</a>;</div>
|
|
850
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span> }</div>
|
|
851
|
+
<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  </div>
|
|
852
|
+
<div class="line"><a name="l00854"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b"> 854</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">cppUtil::extractClsNameFromDynCast</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1f4624771922dc8c2447ad7433588c73">CallBase</a>* callBase)</div>
|
|
853
|
+
<div class="line"><a name="l00855"></a><span class="lineno"> 855</span> {</div>
|
|
854
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *tgtCast = callBase->getArgOperand(2);</div>
|
|
855
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &valueStr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">LLVMUtil::dumpValue</a>(tgtCast);</div>
|
|
856
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> leftPos = valueStr.find(<a class="code" href="CppUtil_8cpp.html#ac6c8cb5e26437d51d4d2e0112ebfdbc6">ztilabel</a>);</div>
|
|
857
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  assert(leftPos != (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>) std::string::npos && <span class="stringliteral">"does not find ZTI for dyncast?"</span>);</div>
|
|
858
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rightPos = leftPos;</div>
|
|
859
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordflow">while</span> (rightPos < valueStr.size() && valueStr[rightPos] != <span class="charliteral">' '</span>) rightPos++;</div>
|
|
860
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &substr = valueStr.substr(leftPos, rightPos - leftPos);</div>
|
|
861
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> demangleName = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">llvm::demangle</a>(substr);</div>
|
|
862
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &realName = demangleName.substr(<a class="code" href="CppUtil_8cpp.html#af6dcab87a299097747c63a654197ae66">ztiprefix</a>.size(),</div>
|
|
863
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  demangleName.size() - <a class="code" href="CppUtil_8cpp.html#af6dcab87a299097747c63a654197ae66">ztiprefix</a>.size());</div>
|
|
864
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  assert(realName != <span class="stringliteral">""</span> && <span class="stringliteral">"real name for dyncast empty?"</span>);</div>
|
|
865
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">return</span> realName;</div>
|
|
866
|
+
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span> }</div>
|
|
867
|
+
<div class="line"><a name="l00869"></a><span class="lineno"> 869</span>  </div>
|
|
868
|
+
<div class="line"><a name="l00870"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html#abccc29dae7b845f19bf588b013191173"> 870</a></span> <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *<a class="code" href="namespaceSVF_1_1cppUtil.html#abccc29dae7b845f19bf588b013191173">cppUtil::cppClsNameToType</a>(<span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &className)</div>
|
|
869
|
+
<div class="line"><a name="l00871"></a><span class="lineno"> 871</span> {</div>
|
|
870
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *classTy = StructType::getTypeByName(LLVMModuleSet::getLLVMModuleSet()->getContext(),</div>
|
|
871
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="CppUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a> + className);</div>
|
|
872
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">return</span> classTy ? classTy : LLVMModuleSet::getLLVMModuleSet()->getTypeInference()->ptrType();</div>
|
|
873
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span> }</div>
|
|
874
|
+
<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  </div>
|
|
875
|
+
<div class="line"><a name="l00877"></a><span class="lineno"><a class="line" href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572"> 877</a></span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> <a class="code" href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">cppUtil::typeToClsName</a>(<span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">Type</a> *ty)</div>
|
|
876
|
+
<div class="line"><a name="l00878"></a><span class="lineno"> 878</span> {</div>
|
|
877
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> *stTy = SVFUtil::dyn_cast<StructType>(ty))</div>
|
|
878
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  {</div>
|
|
879
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &typeName = stTy->getName().str();</div>
|
|
880
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &className = typeName.substr(</div>
|
|
881
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="CppUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), typeName.size() - <a class="code" href="CppUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
|
|
882
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">return</span> className;</div>
|
|
883
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div>
|
|
884
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
|
|
885
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span> }</div>
|
|
881
886
|
</div><!-- fragment --></div><!-- contents -->
|
|
882
887
|
<div class="ttc" id="aCppUtil_8cpp_html_ae64b669f778ac066473456de94f72d48"><div class="ttname"><a href="CppUtil_8cpp.html#ae64b669f778ac066473456de94f72d48">znkst5Label</a></div><div class="ttdeci">const std::string znkst5Label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00068">CppUtil.cpp:68</a></div></div>
|
|
883
888
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a374e7c0b161a77f4d693e13b99ed6283"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a374e7c0b161a77f4d693e13b99ed6283">SVF::cppUtil::getVCallVtblPtr</a></div><div class="ttdeci">const Value * getVCallVtblPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00465">CppUtil.cpp:465</a></div></div>
|
|
@@ -899,7 +904,7 @@ $(function() {
|
|
|
899
904
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4e1785295e2695fae72758d8bbe4f7ac"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4e1785295e2695fae72758d8bbe4f7ac">SVF::cppUtil::classTyHasVTable</a></div><div class="ttdeci">bool classTyHasVTable(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00497">CppUtil.cpp:497</a></div></div>
|
|
900
905
|
<div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
901
906
|
<div class="ttc" id="astructSVF_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#l00047">CppUtil.h:47</a></div></div>
|
|
902
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a26ccd6abf127a7ccc34a973f7b13161b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">SVF::cppUtil::extractClsNameFromDynCast</a></div><div class="ttdeci">std::string extractClsNameFromDynCast(const CallBase *callBase)</div><div class="ttdoc">extract class name from cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
907
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a26ccd6abf127a7ccc34a973f7b13161b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">SVF::cppUtil::extractClsNameFromDynCast</a></div><div class="ttdeci">std::string extractClsNameFromDynCast(const CallBase *callBase)</div><div class="ttdoc">extract class name from cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00854">CppUtil.cpp:854</a></div></div>
|
|
903
908
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_ad8ee8de153df3f1bbdebb67185a2731c"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#ad8ee8de153df3f1bbdebb67185a2731c">SVF::LLVMUtil::isConstantObjSym</a></div><div class="ttdeci">bool isConstantObjSym(const SVFValue *val)</div><div class="ttdoc">Check whether this value points-to a constant object.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00869">LLVMUtil.cpp:869</a></div></div>
|
|
904
909
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
|
|
905
910
|
<div class="ttc" id="anamespaceSVF_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#l00314">CppUtil.cpp:314</a></div></div>
|
|
@@ -922,7 +927,7 @@ $(function() {
|
|
|
922
927
|
<div class="ttc" id="aCppUtil_8h_html"><div class="ttname"><a href="CppUtil_8h.html">CppUtil.h</a></div></div>
|
|
923
928
|
<div class="ttc" id="acJSON_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>
|
|
924
929
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a985a32c8324d559a87e4ee6e5a1e1efd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a985a32c8324d559a87e4ee6e5a1e1efd">SVF::cppUtil::isClsNameSource</a></div><div class="ttdeci">bool isClsNameSource(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00787">CppUtil.cpp:787</a></div></div>
|
|
925
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
930
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00816">CppUtil.cpp:816</a></div></div>
|
|
926
931
|
<div class="ttc" id="anamespaceSVF_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#l00417">CppUtil.cpp:417</a></div></div>
|
|
927
932
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_ae97bb256f20aa617f21a49c98d46177a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ae97bb256f20aa617f21a49c98d46177a">SVF::cppUtil::extractClsNamesFromFunc</a></div><div class="ttdeci">Set< std::string > extractClsNamesFromFunc(const Function *foo)</div><div class="ttdoc">extract class name from the c++ function name, e.g., constructor/destructors</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00634">CppUtil.cpp:634</a></div></div>
|
|
928
933
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a279fa78f7a2e45b458a0358de9c061b8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a279fa78f7a2e45b458a0358de9c061b8">SVF::cppUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00574">CppUtil.cpp:574</a></div></div>
|
|
@@ -943,21 +948,21 @@ $(function() {
|
|
|
943
948
|
<div class="ttc" id="aCppUtil_8cpp_html_a5f8da60b0fcc28445f508f4e42513a82"><div class="ttname"><a href="CppUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a></div><div class="ttdeci">const std::string clsName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00053">CppUtil.cpp:53</a></div></div>
|
|
944
949
|
<div class="ttc" id="aCppUtil_8cpp_html_a7972d88aaaa4644ee22e5b95ac465a80"><div class="ttname"><a href="CppUtil_8cpp.html#a7972d88aaaa4644ee22e5b95ac465a80">dyncast</a></div><div class="ttdeci">const std::string dyncast</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00079">CppUtil.cpp:79</a></div></div>
|
|
945
950
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_aab1dce633f9a03796c208b6fba2bd2b4"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aab1dce633f9a03796c208b6fba2bd2b4">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00283">CppUtil.cpp:283</a></div></div>
|
|
946
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abccc29dae7b845f19bf588b013191173"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abccc29dae7b845f19bf588b013191173">SVF::cppUtil::cppClsNameToType</a></div><div class="ttdeci">const Type * cppClsNameToType(const std::string &className)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
951
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abccc29dae7b845f19bf588b013191173"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abccc29dae7b845f19bf588b013191173">SVF::cppUtil::cppClsNameToType</a></div><div class="ttdeci">const Type * cppClsNameToType(const std::string &className)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00870">CppUtil.cpp:870</a></div></div>
|
|
947
952
|
<div class="ttc" id="aCppUtil_8cpp_html_a211c0223a37893d84fb5e2fd2f9fc76b"><div class="ttname"><a href="CppUtil_8cpp.html#a211c0223a37893d84fb5e2fd2f9fc76b">vtblLabelBeforeDemangle</a></div><div class="ttdeci">const std::string vtblLabelBeforeDemangle</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00048">CppUtil.cpp:48</a></div></div>
|
|
948
953
|
<div class="ttc" id="aCppUtil_8cpp_html_a2aa14572bb011847c1e5920aae880bfa"><div class="ttname"><a href="CppUtil_8cpp.html#a2aa14572bb011847c1e5920aae880bfa">VThunkFuncLabel</a></div><div class="ttdeci">const std::string VThunkFuncLabel</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00045">CppUtil.cpp:45</a></div></div>
|
|
949
954
|
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
|
|
950
955
|
<div class="ttc" id="aCppUtil_8cpp_html_adced009085794f93e816603380118609"><div class="ttname"><a href="CppUtil_8cpp.html#adced009085794f93e816603380118609">znst14Label</a></div><div class="ttdeci">const std::string znst14Label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00064">CppUtil.cpp:64</a></div></div>
|
|
951
956
|
<div class="ttc" id="astructSVF_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#l00051">CppUtil.h:51</a></div></div>
|
|
952
957
|
<div class="ttc" id="anamespaceSVF_html_ac4e93e1fec646ff222940a663843921b"><div class="ttname"><a href="namespaceSVF.html#ac4e93e1fec646ff222940a663843921b">SVF::GetElementPtrInst</a></div><div class="ttdeci">llvm::GetElementPtrInst GetElementPtrInst</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00161">BasicTypes.h:161</a></div></div>
|
|
953
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4f7be63c320fca5a7d981a03999107b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">SVF::cppUtil::isNewAlloc</a></div><div class="ttdeci">bool isNewAlloc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp heap allocation (new)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
958
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4f7be63c320fca5a7d981a03999107b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">SVF::cppUtil::isNewAlloc</a></div><div class="ttdeci">bool isNewAlloc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp heap allocation (new)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00843">CppUtil.cpp:843</a></div></div>
|
|
954
959
|
<div class="ttc" id="aCppUtil_8cpp_html_a61c158146c07e77234eb4a2f9b940821"><div class="ttname"><a href="CppUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a></div><div class="ttdeci">const std::string structName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00054">CppUtil.cpp:54</a></div></div>
|
|
955
960
|
<div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
|
|
956
961
|
<div class="ttc" id="aLLVMModule_8h_html"><div class="ttname"><a href="LLVMModule_8h.html">LLVMModule.h</a></div></div>
|
|
957
962
|
<div class="ttc" id="aclassSVF_1_1StInfo_html_ac0a9f85f90524abfd519d3cd2ac95a56"><div class="ttname"><a href="classSVF_1_1StInfo.html#ac0a9f85f90524abfd519d3cd2ac95a56">SVF::StInfo::getFlattenFieldTypes</a></div><div class="ttdeci">std::vector< const SVFType * > & getFlattenFieldTypes()</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00192">SVFType.h:192</a></div></div>
|
|
958
963
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_ae0f374d110eefcfcf4c196c85db6c0d2"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ae0f374d110eefcfcf4c196c85db6c0d2">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const std::string &vtblName)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00235">CppUtil.cpp:235</a></div></div>
|
|
959
964
|
<div class="ttc" id="astructSVF_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#l00049">CppUtil.h:49</a></div></div>
|
|
960
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a6457105712e29db5c8a8183239daa013"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">SVF::cppUtil::matchesLabel</a></div><div class="ttdeci">bool matchesLabel(const std::string &foo, const std::string &label)</div><div class="ttdoc">whether foo matches the mangler label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
965
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a6457105712e29db5c8a8183239daa013"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">SVF::cppUtil::matchesLabel</a></div><div class="ttdeci">bool matchesLabel(const std::string &foo, const std::string &label)</div><div class="ttdoc">whether foo matches the mangler label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00805">CppUtil.cpp:805</a></div></div>
|
|
961
966
|
<div class="ttc" id="astructSVF_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#l00050">CppUtil.h:50</a></div></div>
|
|
962
967
|
<div class="ttc" id="aCppUtil_8cpp_html_a3afb7512c76959754d6398b8f20012da"><div class="ttname"><a href="CppUtil_8cpp.html#a3afb7512c76959754d6398b8f20012da">vtblLabelAfterDemangle</a></div><div class="ttdeci">const std::string vtblLabelAfterDemangle</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00041">CppUtil.cpp:41</a></div></div>
|
|
963
968
|
<div class="ttc" id="anamespaceSVF_html_a67f3f86344f028cacfbeb08caaf7bb0f"><div class="ttname"><a href="namespaceSVF.html#a67f3f86344f028cacfbeb08caaf7bb0f">SVF::GlobalValue</a></div><div class="ttdeci">llvm::GlobalValue GlobalValue</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00087">BasicTypes.h:87</a></div></div>
|
|
@@ -968,14 +973,14 @@ $(function() {
|
|
|
968
973
|
<div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
|
|
969
974
|
<div class="ttc" id="anamespaceSVF_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#l00368">CppUtil.cpp:368</a></div></div>
|
|
970
975
|
<div class="ttc" id="aCppUtil_8cpp_html_a73f68716197e7fbd42cb334af32b9ee2"><div class="ttname"><a href="CppUtil_8cpp.html#a73f68716197e7fbd42cb334af32b9ee2">znkstLabel</a></div><div class="ttdeci">const std::string znkstLabel</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00067">CppUtil.cpp:67</a></div></div>
|
|
971
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
976
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00832">CppUtil.cpp:832</a></div></div>
|
|
972
977
|
<div class="ttc" id="aCppUtil_8cpp_html_a6f19eb9e9f233bab6ca592083dcfc0c3"><div class="ttname"><a href="CppUtil_8cpp.html#a6f19eb9e9f233bab6ca592083dcfc0c3">zn1Label</a></div><div class="ttdeci">const std::string zn1Label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00058">CppUtil.cpp:58</a></div></div>
|
|
973
978
|
<div class="ttc" id="aCppUtil_8cpp_html_a3750c7fb6ce4186591a9d7a74f66dd2d"><div class="ttname"><a href="CppUtil_8cpp.html#a3750c7fb6ce4186591a9d7a74f66dd2d">znkst20Label</a></div><div class="ttdeci">const std::string znkst20Label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00069">CppUtil.cpp:69</a></div></div>
|
|
974
979
|
<div class="ttc" id="anamespaceSVF_html_a28eec26ec8edaa5e96aecfeb01f6c0d4"><div class="ttname"><a href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">SVF::MDString</a></div><div class="ttdeci">llvm::MDString MDString</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
|
|
975
980
|
<div class="ttc" id="anamespaceSVF_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#l00437">CppUtil.cpp:437</a></div></div>
|
|
976
981
|
<div class="ttc" id="aCppUtil_8cpp_html_a1236129f13ba32542603b56b7ad60fd2"><div class="ttname"><a href="CppUtil_8cpp.html#a1236129f13ba32542603b56b7ad60fd2">znkst23Label</a></div><div class="ttdeci">const std::string znkst23Label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00071">CppUtil.cpp:71</a></div></div>
|
|
977
982
|
<div class="ttc" id="anamespaceSVF_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#l00392">CppUtil.cpp:392</a></div></div>
|
|
978
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abeb267a39339b04eec09c6a2a6ceb572"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">SVF::cppUtil::typeToClsName</a></div><div class="ttdeci">std::string typeToClsName(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
983
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abeb267a39339b04eec09c6a2a6ceb572"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">SVF::cppUtil::typeToClsName</a></div><div class="ttdeci">std::string typeToClsName(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00877">CppUtil.cpp:877</a></div></div>
|
|
979
984
|
<div class="ttc" id="aCppUtil_8cpp_html_a809a0913c3e4226ef8fd2df7aaa63d8d"><div class="ttname"><a href="CppUtil_8cpp.html#a809a0913c3e4226ef8fd2df7aaa63d8d">znwm</a></div><div class="ttdeci">const std::string znwm</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00057">CppUtil.cpp:57</a></div></div>
|
|
980
985
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a8b5f65818c69c70e07ffbc2bbe1c7c91"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a8b5f65818c69c70e07ffbc2bbe1c7c91">SVF::ObjTypeInference::inferThisPtrClsName</a></div><div class="ttdeci">Set< std::string > & inferThisPtrClsName(const Value *thisPtr)</div><div class="ttdoc">get or infer the class names of thisptr</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00597">ObjTypeInference.cpp:597</a></div></div>
|
|
981
986
|
<div class="ttc" id="anamespaceSVF_html_ad42bff8d0a7d60a085aa32d10f4955af"><div class="ttname"><a href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">SVF::u32_t</a></div><div class="ttdeci">unsigned u32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00051">SVFType.h:51</a></div></div>
|
|
@@ -245,7 +245,7 @@ $(function() {
|
|
|
245
245
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4e1785295e2695fae72758d8bbe4f7ac"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4e1785295e2695fae72758d8bbe4f7ac">SVF::cppUtil::classTyHasVTable</a></div><div class="ttdeci">bool classTyHasVTable(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00497">CppUtil.cpp:497</a></div></div>
|
|
246
246
|
<div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
247
247
|
<div class="ttc" id="astructSVF_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#l00047">CppUtil.h:47</a></div></div>
|
|
248
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a26ccd6abf127a7ccc34a973f7b13161b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">SVF::cppUtil::extractClsNameFromDynCast</a></div><div class="ttdeci">std::string extractClsNameFromDynCast(const CallBase *callBase)</div><div class="ttdoc">extract class name from cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
248
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a26ccd6abf127a7ccc34a973f7b13161b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">SVF::cppUtil::extractClsNameFromDynCast</a></div><div class="ttdeci">std::string extractClsNameFromDynCast(const CallBase *callBase)</div><div class="ttdoc">extract class name from cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00854">CppUtil.cpp:854</a></div></div>
|
|
249
249
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
|
|
250
250
|
<div class="ttc" id="anamespaceSVF_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#l00314">CppUtil.cpp:314</a></div></div>
|
|
251
251
|
<div class="ttc" id="anamespaceSVF_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#l00320">CppUtil.cpp:320</a></div></div>
|
|
@@ -255,7 +255,7 @@ $(function() {
|
|
|
255
255
|
<div class="ttc" id="anamespaceSVF_html_a1d008c0666c145622b81d427be64c52d"><div class="ttname"><a href="namespaceSVF.html#a1d008c0666c145622b81d427be64c52d">SVF::Type</a></div><div class="ttdeci">llvm::Type Type</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00082">BasicTypes.h:82</a></div></div>
|
|
256
256
|
<div class="ttc" id="acJSON_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>
|
|
257
257
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a985a32c8324d559a87e4ee6e5a1e1efd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a985a32c8324d559a87e4ee6e5a1e1efd">SVF::cppUtil::isClsNameSource</a></div><div class="ttdeci">bool isClsNameSource(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00787">CppUtil.cpp:787</a></div></div>
|
|
258
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
258
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00816">CppUtil.cpp:816</a></div></div>
|
|
259
259
|
<div class="ttc" id="anamespaceSVF_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#l00417">CppUtil.cpp:417</a></div></div>
|
|
260
260
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_ae97bb256f20aa617f21a49c98d46177a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ae97bb256f20aa617f21a49c98d46177a">SVF::cppUtil::extractClsNamesFromFunc</a></div><div class="ttdeci">Set< std::string > extractClsNamesFromFunc(const Function *foo)</div><div class="ttdoc">extract class name from the c++ function name, e.g., constructor/destructors</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00634">CppUtil.cpp:634</a></div></div>
|
|
261
261
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a279fa78f7a2e45b458a0358de9c061b8"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a279fa78f7a2e45b458a0358de9c061b8">SVF::cppUtil::getVCallIdx</a></div><div class="ttdeci">s32_t getVCallIdx(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00574">CppUtil.cpp:574</a></div></div>
|
|
@@ -267,21 +267,21 @@ $(function() {
|
|
|
267
267
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a8de9a0f0c400240b6cb433b4db3fb3d1"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a8de9a0f0c400240b6cb433b4db3fb3d1">SVF::cppUtil::getClassNameOfThisPtr</a></div><div class="ttdeci">Set< std::string > getClassNameOfThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00529">CppUtil.cpp:529</a></div></div>
|
|
268
268
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a6f78191ab37ac0d5c20923c5ab646011"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a6f78191ab37ac0d5c20923c5ab646011">SVF::cppUtil::getClassNameFromType</a></div><div class="ttdeci">std::string getClassNameFromType(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00511">CppUtil.cpp:511</a></div></div>
|
|
269
269
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_aab1dce633f9a03796c208b6fba2bd2b4"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#aab1dce633f9a03796c208b6fba2bd2b4">SVF::cppUtil::isVirtualCallSite</a></div><div class="ttdeci">bool isVirtualCallSite(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00283">CppUtil.cpp:283</a></div></div>
|
|
270
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abccc29dae7b845f19bf588b013191173"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abccc29dae7b845f19bf588b013191173">SVF::cppUtil::cppClsNameToType</a></div><div class="ttdeci">const Type * cppClsNameToType(const std::string &className)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
270
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abccc29dae7b845f19bf588b013191173"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abccc29dae7b845f19bf588b013191173">SVF::cppUtil::cppClsNameToType</a></div><div class="ttdeci">const Type * cppClsNameToType(const std::string &className)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00870">CppUtil.cpp:870</a></div></div>
|
|
271
271
|
<div class="ttc" id="anamespaceSVF_html_a9b707002523ece2ac54ca893ee9a2d4e"><div class="ttname"><a href="namespaceSVF.html#a9b707002523ece2ac54ca893ee9a2d4e">SVF::s32_t</a></div><div class="ttdeci">signed s32_t</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00052">SVFType.h:52</a></div></div>
|
|
272
272
|
<div class="ttc" id="astructSVF_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#l00051">CppUtil.h:51</a></div></div>
|
|
273
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4f7be63c320fca5a7d981a03999107b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">SVF::cppUtil::isNewAlloc</a></div><div class="ttdeci">bool isNewAlloc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp heap allocation (new)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
273
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4f7be63c320fca5a7d981a03999107b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">SVF::cppUtil::isNewAlloc</a></div><div class="ttdeci">bool isNewAlloc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp heap allocation (new)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00843">CppUtil.cpp:843</a></div></div>
|
|
274
274
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_ae0f374d110eefcfcf4c196c85db6c0d2"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ae0f374d110eefcfcf4c196c85db6c0d2">SVF::cppUtil::getClassNameFromVtblObj</a></div><div class="ttdeci">std::string getClassNameFromVtblObj(const std::string &vtblName)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00235">CppUtil.cpp:235</a></div></div>
|
|
275
275
|
<div class="ttc" id="astructSVF_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#l00049">CppUtil.h:49</a></div></div>
|
|
276
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a6457105712e29db5c8a8183239daa013"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">SVF::cppUtil::matchesLabel</a></div><div class="ttdeci">bool matchesLabel(const std::string &foo, const std::string &label)</div><div class="ttdoc">whether foo matches the mangler label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
276
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a6457105712e29db5c8a8183239daa013"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">SVF::cppUtil::matchesLabel</a></div><div class="ttdeci">bool matchesLabel(const std::string &foo, const std::string &label)</div><div class="ttdoc">whether foo matches the mangler label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00805">CppUtil.cpp:805</a></div></div>
|
|
277
277
|
<div class="ttc" id="astructSVF_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#l00050">CppUtil.h:50</a></div></div>
|
|
278
278
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a643736d0d9aae502784f736f492201b4"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a643736d0d9aae502784f736f492201b4">SVF::cppUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00342">CppUtil.cpp:342</a></div></div>
|
|
279
279
|
<div class="ttc" id="anamespaceSVF_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#l00368">CppUtil.cpp:368</a></div></div>
|
|
280
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
280
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00832">CppUtil.cpp:832</a></div></div>
|
|
281
281
|
<div class="ttc" id="anamespaceSVF_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#l00437">CppUtil.cpp:437</a></div></div>
|
|
282
282
|
<div class="ttc" id="aSVFValue_8h_html"><div class="ttname"><a href="SVFValue_8h.html">SVFValue.h</a></div></div>
|
|
283
283
|
<div class="ttc" id="anamespaceSVF_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#l00392">CppUtil.cpp:392</a></div></div>
|
|
284
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abeb267a39339b04eec09c6a2a6ceb572"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">SVF::cppUtil::typeToClsName</a></div><div class="ttdeci">std::string typeToClsName(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
284
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abeb267a39339b04eec09c6a2a6ceb572"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">SVF::cppUtil::typeToClsName</a></div><div class="ttdeci">std::string typeToClsName(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00877">CppUtil.cpp:877</a></div></div>
|
|
285
285
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_ad1eec7173e805abd0ccc7270ddbf42eb"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ad1eec7173e805abd0ccc7270ddbf42eb">SVF::cppUtil::getVtblStruct</a></div><div class="ttdeci">const ConstantStruct * getVtblStruct(const GlobalValue *vtbl)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00254">CppUtil.cpp:254</a></div></div>
|
|
286
286
|
<div class="ttc" id="anamespaceSVF_html_a58cdfbc4160cae08745b67844ac29801"><div class="ttname"><a href="namespaceSVF.html#a58cdfbc4160cae08745b67844ac29801">SVF::Argument</a></div><div class="ttdeci">llvm::Argument Argument</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00144">BasicTypes.h:144</a></div></div>
|
|
287
287
|
<div class="ttc" id="anamespaceSVF_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#l00172">CppUtil.h:172</a></div></div>
|
|
@@ -886,7 +886,7 @@ $(function() {
|
|
|
886
886
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4e1785295e2695fae72758d8bbe4f7ac"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4e1785295e2695fae72758d8bbe4f7ac">SVF::cppUtil::classTyHasVTable</a></div><div class="ttdeci">bool classTyHasVTable(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00497">CppUtil.cpp:497</a></div></div>
|
|
887
887
|
<div class="ttc" id="anamespaceSVF_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="BasicTypes_8h_source.html#l00066">BasicTypes.h:66</a></div></div>
|
|
888
888
|
<div class="ttc" id="anamespaceSVF_html_aa962cc1d782cc46553251e96b64a754b"><div class="ttname"><a href="namespaceSVF.html#aa962cc1d782cc46553251e96b64a754b">SVF::PointerType</a></div><div class="ttdeci">llvm::PointerType PointerType</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00095">BasicTypes.h:95</a></div></div>
|
|
889
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a26ccd6abf127a7ccc34a973f7b13161b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">SVF::cppUtil::extractClsNameFromDynCast</a></div><div class="ttdeci">std::string extractClsNameFromDynCast(const CallBase *callBase)</div><div class="ttdoc">extract class name from cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
889
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a26ccd6abf127a7ccc34a973f7b13161b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">SVF::cppUtil::extractClsNameFromDynCast</a></div><div class="ttdeci">std::string extractClsNameFromDynCast(const CallBase *callBase)</div><div class="ttdoc">extract class name from cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00854">CppUtil.cpp:854</a></div></div>
|
|
890
890
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00202">LLVMModule.h:202</a></div></div>
|
|
891
891
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
|
|
892
892
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
|
|
@@ -904,7 +904,7 @@ $(function() {
|
|
|
904
904
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a9d99aa95a862bc1434c6fbc3dec67a64"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a9d99aa95a862bc1434c6fbc3dec67a64">SVF::ObjTypeInference::fwInferObjType</a></div><div class="ttdeci">const Type * fwInferObjType(const Value *var)</div><div class="ttdoc">forward infer the type of the object pointed by var</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00160">ObjTypeInference.cpp:160</a></div></div>
|
|
905
905
|
<div class="ttc" id="acJSON_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>
|
|
906
906
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a985a32c8324d559a87e4ee6e5a1e1efd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a985a32c8324d559a87e4ee6e5a1e1efd">SVF::cppUtil::isClsNameSource</a></div><div class="ttdeci">bool isClsNameSource(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00787">CppUtil.cpp:787</a></div></div>
|
|
907
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
907
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00816">CppUtil.cpp:816</a></div></div>
|
|
908
908
|
<div class="ttc" id="anamespaceSVF_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#l00417">CppUtil.cpp:417</a></div></div>
|
|
909
909
|
<div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
910
910
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_ae97bb256f20aa617f21a49c98d46177a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ae97bb256f20aa617f21a49c98d46177a">SVF::cppUtil::extractClsNamesFromFunc</a></div><div class="ttdeci">Set< std::string > extractClsNamesFromFunc(const Function *foo)</div><div class="ttdoc">extract class name from the c++ function name, e.g., constructor/destructors</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00634">CppUtil.cpp:634</a></div></div>
|
|
@@ -914,7 +914,7 @@ $(function() {
|
|
|
914
914
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a42149ece87a178241ef1ef0cce7ec554"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a42149ece87a178241ef1ef0cce7ec554">SVF::ObjTypeInference::bwfindAllocOfVar</a></div><div class="ttdeci">Set< const Value * > & bwfindAllocOfVar(const Value *var)</div><div class="ttdoc">backward collect all possible allocation sites (stack, static, heap) of var</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00384">ObjTypeInference.cpp:384</a></div></div>
|
|
915
915
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a62020ece25ac660f1adb41bd0cf40be7"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a62020ece25ac660f1adb41bd0cf40be7">SVF::ObjTypeInference::isAlloc</a></div><div class="ttdeci">bool isAlloc(const SVF::Value *val)</div><div class="ttdoc">is allocation (stack, static, heap)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00503">ObjTypeInference.cpp:503</a></div></div>
|
|
916
916
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
|
|
917
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4f7be63c320fca5a7d981a03999107b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">SVF::cppUtil::isNewAlloc</a></div><div class="ttdeci">bool isNewAlloc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp heap allocation (new)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
917
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4f7be63c320fca5a7d981a03999107b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">SVF::cppUtil::isNewAlloc</a></div><div class="ttdeci">bool isNewAlloc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp heap allocation (new)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00843">CppUtil.cpp:843</a></div></div>
|
|
918
918
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ac4c28c8d205d354f3a982119f29f2aac"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4c28c8d205d354f3a982119f29f2aac">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const SVFBasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00193">SVFValue.cpp:193</a></div></div>
|
|
919
919
|
<div class="ttc" id="aLLVMModule_8h_html"><div class="ttname"><a href="LLVMModule_8h.html">LLVMModule.h</a></div></div>
|
|
920
920
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aee4383a13cda421acb034ea147e33a6d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aee4383a13cda421acb034ea147e33a6d">SVF::ObjTypeInference::defaultType</a></div><div class="ttdeci">const Type * defaultType(const Value *val)</div><div class="ttdoc">default type</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00112">ObjTypeInference.cpp:112</a></div></div>
|
|
@@ -927,14 +927,14 @@ $(function() {
|
|
|
927
927
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a4550f2fb815882edfb666ac818792064"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(const std::string &msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
|
|
928
928
|
<div class="ttc" id="aObjTypeInference_8cpp_html_a7165377d2fbd76a86ed0ec5218712c78"><div class="ttname"><a href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a></div><div class="ttdeci">#define ABORT_IFNOT(condition, msg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00048">ObjTypeInference.cpp:48</a></div></div>
|
|
929
929
|
<div class="ttc" id="aObjTypeInference_8cpp_html_a19b8626948c43f4ce19dbc69742d309e"><div class="ttname"><a href="ObjTypeInference_8cpp.html#a19b8626948c43f4ce19dbc69742d309e">infersiteToType</a></div><div class="ttdeci">const Type * infersiteToType(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00083">ObjTypeInference.cpp:83</a></div></div>
|
|
930
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
930
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00832">CppUtil.cpp:832</a></div></div>
|
|
931
931
|
<div class="ttc" id="aObjTypeInference_8cpp_html_a54176d0866e198769367b0dc65e049b5"><div class="ttname"><a href="ObjTypeInference_8cpp.html#a54176d0866e198769367b0dc65e049b5">ABORT_MSG</a></div><div class="ttdeci">#define ABORT_MSG(msg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00042">ObjTypeInference.cpp:42</a></div></div>
|
|
932
932
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html_a3fd9acb6d09fd142bfd402fdf8cac93b"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">SVF::FILOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00272">WorkList.h:272</a></div></div>
|
|
933
933
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00229">WorkList.h:229</a></div></div>
|
|
934
934
|
<div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option< u32_t > MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
|
|
935
935
|
<div class="ttc" id="anamespaceSVF_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#l00437">CppUtil.cpp:437</a></div></div>
|
|
936
936
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a72da2d7f06e8fee67dc5b3c451fa5dee"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a72da2d7f06e8fee67dc5b3c451fa5dee">SVF::ObjTypeInference::getArgPosInCall</a></div><div class="ttdeci">u32_t getArgPosInCall(const CallBase *callBase, const Value *arg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00551">ObjTypeInference.cpp:551</a></div></div>
|
|
937
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abeb267a39339b04eec09c6a2a6ceb572"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">SVF::cppUtil::typeToClsName</a></div><div class="ttdeci">std::string typeToClsName(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
937
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abeb267a39339b04eec09c6a2a6ceb572"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">SVF::cppUtil::typeToClsName</a></div><div class="ttdeci">std::string typeToClsName(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00877">CppUtil.cpp:877</a></div></div>
|
|
938
938
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_ae905a7d3f1b211fbaaf9e703b1f44482"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#ae905a7d3f1b211fbaaf9e703b1f44482">SVF::ObjTypeInference::inferObjType</a></div><div class="ttdeci">const Type * inferObjType(const Value *var)</div><div class="ttdoc">get or infer the type of the object pointed by the value</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00134">ObjTypeInference.cpp:134</a></div></div>
|
|
939
939
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a172f97ff9c9a7c90dbec6329c89775ad"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a172f97ff9c9a7c90dbec6329c89775ad">SVF::ObjTypeInference::getLLVMCtx</a></div><div class="ttdeci">LLVMContext & getLLVMCtx()</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00123">ObjTypeInference.cpp:123</a></div></div>
|
|
940
940
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a8b5f65818c69c70e07ffbc2bbe1c7c91"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a8b5f65818c69c70e07ffbc2bbe1c7c91">SVF::ObjTypeInference::inferThisPtrClsName</a></div><div class="ttdeci">Set< std::string > & inferThisPtrClsName(const Value *thisPtr)</div><div class="ttdoc">get or infer the class names of thisptr</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00597">ObjTypeInference.cpp:597</a></div></div>
|
|
@@ -1649,7 +1649,7 @@ Private Attributes</h2></td></tr>
|
|
|
1649
1649
|
<div class="ttc" id="anamespaceSVF_html_af739db846e47ba6b2fd15eaad31ab7fb"><div class="ttname"><a href="namespaceSVF.html#af739db846e47ba6b2fd15eaad31ab7fb">SVF::Set</a></div><div class="ttdeci">std::unordered_set< Key, Hash, KeyEqual, Allocator > Set</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00097">SVFType.h:97</a></div></div>
|
|
1650
1650
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4e1785295e2695fae72758d8bbe4f7ac"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4e1785295e2695fae72758d8bbe4f7ac">SVF::cppUtil::classTyHasVTable</a></div><div class="ttdeci">bool classTyHasVTable(const StructType *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00497">CppUtil.cpp:497</a></div></div>
|
|
1651
1651
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_afefdc78a399a653f1b408a62eafeaab9"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#afefdc78a399a653f1b408a62eafeaab9">SVF::ObjTypeInference::_valueToAllocOrClsNameSources</a></div><div class="ttdeci">ValueToSources _valueToAllocOrClsNameSources</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8h_source.html#l00059">ObjTypeInference.h:59</a></div></div>
|
|
1652
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a26ccd6abf127a7ccc34a973f7b13161b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">SVF::cppUtil::extractClsNameFromDynCast</a></div><div class="ttdeci">std::string extractClsNameFromDynCast(const CallBase *callBase)</div><div class="ttdoc">extract class name from cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
1652
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a26ccd6abf127a7ccc34a973f7b13161b"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a26ccd6abf127a7ccc34a973f7b13161b">SVF::cppUtil::extractClsNameFromDynCast</a></div><div class="ttdeci">std::string extractClsNameFromDynCast(const CallBase *callBase)</div><div class="ttdoc">extract class name from cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00854">CppUtil.cpp:854</a></div></div>
|
|
1653
1653
|
<div class="ttc" id="aclassSVF_1_1LLVMModuleSet_html_a50fc24901350df9db890ba16a9b87e33"><div class="ttname"><a href="classSVF_1_1LLVMModuleSet.html#a50fc24901350df9db890ba16a9b87e33">SVF::LLVMModuleSet::getSVFFunction</a></div><div class="ttdeci">SVFFunction * getSVFFunction(const Function *fun) const</div><div class="ttdef"><b>Definition:</b> <a href="LLVMModule_8h_source.html#l00202">LLVMModule.h:202</a></div></div>
|
|
1654
1654
|
<div class="ttc" id="anamespaceSVF_html_a90b263fd2f541eca78135078114cabda"><div class="ttname"><a href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">SVF::Value</a></div><div class="ttdeci">llvm::Value Value</div><div class="ttdoc">LLVM Basic classes.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00081">BasicTypes.h:81</a></div></div>
|
|
1655
1655
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_ab2064cb70c76f399ce115f2621adea35"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#ab2064cb70c76f399ce115f2621adea35">SVF::SVFUtil::isHeapAllocExtCallViaRet</a></div><div class="ttdeci">bool isHeapAllocExtCallViaRet(const CallSite cs)</div><div class="ttdoc">interfaces to be used externally</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00442">SVFUtil.h:442</a></div></div>
|
|
@@ -1665,7 +1665,7 @@ Private Attributes</h2></td></tr>
|
|
|
1665
1665
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a9d99aa95a862bc1434c6fbc3dec67a64"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a9d99aa95a862bc1434c6fbc3dec67a64">SVF::ObjTypeInference::fwInferObjType</a></div><div class="ttdeci">const Type * fwInferObjType(const Value *var)</div><div class="ttdoc">forward infer the type of the object pointed by var</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00160">ObjTypeInference.cpp:160</a></div></div>
|
|
1666
1666
|
<div class="ttc" id="acJSON_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>
|
|
1667
1667
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a985a32c8324d559a87e4ee6e5a1e1efd"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a985a32c8324d559a87e4ee6e5a1e1efd">SVF::cppUtil::isClsNameSource</a></div><div class="ttdeci">bool isClsNameSource(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00787">CppUtil.cpp:787</a></div></div>
|
|
1668
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
1668
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00816">CppUtil.cpp:816</a></div></div>
|
|
1669
1669
|
<div class="ttc" id="anamespaceSVF_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#l00417">CppUtil.cpp:417</a></div></div>
|
|
1670
1670
|
<div class="ttc" id="acJSON_8cpp_html_a3f9a0d3265a6254722587175dac3e4dc"><div class="ttname"><a href="cJSON_8cpp.html#a3f9a0d3265a6254722587175dac3e4dc">type</a></div><div class="ttdeci">newitem type</div><div class="ttdef"><b>Definition:</b> <a href="cJSON_8cpp_source.html#l02739">cJSON.cpp:2739</a></div></div>
|
|
1671
1671
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_ae97bb256f20aa617f21a49c98d46177a"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#ae97bb256f20aa617f21a49c98d46177a">SVF::cppUtil::extractClsNamesFromFunc</a></div><div class="ttdeci">Set< std::string > extractClsNamesFromFunc(const Function *foo)</div><div class="ttdoc">extract class name from the c++ function name, e.g., constructor/destructors</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00634">CppUtil.cpp:634</a></div></div>
|
|
@@ -1676,7 +1676,7 @@ Private Attributes</h2></td></tr>
|
|
|
1676
1676
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a62020ece25ac660f1adb41bd0cf40be7"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a62020ece25ac660f1adb41bd0cf40be7">SVF::ObjTypeInference::isAlloc</a></div><div class="ttdeci">bool isAlloc(const SVF::Value *val)</div><div class="ttdoc">is allocation (stack, static, heap)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00503">ObjTypeInference.cpp:503</a></div></div>
|
|
1677
1677
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a18edeb47fb7734eb17ba3a84181cbc16"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a18edeb47fb7734eb17ba3a84181cbc16">SVF::ObjTypeInference::_valueToAllocs</a></div><div class="ttdeci">ValueToSources _valueToAllocs</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8h_source.html#l00057">ObjTypeInference.h:57</a></div></div>
|
|
1678
1678
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a72502f7f536418621485e90ab98c2016"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a72502f7f536418621485e90ab98c2016">SVF::SVFUtil::move</a></div><div class="ttdeci">constexpr std::remove_reference< T >::type && move(T &&t) noexcept</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8h_source.html#l00621">SVFUtil.h:621</a></div></div>
|
|
1679
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4f7be63c320fca5a7d981a03999107b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">SVF::cppUtil::isNewAlloc</a></div><div class="ttdeci">bool isNewAlloc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp heap allocation (new)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
1679
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a4f7be63c320fca5a7d981a03999107b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a4f7be63c320fca5a7d981a03999107b5">SVF::cppUtil::isNewAlloc</a></div><div class="ttdeci">bool isNewAlloc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp heap allocation (new)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00843">CppUtil.cpp:843</a></div></div>
|
|
1680
1680
|
<div class="ttc" id="aclassSVF_1_1SVFFunction_html_ac4c28c8d205d354f3a982119f29f2aac"><div class="ttname"><a href="classSVF_1_1SVFFunction.html#ac4c28c8d205d354f3a982119f29f2aac">SVF::SVFFunction::getExitBB</a></div><div class="ttdeci">const SVFBasicBlock * getExitBB() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFValue_8cpp_source.html#l00193">SVFValue.cpp:193</a></div></div>
|
|
1681
1681
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_aee4383a13cda421acb034ea147e33a6d"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#aee4383a13cda421acb034ea147e33a6d">SVF::ObjTypeInference::defaultType</a></div><div class="ttdeci">const Type * defaultType(const Value *val)</div><div class="ttdoc">default type</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00112">ObjTypeInference.cpp:112</a></div></div>
|
|
1682
1682
|
<div class="ttc" id="anamespaceSVF_html_a4f21e91ff8eaea5207afe5c60dbd78d7"><div class="ttname"><a href="namespaceSVF.html#a4f21e91ff8eaea5207afe5c60dbd78d7">SVF::OrderedSet</a></div><div class="ttdeci">std::set< Key, Compare, Allocator > OrderedSet</div><div class="ttdef"><b>Definition:</b> <a href="SVFType_8h_source.html#l00106">SVFType.h:106</a></div></div>
|
|
@@ -1687,14 +1687,14 @@ Private Attributes</h2></td></tr>
|
|
|
1687
1687
|
<div class="ttc" id="anamespaceSVF_1_1SVFUtil_html_a4550f2fb815882edfb666ac818792064"><div class="ttname"><a href="namespaceSVF_1_1SVFUtil.html#a4550f2fb815882edfb666ac818792064">SVF::SVFUtil::pasMsg</a></div><div class="ttdeci">std::string pasMsg(const std::string &msg)</div><div class="ttdoc">Print each pass/phase message by converting a string into blue string output.</div><div class="ttdef"><b>Definition:</b> <a href="SVFUtil_8cpp_source.html#l00099">SVFUtil.cpp:99</a></div></div>
|
|
1688
1688
|
<div class="ttc" id="aObjTypeInference_8cpp_html_a7165377d2fbd76a86ed0ec5218712c78"><div class="ttname"><a href="ObjTypeInference_8cpp.html#a7165377d2fbd76a86ed0ec5218712c78">ABORT_IFNOT</a></div><div class="ttdeci">#define ABORT_IFNOT(condition, msg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00048">ObjTypeInference.cpp:48</a></div></div>
|
|
1689
1689
|
<div class="ttc" id="aObjTypeInference_8cpp_html_a19b8626948c43f4ce19dbc69742d309e"><div class="ttname"><a href="ObjTypeInference_8cpp.html#a19b8626948c43f4ce19dbc69742d309e">infersiteToType</a></div><div class="ttdeci">const Type * infersiteToType(const Value *val)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00083">ObjTypeInference.cpp:83</a></div></div>
|
|
1690
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
1690
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00832">CppUtil.cpp:832</a></div></div>
|
|
1691
1691
|
<div class="ttc" id="aObjTypeInference_8cpp_html_a54176d0866e198769367b0dc65e049b5"><div class="ttname"><a href="ObjTypeInference_8cpp.html#a54176d0866e198769367b0dc65e049b5">ABORT_MSG</a></div><div class="ttdeci">#define ABORT_MSG(msg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00042">ObjTypeInference.cpp:42</a></div></div>
|
|
1692
1692
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html_a3fd9acb6d09fd142bfd402fdf8cac93b"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html#a3fd9acb6d09fd142bfd402fdf8cac93b">SVF::FILOWorkList::pop</a></div><div class="ttdeci">Data pop()</div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00272">WorkList.h:272</a></div></div>
|
|
1693
1693
|
<div class="ttc" id="aclassSVF_1_1FILOWorkList_html"><div class="ttname"><a href="classSVF_1_1FILOWorkList.html">SVF::FILOWorkList</a></div><div class="ttdef"><b>Definition:</b> <a href="WorkList_8h_source.html#l00229">WorkList.h:229</a></div></div>
|
|
1694
1694
|
<div class="ttc" id="aclassSVF_1_1Options_html_aaab923c093730b1670a54f09340b1bd5"><div class="ttname"><a href="classSVF_1_1Options.html#aaab923c093730b1670a54f09340b1bd5">SVF::Options::MaxFieldLimit</a></div><div class="ttdeci">static const Option< u32_t > MaxFieldLimit</div><div class="ttdoc">Maximum number of field derivations for an object.</div><div class="ttdef"><b>Definition:</b> <a href="Options_8h_source.html#l00038">Options.h:38</a></div></div>
|
|
1695
1695
|
<div class="ttc" id="anamespaceSVF_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#l00437">CppUtil.cpp:437</a></div></div>
|
|
1696
1696
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a72da2d7f06e8fee67dc5b3c451fa5dee"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a72da2d7f06e8fee67dc5b3c451fa5dee">SVF::ObjTypeInference::getArgPosInCall</a></div><div class="ttdeci">u32_t getArgPosInCall(const CallBase *callBase, const Value *arg)</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00551">ObjTypeInference.cpp:551</a></div></div>
|
|
1697
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abeb267a39339b04eec09c6a2a6ceb572"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">SVF::cppUtil::typeToClsName</a></div><div class="ttdeci">std::string typeToClsName(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
1697
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_abeb267a39339b04eec09c6a2a6ceb572"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#abeb267a39339b04eec09c6a2a6ceb572">SVF::cppUtil::typeToClsName</a></div><div class="ttdeci">std::string typeToClsName(const Type *ty)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00877">CppUtil.cpp:877</a></div></div>
|
|
1698
1698
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_ad9ceac3c884a08ce0ae4fef4b488a7c5"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#ad9ceac3c884a08ce0ae4fef4b488a7c5">SVF::ObjTypeInference::_valueToType</a></div><div class="ttdeci">ValueToType _valueToType</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8h_source.html#l00056">ObjTypeInference.h:56</a></div></div>
|
|
1699
1699
|
<div class="ttc" id="aclassSVF_1_1ObjTypeInference_html_a172f97ff9c9a7c90dbec6329c89775ad"><div class="ttname"><a href="classSVF_1_1ObjTypeInference.html#a172f97ff9c9a7c90dbec6329c89775ad">SVF::ObjTypeInference::getLLVMCtx</a></div><div class="ttdeci">LLVMContext & getLLVMCtx()</div><div class="ttdef"><b>Definition:</b> <a href="ObjTypeInference_8cpp_source.html#l00123">ObjTypeInference.cpp:123</a></div></div>
|
|
1700
1700
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_abba4111230f6009bbf50518ee36a9870"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#abba4111230f6009bbf50518ee36a9870">SVF::LLVMUtil::getPtrElementType</a></div><div class="ttdeci">static Type * getPtrElementType(const PointerType *pty)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8h_source.html#l00099">LLVMUtil.h:99</a></div></div>
|
|
@@ -203,12 +203,12 @@ Functions</h2></td></tr>
|
|
|
203
203
|
</table>
|
|
204
204
|
</div><div class="memdoc">
|
|
205
205
|
|
|
206
|
-
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#
|
|
207
|
-
<div class="fragment"><div class="line"><a name="
|
|
208
|
-
<div class="line"><a name="
|
|
209
|
-
<div class="line"><a name="
|
|
210
|
-
<div class="line"><a name="
|
|
211
|
-
<div class="line"><a name="
|
|
206
|
+
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#l00870">870</a> of file <a class="el" href="CppUtil_8cpp_source.html">CppUtil.cpp</a>.</p>
|
|
207
|
+
<div class="fragment"><div class="line"><a name="l00871"></a><span class="lineno"> 871</span> {</div>
|
|
208
|
+
<div class="line"><a name="l00872"></a><span class="lineno"> 872</span>  <a class="code" href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">StructType</a> *classTy = StructType::getTypeByName(LLVMModuleSet::getLLVMModuleSet()->getContext(),</div>
|
|
209
|
+
<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  <a class="code" href="CppUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a> + className);</div>
|
|
210
|
+
<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  <span class="keywordflow">return</span> classTy ? classTy : LLVMModuleSet::getLLVMModuleSet()->getTypeInference()->ptrType();</div>
|
|
211
|
+
<div class="line"><a name="l00875"></a><span class="lineno"> 875</span> }</div>
|
|
212
212
|
</div><!-- fragment -->
|
|
213
213
|
</div>
|
|
214
214
|
</div>
|
|
@@ -300,21 +300,21 @@ Functions</h2></td></tr>
|
|
|
300
300
|
</dl>
|
|
301
301
|
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
|
|
302
302
|
|
|
303
|
-
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#
|
|
304
|
-
<div class="fragment"><div class="line"><a name="
|
|
305
|
-
<div class="line"><a name="
|
|
306
|
-
<div class="line"><a name="
|
|
307
|
-
<div class="line"><a name="
|
|
308
|
-
<div class="line"><a name="
|
|
309
|
-
<div class="line"><a name="
|
|
310
|
-
<div class="line"><a name="
|
|
311
|
-
<div class="line"><a name="
|
|
312
|
-
<div class="line"><a name="
|
|
313
|
-
<div class="line"><a name="
|
|
314
|
-
<div class="line"><a name="
|
|
315
|
-
<div class="line"><a name="
|
|
316
|
-
<div class="line"><a name="
|
|
317
|
-
<div class="line"><a name="
|
|
303
|
+
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#l00854">854</a> of file <a class="el" href="CppUtil_8cpp_source.html">CppUtil.cpp</a>.</p>
|
|
304
|
+
<div class="fragment"><div class="line"><a name="l00855"></a><span class="lineno"> 855</span> {</div>
|
|
305
|
+
<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  <a class="code" href="namespaceSVF.html#a90b263fd2f541eca78135078114cabda">Value</a> *tgtCast = callBase->getArgOperand(2);</div>
|
|
306
|
+
<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &valueStr = <a class="code" href="namespaceSVF_1_1LLVMUtil.html#afa2f8c8ab19c75547c26ede53b9f6159">LLVMUtil::dumpValue</a>(tgtCast);</div>
|
|
307
|
+
<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> leftPos = valueStr.find(<a class="code" href="CppUtil_8cpp.html#ac6c8cb5e26437d51d4d2e0112ebfdbc6">ztilabel</a>);</div>
|
|
308
|
+
<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  assert(leftPos != (<a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a>) std::string::npos && <span class="stringliteral">"does not find ZTI for dyncast?"</span>);</div>
|
|
309
|
+
<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  <a class="code" href="namespaceSVF.html#ad42bff8d0a7d60a085aa32d10f4955af">u32_t</a> rightPos = leftPos;</div>
|
|
310
|
+
<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  <span class="keywordflow">while</span> (rightPos < valueStr.size() && valueStr[rightPos] != <span class="charliteral">' '</span>) rightPos++;</div>
|
|
311
|
+
<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &substr = valueStr.substr(leftPos, rightPos - leftPos);</div>
|
|
312
|
+
<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> demangleName = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">llvm::demangle</a>(substr);</div>
|
|
313
|
+
<div class="line"><a name="l00864"></a><span class="lineno"> 864</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &realName = demangleName.substr(<a class="code" href="CppUtil_8cpp.html#af6dcab87a299097747c63a654197ae66">ztiprefix</a>.size(),</div>
|
|
314
|
+
<div class="line"><a name="l00865"></a><span class="lineno"> 865</span>  demangleName.size() - <a class="code" href="CppUtil_8cpp.html#af6dcab87a299097747c63a654197ae66">ztiprefix</a>.size());</div>
|
|
315
|
+
<div class="line"><a name="l00866"></a><span class="lineno"> 866</span>  assert(realName != <span class="stringliteral">""</span> && <span class="stringliteral">"real name for dyncast empty?"</span>);</div>
|
|
316
|
+
<div class="line"><a name="l00867"></a><span class="lineno"> 867</span>  <span class="keywordflow">return</span> realName;</div>
|
|
317
|
+
<div class="line"><a name="l00868"></a><span class="lineno"> 868</span> }</div>
|
|
318
318
|
</div><!-- fragment -->
|
|
319
319
|
</div>
|
|
320
320
|
</div>
|
|
@@ -834,7 +834,7 @@ Functions</h2></td></tr>
|
|
|
834
834
|
</table>
|
|
835
835
|
</div><div class="memdoc">
|
|
836
836
|
<p>class sources can be heap allocation or functions where we can extract the class name (constructors/destructors or template functions)</p>
|
|
837
|
-
<p>class sources
|
|
837
|
+
<p>class sources are functions where we can extract the class name (constructors/destructors or template functions) </p><dl class="params"><dt>Parameters</dt><dd>
|
|
838
838
|
<table class="params">
|
|
839
839
|
<tr><td class="paramname">val</td><td></td></tr>
|
|
840
840
|
</table>
|
|
@@ -847,10 +847,12 @@ Functions</h2></td></tr>
|
|
|
847
847
|
<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> *callBase = SVFUtil::dyn_cast<CallBase>(val))</div>
|
|
848
848
|
<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  {</div>
|
|
849
849
|
<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="keyword">const</span> <a class="code" href="namespaceSVF.html#a5faee14fa1dd41447bc73ac365fe33c1">Function</a> *foo = callBase->getCalledFunction();</div>
|
|
850
|
-
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="
|
|
851
|
-
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span> 
|
|
852
|
-
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span> 
|
|
853
|
-
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span> }</div>
|
|
850
|
+
<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="comment">// indirect call</span></div>
|
|
851
|
+
<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="keywordflow">if</span>(!foo) <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
852
|
+
<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="keywordflow">return</span> <a class="code" href="namespaceSVF_1_1cppUtil.html#ad6f9578cdce518141772a11617160da8">isConstructor</a>(foo) || <a class="code" href="namespaceSVF_1_1cppUtil.html#af19bec54621f4605bac4feaf9f73803c">isDestructor</a>(foo) || <a class="code" href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">isTemplateFunc</a>(foo) || <a class="code" href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">isDynCast</a>(foo);</div>
|
|
853
|
+
<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  }</div>
|
|
854
|
+
<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div>
|
|
855
|
+
<div class="line"><a name="l00797"></a><span class="lineno"> 797</span> }</div>
|
|
854
856
|
</div><!-- fragment -->
|
|
855
857
|
</div>
|
|
856
858
|
</div>
|
|
@@ -980,11 +982,11 @@ Functions</h2></td></tr>
|
|
|
980
982
|
</dl>
|
|
981
983
|
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
|
|
982
984
|
|
|
983
|
-
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#
|
|
984
|
-
<div class="fragment"><div class="line"><a name="
|
|
985
|
-
<div class="line"><a name="
|
|
986
|
-
<div class="line"><a name="
|
|
987
|
-
<div class="line"><a name="
|
|
985
|
+
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#l00832">832</a> of file <a class="el" href="CppUtil_8cpp_source.html">CppUtil.cpp</a>.</p>
|
|
986
|
+
<div class="fragment"><div class="line"><a name="l00833"></a><span class="lineno"> 833</span> {</div>
|
|
987
|
+
<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  assert(foo->hasName() && <span class="stringliteral">"foo does not have a name? possible indirect call"</span>);</div>
|
|
988
|
+
<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="keywordflow">return</span> foo->getName().str() == <a class="code" href="CppUtil_8cpp.html#a7972d88aaaa4644ee22e5b95ac465a80">dyncast</a>;</div>
|
|
989
|
+
<div class="line"><a name="l00836"></a><span class="lineno"> 836</span> }</div>
|
|
988
990
|
</div><!-- fragment -->
|
|
989
991
|
</div>
|
|
990
992
|
</div>
|
|
@@ -1013,11 +1015,11 @@ Functions</h2></td></tr>
|
|
|
1013
1015
|
</dl>
|
|
1014
1016
|
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
|
|
1015
1017
|
|
|
1016
|
-
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#
|
|
1017
|
-
<div class="fragment"><div class="line"><a name="
|
|
1018
|
-
<div class="line"><a name="
|
|
1019
|
-
<div class="line"><a name="
|
|
1020
|
-
<div class="line"><a name="
|
|
1018
|
+
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#l00843">843</a> of file <a class="el" href="CppUtil_8cpp_source.html">CppUtil.cpp</a>.</p>
|
|
1019
|
+
<div class="fragment"><div class="line"><a name="l00844"></a><span class="lineno"> 844</span> {</div>
|
|
1020
|
+
<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  assert(foo->hasName() && <span class="stringliteral">"foo does not have a name? possible indirect call"</span>);</div>
|
|
1021
|
+
<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="keywordflow">return</span> foo->getName().str() == <a class="code" href="CppUtil_8cpp.html#a809a0913c3e4226ef8fd2df7aaa63d8d">znwm</a>;</div>
|
|
1022
|
+
<div class="line"><a name="l00847"></a><span class="lineno"> 847</span> }</div>
|
|
1021
1023
|
</div><!-- fragment -->
|
|
1022
1024
|
</div>
|
|
1023
1025
|
</div>
|
|
@@ -1091,7 +1093,7 @@ Functions</h2></td></tr>
|
|
|
1091
1093
|
</div><div class="memdoc">
|
|
1092
1094
|
|
|
1093
1095
|
<p>whether foo is a cpp template function </p>
|
|
1094
|
-
<p>whether foo is a cpp template function </p><dl class="params"><dt>Parameters</dt><dd>
|
|
1096
|
+
<p>whether foo is a cpp template function TODO: we only consider limited label for now (see the very beginning of <a class="el" href="CppUtil_8cpp.html">CppUtil.cpp</a>) </p><dl class="params"><dt>Parameters</dt><dd>
|
|
1095
1097
|
<table class="params">
|
|
1096
1098
|
<tr><td class="paramname">foo</td><td></td></tr>
|
|
1097
1099
|
</table>
|
|
@@ -1099,13 +1101,16 @@ Functions</h2></td></tr>
|
|
|
1099
1101
|
</dl>
|
|
1100
1102
|
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
|
|
1101
1103
|
|
|
1102
|
-
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#
|
|
1103
|
-
<div class="fragment"><div class="line"><a name="
|
|
1104
|
-
<div class="line"><a name="
|
|
1105
|
-
<div class="line"><a name="
|
|
1106
|
-
<div class="line"><a name="
|
|
1107
|
-
<div class="line"><a name="
|
|
1108
|
-
<div class="line"><a name="
|
|
1104
|
+
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#l00816">816</a> of file <a class="el" href="CppUtil_8cpp_source.html">CppUtil.cpp</a>.</p>
|
|
1105
|
+
<div class="fragment"><div class="line"><a name="l00817"></a><span class="lineno"> 817</span> {</div>
|
|
1106
|
+
<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  assert(foo->hasName() && <span class="stringliteral">"foo does not have a name? possible indirect call"</span>);</div>
|
|
1107
|
+
<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a> = foo->getName().str();</div>
|
|
1108
|
+
<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="keywordtype">bool</span> matchedLabel = <a class="code" href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">matchesLabel</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>, <a class="code" href="CppUtil_8cpp.html#a64bb8e85e7f5a08516c02c83ea329e63">znstLabel</a>) || <a class="code" href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">matchesLabel</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>, <a class="code" href="CppUtil_8cpp.html#a73f68716197e7fbd42cb334af32b9ee2">znkstLabel</a>) ||</div>
|
|
1109
|
+
<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <a class="code" href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">matchesLabel</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>, <a class="code" href="CppUtil_8cpp.html#a9d0fa1ab7e36b676084a4f680c1e5f2e">znkLabel</a>);</div>
|
|
1110
|
+
<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="comment">// we exclude "_ZNK6cArray3dupEv" -> cArray::dup() const</span></div>
|
|
1111
|
+
<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &demangledName = <a class="code" href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">llvm::demangle</a>(<a class="code" href="cJSON_8h.html#a25d22ecc7e656d2c59332072684e8766">name</a>);</div>
|
|
1112
|
+
<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="keywordflow">return</span> matchedLabel && demangledName.find(<span class="charliteral">'<'</span>) != std::string::npos && demangledName.find(<span class="charliteral">'>'</span>) != std::string::npos;</div>
|
|
1113
|
+
<div class="line"><a name="l00825"></a><span class="lineno"> 825</span> }</div>
|
|
1109
1114
|
</div><!-- fragment -->
|
|
1110
1115
|
</div>
|
|
1111
1116
|
</div>
|
|
@@ -1221,10 +1226,10 @@ Functions</h2></td></tr>
|
|
|
1221
1226
|
</dl>
|
|
1222
1227
|
<dl class="section return"><dt>Returns</dt><dd></dd></dl>
|
|
1223
1228
|
|
|
1224
|
-
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#
|
|
1225
|
-
<div class="fragment"><div class="line"><a name="
|
|
1226
|
-
<div class="line"><a name="
|
|
1227
|
-
<div class="line"><a name="
|
|
1229
|
+
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#l00805">805</a> of file <a class="el" href="CppUtil_8cpp_source.html">CppUtil.cpp</a>.</p>
|
|
1230
|
+
<div class="fragment"><div class="line"><a name="l00806"></a><span class="lineno"> 806</span> {</div>
|
|
1231
|
+
<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="keywordflow">return</span> foo.compare(0, label.size(), label) == 0;</div>
|
|
1232
|
+
<div class="line"><a name="l00808"></a><span class="lineno"> 808</span> }</div>
|
|
1228
1233
|
</div><!-- fragment -->
|
|
1229
1234
|
</div>
|
|
1230
1235
|
</div>
|
|
@@ -1244,17 +1249,17 @@ Functions</h2></td></tr>
|
|
|
1244
1249
|
</table>
|
|
1245
1250
|
</div><div class="memdoc">
|
|
1246
1251
|
|
|
1247
|
-
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#
|
|
1248
|
-
<div class="fragment"><div class="line"><a name="
|
|
1249
|
-
<div class="line"><a name="
|
|
1250
|
-
<div class="line"><a name="
|
|
1251
|
-
<div class="line"><a name="
|
|
1252
|
-
<div class="line"><a name="
|
|
1253
|
-
<div class="line"><a name="
|
|
1254
|
-
<div class="line"><a name="
|
|
1255
|
-
<div class="line"><a name="
|
|
1256
|
-
<div class="line"><a name="
|
|
1257
|
-
<div class="line"><a name="
|
|
1252
|
+
<p class="definition">Definition at line <a class="el" href="CppUtil_8cpp_source.html#l00877">877</a> of file <a class="el" href="CppUtil_8cpp_source.html">CppUtil.cpp</a>.</p>
|
|
1253
|
+
<div class="fragment"><div class="line"><a name="l00878"></a><span class="lineno"> 878</span> {</div>
|
|
1254
|
+
<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  <span class="keywordflow">if</span> (<span class="keyword">const</span> <span class="keyword">auto</span> *stTy = SVFUtil::dyn_cast<StructType>(ty))</div>
|
|
1255
|
+
<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  {</div>
|
|
1256
|
+
<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &typeName = stTy->getName().str();</div>
|
|
1257
|
+
<div class="line"><a name="l00882"></a><span class="lineno"> 882</span>  <span class="keyword">const</span> <a class="code" href="cJSON_8h.html#ad4c68ea99a26b0a98ad9a79982960458">std::string</a> &className = typeName.substr(</div>
|
|
1258
|
+
<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <a class="code" href="CppUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size(), typeName.size() - <a class="code" href="CppUtil_8cpp.html#a5f8da60b0fcc28445f508f4e42513a82">clsName</a>.size());</div>
|
|
1259
|
+
<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  <span class="keywordflow">return</span> className;</div>
|
|
1260
|
+
<div class="line"><a name="l00885"></a><span class="lineno"> 885</span>  }</div>
|
|
1261
|
+
<div class="line"><a name="l00886"></a><span class="lineno"> 886</span>  <span class="keywordflow">return</span> <span class="stringliteral">""</span>;</div>
|
|
1262
|
+
<div class="line"><a name="l00887"></a><span class="lineno"> 887</span> }</div>
|
|
1258
1263
|
</div><!-- fragment -->
|
|
1259
1264
|
</div>
|
|
1260
1265
|
</div>
|
|
@@ -1310,7 +1315,7 @@ Functions</h2></td></tr>
|
|
|
1310
1315
|
<div class="ttc" id="aCppUtil_8cpp_html_af6dcab87a299097747c63a654197ae66"><div class="ttname"><a href="CppUtil_8cpp.html#af6dcab87a299097747c63a654197ae66">ztiprefix</a></div><div class="ttdeci">const std::string ztiprefix</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00078">CppUtil.cpp:78</a></div></div>
|
|
1311
1316
|
<div class="ttc" id="anamespaceSVF_1_1LLVMUtil_html_a6e8682537cf5bed808df439bd7e1add9"><div class="ttname"><a href="namespaceSVF_1_1LLVMUtil.html#a6e8682537cf5bed808df439bd7e1add9">SVF::LLVMUtil::dumpType</a></div><div class="ttdeci">std::string dumpType(const Type *type)</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l00923">LLVMUtil.cpp:923</a></div></div>
|
|
1312
1317
|
<div class="ttc" id="acJSON_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>
|
|
1313
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
1318
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a41a600eddf9058faa2982b1f4f08d138"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a41a600eddf9058faa2982b1f4f08d138">SVF::cppUtil::isTemplateFunc</a></div><div class="ttdeci">bool isTemplateFunc(const Function *foo)</div><div class="ttdoc">whether foo is a cpp template function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00816">CppUtil.cpp:816</a></div></div>
|
|
1314
1319
|
<div class="ttc" id="anamespaceSVF_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#l00417">CppUtil.cpp:417</a></div></div>
|
|
1315
1320
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a745a2addadc136075d45c7fb8437af3e"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a745a2addadc136075d45c7fb8437af3e">SVF::cppUtil::demangle</a></div><div class="ttdeci">struct DemangledName demangle(const std::string &name)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00191">CppUtil.cpp:191</a></div></div>
|
|
1316
1321
|
<div class="ttc" id="anamespaceSVF_html_a2bf58575ac7d068e0f1a4cf953b9e6cb"><div class="ttname"><a href="namespaceSVF.html#a2bf58575ac7d068e0f1a4cf953b9e6cb">SVF::StructType</a></div><div class="ttdeci">llvm::StructType StructType</div><div class="ttdoc">LLVM types.</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00093">BasicTypes.h:93</a></div></div>
|
|
@@ -1330,7 +1335,7 @@ Functions</h2></td></tr>
|
|
|
1330
1335
|
<div class="ttc" id="aCppUtil_8cpp_html_a61c158146c07e77234eb4a2f9b940821"><div class="ttname"><a href="CppUtil_8cpp.html#a61c158146c07e77234eb4a2f9b940821">structName</a></div><div class="ttdeci">const std::string structName</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00054">CppUtil.cpp:54</a></div></div>
|
|
1331
1336
|
<div class="ttc" id="anamespaceSVF_html_adefcb50414ea999d70cea5ccdbcb98d7"><div class="ttname"><a href="namespaceSVF.html#adefcb50414ea999d70cea5ccdbcb98d7">SVF::ConstantInt</a></div><div class="ttdeci">llvm::ConstantInt ConstantInt</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00124">BasicTypes.h:124</a></div></div>
|
|
1332
1337
|
<div class="ttc" id="astructSVF_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#l00049">CppUtil.h:49</a></div></div>
|
|
1333
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a6457105712e29db5c8a8183239daa013"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">SVF::cppUtil::matchesLabel</a></div><div class="ttdeci">bool matchesLabel(const std::string &foo, const std::string &label)</div><div class="ttdoc">whether foo matches the mangler label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
1338
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a6457105712e29db5c8a8183239daa013"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a6457105712e29db5c8a8183239daa013">SVF::cppUtil::matchesLabel</a></div><div class="ttdeci">bool matchesLabel(const std::string &foo, const std::string &label)</div><div class="ttdoc">whether foo matches the mangler label</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00805">CppUtil.cpp:805</a></div></div>
|
|
1334
1339
|
<div class="ttc" id="astructSVF_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#l00050">CppUtil.h:50</a></div></div>
|
|
1335
1340
|
<div class="ttc" id="aCppUtil_8cpp_html_a3afb7512c76959754d6398b8f20012da"><div class="ttname"><a href="CppUtil_8cpp.html#a3afb7512c76959754d6398b8f20012da">vtblLabelAfterDemangle</a></div><div class="ttdeci">const std::string vtblLabelAfterDemangle</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00041">CppUtil.cpp:41</a></div></div>
|
|
1336
1341
|
<div class="ttc" id="aCppUtil_8cpp_html_afbbc221b8368ff25777c6d86e3394789"><div class="ttname"><a href="CppUtil_8cpp.html#afbbc221b8368ff25777c6d86e3394789">updateClassNameBeforeBrackets</a></div><div class="ttdeci">void updateClassNameBeforeBrackets(cppUtil::DemangledName &dname)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00401">CppUtil.cpp:401</a></div></div>
|
|
@@ -1339,7 +1344,7 @@ Functions</h2></td></tr>
|
|
|
1339
1344
|
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_a643736d0d9aae502784f736f492201b4"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#a643736d0d9aae502784f736f492201b4">SVF::cppUtil::getVCallThisPtr</a></div><div class="ttdeci">const Value * getVCallThisPtr(const CallBase *cs)</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00342">CppUtil.cpp:342</a></div></div>
|
|
1340
1345
|
<div class="ttc" id="aSVFFileSystem_8cpp_html_ab25baccb41e3b67ef0bfdaa1336c9649"><div class="ttname"><a href="SVFFileSystem_8cpp.html#ab25baccb41e3b67ef0bfdaa1336c9649">F</a></div><div class="ttdeci">#define F(f)</div></div>
|
|
1341
1346
|
<div class="ttc" id="aCppUtil_8cpp_html_a73f68716197e7fbd42cb334af32b9ee2"><div class="ttname"><a href="CppUtil_8cpp.html#a73f68716197e7fbd42cb334af32b9ee2">znkstLabel</a></div><div class="ttdeci">const std::string znkstLabel</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00067">CppUtil.cpp:67</a></div></div>
|
|
1342
|
-
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#
|
|
1347
|
+
<div class="ttc" id="anamespaceSVF_1_1cppUtil_html_afd5fcc8fe98df5f057ff2e04c68b49b5"><div class="ttname"><a href="namespaceSVF_1_1cppUtil.html#afd5fcc8fe98df5f057ff2e04c68b49b5">SVF::cppUtil::isDynCast</a></div><div class="ttdeci">bool isDynCast(const Function *foo)</div><div class="ttdoc">whether foo is a cpp dyncast function</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00832">CppUtil.cpp:832</a></div></div>
|
|
1343
1348
|
<div class="ttc" id="anamespaceSVF_html_a28eec26ec8edaa5e96aecfeb01f6c0d4"><div class="ttname"><a href="namespaceSVF.html#a28eec26ec8edaa5e96aecfeb01f6c0d4">SVF::MDString</a></div><div class="ttdeci">llvm::MDString MDString</div><div class="ttdef"><b>Definition:</b> <a href="BasicTypes_8h_source.html#l00100">BasicTypes.h:100</a></div></div>
|
|
1344
1349
|
<div class="ttc" id="anamespaceSVF_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#l00437">CppUtil.cpp:437</a></div></div>
|
|
1345
1350
|
<div class="ttc" id="aCppUtil_8cpp_html_a809a0913c3e4226ef8fd2df7aaa63d8d"><div class="ttname"><a href="CppUtil_8cpp.html#a809a0913c3e4226ef8fd2df7aaa63d8d">znwm</a></div><div class="ttdeci">const std::string znwm</div><div class="ttdef"><b>Definition:</b> <a href="CppUtil_8cpp_source.html#l00057">CppUtil.cpp:57</a></div></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.865",
|
|
4
4
|
"description": "* <b>[TypeClone](https://github.com/SVF-tools/SVF/wiki/TypeClone) published in our [ECOOP paper](https://yuleisui.github.io/publications/ecoop20.pdf) is now available in SVF </b> * <b>SVF now uses a single script for its build. Just type [`source ./build.sh`](https://github.com/SVF-tools/SVF/blob/master/build.sh) in your terminal, that's it!</b> * <b>SVF now supports LLVM-10.0.0! </b> * <b>We thank [bsauce](https://github.com/bsauce) for writing a user manual of SVF ([link1](https://www.jianshu.com/p/068a08ec749c) and [link2](https://www.jianshu.com/p/777c30d4240e)) in Chinese </b> * <b>SVF now supports LLVM-9.0.0 (Thank [Byoungyoung Lee](https://github.com/SVF-tools/SVF/issues/142) for his help!). </b> * <b>SVF now supports a set of [field-sensitive pointer analyses](https://yuleisui.github.io/publications/sas2019a.pdf). </b> * <b>[Use SVF as an external lib](https://github.com/SVF-tools/SVF/wiki/Using-SVF-as-a-lib-in-your-own-tool) for your own project (Contributed by [Hongxu Chen](https://github.com/HongxuChen)). </b> * <b>SVF now supports LLVM-7.0.0. </b> * <b>SVF now supports Docker. [Try SVF in Docker](https://github.com/SVF-tools/SVF/wiki/Try-SVF-in-Docker)! </b> * <b>SVF now supports [LLVM-6.0.0](https://github.com/svf-tools/SVF/pull/38) (Contributed by [Jack Anthony](https://github.com/jackanth)). </b> * <b>SVF now supports [LLVM-4.0.0](https://github.com/svf-tools/SVF/pull/23) (Contributed by Jared Carlson. Thank [Jared](https://github.com/jcarlson23) and [Will](https://github.com/dtzWill) for their in-depth [discussions](https://github.com/svf-tools/SVF/pull/18) about updating SVF!) </b> * <b>SVF now supports analysis for C++ programs.</b> <br />",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
package/svf-llvm/lib/CppUtil.cpp
CHANGED
|
@@ -779,8 +779,8 @@ Set<std::string> cppUtil::extractClsNamesFromTemplate(const std::string &oname)
|
|
|
779
779
|
|
|
780
780
|
|
|
781
781
|
/*!
|
|
782
|
-
* class sources
|
|
783
|
-
*
|
|
782
|
+
* class sources are functions
|
|
783
|
+
* where we can extract the class name (constructors/destructors or template functions)
|
|
784
784
|
* @param val
|
|
785
785
|
* @return
|
|
786
786
|
*/
|
|
@@ -789,6 +789,8 @@ bool cppUtil::isClsNameSource(const Value *val)
|
|
|
789
789
|
if (const auto *callBase = SVFUtil::dyn_cast<CallBase>(val))
|
|
790
790
|
{
|
|
791
791
|
const Function *foo = callBase->getCalledFunction();
|
|
792
|
+
// indirect call
|
|
793
|
+
if(!foo) return false;
|
|
792
794
|
return isConstructor(foo) || isDestructor(foo) || isTemplateFunc(foo) || isDynCast(foo);
|
|
793
795
|
}
|
|
794
796
|
return false;
|
|
@@ -807,6 +809,7 @@ bool cppUtil::matchesLabel(const std::string &foo, const std::string &label)
|
|
|
807
809
|
|
|
808
810
|
/*!
|
|
809
811
|
* whether foo is a cpp template function
|
|
812
|
+
* TODO: we only consider limited label for now (see the very beginning of CppUtil.cpp)
|
|
810
813
|
* @param foo
|
|
811
814
|
* @return
|
|
812
815
|
*/
|
|
@@ -814,8 +817,11 @@ bool cppUtil::isTemplateFunc(const Function *foo)
|
|
|
814
817
|
{
|
|
815
818
|
assert(foo->hasName() && "foo does not have a name? possible indirect call");
|
|
816
819
|
const std::string &name = foo->getName().str();
|
|
817
|
-
|
|
818
|
-
|
|
820
|
+
bool matchedLabel = matchesLabel(name, znstLabel) || matchesLabel(name, znkstLabel) ||
|
|
821
|
+
matchesLabel(name, znkLabel);
|
|
822
|
+
// we exclude "_ZNK6cArray3dupEv" -> cArray::dup() const
|
|
823
|
+
const std::string &demangledName = llvm::demangle(name);
|
|
824
|
+
return matchedLabel && demangledName.find('<') != std::string::npos && demangledName.find('>') != std::string::npos;
|
|
819
825
|
}
|
|
820
826
|
|
|
821
827
|
/*!
|