svf-tools 1.0.768 → 1.0.770
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-doxygen/html/html/AccessPath_8cpp_source.html +163 -130
- package/SVF-doxygen/html/html/AccessPath_8h_source.html +47 -45
- package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/CommandLine_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +60 -67
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +9 -9
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IntervalValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +19 -19
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1108 -1111
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +2 -0
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +191 -172
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/RelExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +13 -13
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +56 -56
- package/SVF-doxygen/html/html/SVFIR2ConsExeState_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +831 -749
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8h_source.html +138 -127
- package/SVF-doxygen/html/html/SVFIR2Relation_8cpp_source.html +33 -33
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +11 -12
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +11 -11
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +806 -799
- package/SVF-doxygen/html/html/SVFType_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h.html +0 -12
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +300 -333
- package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +52 -62
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +3 -3
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +7 -7
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/VFG_8h_source.html +10 -10
- package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
- package/SVF-doxygen/html/html/cJSON_8cpp.html +3 -2
- package/SVF-doxygen/html/html/cJSON_8cpp_source.html +3 -2
- package/SVF-doxygen/html/html/classOption.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AccessPath-members.html +27 -26
- package/SVF-doxygen/html/html/classSVF_1_1AccessPath.html +179 -124
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +69 -69
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1BranchVFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTOCycle.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +98 -98
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintGraph.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +51 -56
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt-members.html +96 -95
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +55 -20
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +19 -19
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MultiOpndStmt.html +48 -48
- package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PAGBuilderFromFile.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +49 -49
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState-members.html +45 -42
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +962 -780
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +21 -22
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +24 -24
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +51 -61
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +22 -22
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +45 -45
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1VFG.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
- package/SVF-doxygen/html/html/extapi_8c.html +1487 -302
- package/SVF-doxygen/html/html/extapi_8c_source.html +1120 -1164
- package/SVF-doxygen/html/html/functions_a.html +14 -11
- package/SVF-doxygen/html/html/functions_c.html +24 -21
- package/SVF-doxygen/html/html/functions_f.html +3 -3
- package/SVF-doxygen/html/html/functions_func.html +9 -6
- package/SVF-doxygen/html/html/functions_func_c.html +19 -16
- package/SVF-doxygen/html/html/functions_func_g.html +24 -15
- package/SVF-doxygen/html/html/functions_func_h.html +1 -1
- package/SVF-doxygen/html/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/html/functions_func_s.html +2 -2
- package/SVF-doxygen/html/html/functions_g.html +24 -15
- package/SVF-doxygen/html/html/functions_h.html +1 -1
- package/SVF-doxygen/html/html/functions_i.html +3 -3
- package/SVF-doxygen/html/html/functions_l.html +5 -5
- package/SVF-doxygen/html/html/functions_o.html +7 -7
- package/SVF-doxygen/html/html/functions_p.html +12 -12
- package/SVF-doxygen/html/html/functions_r.html +4 -2
- package/SVF-doxygen/html/html/functions_s.html +18 -18
- package/SVF-doxygen/html/html/functions_v.html +6 -6
- package/SVF-doxygen/html/html/functions_w.html +9 -9
- package/SVF-doxygen/html/html/globals.html +20 -2
- package/SVF-doxygen/html/html/globals_a.html +3 -0
- package/SVF-doxygen/html/html/globals_b.html +10 -4
- package/SVF-doxygen/html/html/globals_c.html +8 -4
- package/SVF-doxygen/html/html/globals_d.html +9 -0
- package/SVF-doxygen/html/html/globals_defs.html +3 -0
- package/SVF-doxygen/html/html/globals_func.html +18 -399
- package/SVF-doxygen/html/html/globals_func_a.html +91 -0
- package/SVF-doxygen/html/html/globals_func_b.html +14 -20
- package/SVF-doxygen/html/html/globals_func_c.html +16 -849
- package/SVF-doxygen/html/html/globals_func_d.html +14 -275
- package/SVF-doxygen/html/html/globals_func_e.html +8 -97
- package/SVF-doxygen/html/html/globals_func_f.html +17 -20
- package/SVF-doxygen/html/html/globals_func_g.html +72 -25
- package/SVF-doxygen/html/html/globals_func_h.html +9 -6
- package/SVF-doxygen/html/html/globals_func_i.html +49 -31
- package/SVF-doxygen/html/html/globals_func_j.html +79 -0
- package/SVF-doxygen/html/html/globals_func_l.html +15 -9
- package/SVF-doxygen/html/html/globals_func_m.html +13 -87
- package/SVF-doxygen/html/html/globals_func_n.html +79 -0
- package/SVF-doxygen/html/html/globals_func_p.html +13 -22
- package/SVF-doxygen/html/html/globals_func_r.html +16 -28
- package/SVF-doxygen/html/html/globals_func_s.html +32 -128
- package/SVF-doxygen/html/html/globals_func_t.html +18 -9
- package/SVF-doxygen/html/html/globals_func_u.html +8 -18
- package/SVF-doxygen/html/html/globals_func_w.html +8 -5
- package/SVF-doxygen/html/html/globals_func_z.html +10 -73
- package/SVF-doxygen/html/html/globals_g.html +54 -0
- package/SVF-doxygen/html/html/globals_l.html +6 -0
- package/SVF-doxygen/html/html/globals_n.html +5 -2
- package/SVF-doxygen/html/html/globals_p.html +4 -1
- package/SVF-doxygen/html/html/globals_r.html +11 -8
- package/SVF-doxygen/html/html/globals_s.html +6 -0
- package/SVF-doxygen/html/html/globals_t.html +6 -0
- package/SVF-doxygen/html/html/globals_z.html +3 -0
- package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
- package/SVF-doxygen/html/html/menudata.js +20 -17
- package/SVF-doxygen/html/html/namespaceSVF.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1058 -1014
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +206 -383
- package/SVF-doxygen/html/html/namespacemembers_func_i.html +2 -11
- package/SVF-doxygen/html/html/namespacemembers_func_s.html +3 -0
- package/SVF-doxygen/html/html/namespacemembers_i.html +5 -14
- package/SVF-doxygen/html/html/namespacemembers_s.html +3 -0
- package/SVF-doxygen/html/html/search/all_0.js +158 -152
- package/SVF-doxygen/html/html/search/all_1.js +478 -476
- package/SVF-doxygen/html/html/search/all_10.js +324 -323
- package/SVF-doxygen/html/html/search/all_11.js +213 -212
- package/SVF-doxygen/html/html/search/all_12.js +539 -536
- package/SVF-doxygen/html/html/search/all_13.js +190 -188
- package/SVF-doxygen/html/html/search/all_14.js +66 -66
- package/SVF-doxygen/html/html/search/all_15.js +170 -170
- package/SVF-doxygen/html/html/search/all_16.js +60 -60
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/html/search/all_19.js +11 -10
- package/SVF-doxygen/html/html/search/all_1a.js +169 -169
- package/SVF-doxygen/html/html/search/all_2.js +161 -159
- package/SVF-doxygen/html/html/search/all_3.js +628 -626
- package/SVF-doxygen/html/html/search/all_4.js +229 -226
- package/SVF-doxygen/html/html/search/all_5.js +117 -117
- package/SVF-doxygen/html/html/search/all_6.js +224 -224
- package/SVF-doxygen/html/html/search/all_7.js +1020 -999
- package/SVF-doxygen/html/html/search/all_8.js +191 -191
- package/SVF-doxygen/html/html/search/all_9.js +602 -605
- package/SVF-doxygen/html/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/html/search/all_c.js +116 -114
- package/SVF-doxygen/html/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/html/search/all_e.js +206 -205
- package/SVF-doxygen/html/html/search/all_f.js +116 -116
- package/SVF-doxygen/html/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/html/search/classes_2.js +76 -76
- package/SVF-doxygen/html/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/html/search/classes_4.js +8 -8
- package/SVF-doxygen/html/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/html/search/classes_d.js +18 -18
- package/SVF-doxygen/html/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/html/search/defines_c.js +3 -3
- package/SVF-doxygen/html/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/html/search/defines_e.js +7 -6
- package/SVF-doxygen/html/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/html/search/enums_4.js +3 -3
- package/SVF-doxygen/html/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -36
- package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/html/search/enumvalues_5.js +47 -47
- package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -15
- package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/html/search/files_2.js +49 -49
- package/SVF-doxygen/html/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/html/search/functions_0.js +12 -6
- package/SVF-doxygen/html/html/search/functions_1.js +350 -348
- package/SVF-doxygen/html/html/search/functions_10.js +140 -139
- package/SVF-doxygen/html/html/search/functions_11.js +127 -126
- package/SVF-doxygen/html/html/search/functions_12.js +275 -273
- package/SVF-doxygen/html/html/search/functions_13.js +58 -56
- package/SVF-doxygen/html/html/search/functions_14.js +38 -38
- package/SVF-doxygen/html/html/search/functions_15.js +71 -71
- package/SVF-doxygen/html/html/search/functions_16.js +29 -29
- package/SVF-doxygen/html/html/search/functions_17.js +3 -2
- package/SVF-doxygen/html/html/search/functions_18.js +169 -169
- package/SVF-doxygen/html/html/search/functions_2.js +84 -82
- package/SVF-doxygen/html/html/search/functions_3.js +253 -251
- package/SVF-doxygen/html/html/search/functions_4.js +74 -71
- package/SVF-doxygen/html/html/search/functions_5.js +51 -51
- package/SVF-doxygen/html/html/search/functions_6.js +58 -58
- package/SVF-doxygen/html/html/search/functions_7.js +840 -819
- package/SVF-doxygen/html/html/search/functions_8.js +143 -143
- package/SVF-doxygen/html/html/search/functions_9.js +422 -425
- package/SVF-doxygen/html/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/html/search/functions_c.js +26 -24
- package/SVF-doxygen/html/html/search/functions_d.js +77 -77
- package/SVF-doxygen/html/html/search/functions_e.js +35 -34
- package/SVF-doxygen/html/html/search/functions_f.js +56 -56
- package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/html/search/related_1.js +1 -1
- package/SVF-doxygen/html/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/html/search/related_d.js +11 -11
- package/SVF-doxygen/html/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
- package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
- package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
- package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
- package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
- package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
- package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/html/search/variables_0.js +147 -147
- package/SVF-doxygen/html/html/search/variables_1.js +75 -75
- package/SVF-doxygen/html/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/html/search/variables_12.js +92 -92
- package/SVF-doxygen/html/html/search/variables_13.js +75 -75
- package/SVF-doxygen/html/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +34 -34
- package/SVF-doxygen/html/html/search/variables_3.js +141 -141
- package/SVF-doxygen/html/html/search/variables_4.js +55 -55
- package/SVF-doxygen/html/html/search/variables_5.js +38 -38
- package/SVF-doxygen/html/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/html/search/variables_9.js +77 -77
- package/SVF-doxygen/html/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/html/search/variables_f.js +30 -30
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable_3_01T_00_01void__t_3_01decltype_07std_1_1begin_07std_1_1dec794949348c8e1e00603fd8633b6dd1f3.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1unordered__map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1deque_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1list_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1vector_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1unordered__set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1make__void.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +8 -8
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +1 -1
- package/package.json +1 -1
- package/svf/include/AbstractExecution/SVFIR2ItvExeState.h +14 -0
- package/svf/include/MemoryModel/AccessPath.h +6 -0
- package/svf/include/SVFIR/SVFStatements.h +10 -0
- package/svf/include/Util/SVFUtil.h +0 -34
- package/svf/lib/AbstractExecution/SVFIR2ItvExeState.cpp +154 -75
- package/svf/lib/MemoryModel/AccessPath.cpp +39 -0
- package/svf/lib/Util/ExtAPI.cpp +0 -6
- package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +19 -2
- package/svf-llvm/lib/LLVMUtil.cpp +0 -2
- package/svf-llvm/lib/SVFIRExtAPI.cpp +1 -1
- package/svf-llvm/lib/SymbolTableBuilder.cpp +0 -9
- package/svf-llvm/lib/extapi.c +210 -295
|
@@ -89,7 +89,7 @@ struct SVF::SVFUtil::make_void< Ts ></h3>
|
|
|
89
89
|
|
|
90
90
|
<p>void_t is not available until C++17. We define it here for C++11/14. </p>
|
|
91
91
|
|
|
92
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
92
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00627">627</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
93
93
|
</div><h2 class="groupheader">Member Typedef Documentation</h2>
|
|
94
94
|
<a id="ac2eb79d0fe9a0f94eb1992600ba91e36"></a>
|
|
95
95
|
<h2 class="memtitle"><span class="permalink"><a href="#ac2eb79d0fe9a0f94eb1992600ba91e36">◆ </a></span>type</h2>
|
|
@@ -105,7 +105,7 @@ template<typename... Ts> </div>
|
|
|
105
105
|
</table>
|
|
106
106
|
</div><div class="memdoc">
|
|
107
107
|
|
|
108
|
-
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#
|
|
108
|
+
<p class="definition">Definition at line <a class="el" href="SVFUtil_8h_source.html#l00629">629</a> of file <a class="el" href="SVFUtil_8h_source.html">SVFUtil.h</a>.</p>
|
|
109
109
|
|
|
110
110
|
</div>
|
|
111
111
|
</div>
|
|
@@ -82,7 +82,7 @@ Public Member Functions</h2></td></tr>
|
|
|
82
82
|
</table>
|
|
83
83
|
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
|
|
84
84
|
<div class="textblock">
|
|
85
|
-
<p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#
|
|
85
|
+
<p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00153">153</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
|
|
86
86
|
</div><h2 class="groupheader">Member Function Documentation</h2>
|
|
87
87
|
<a id="a16b0806f551270a0078f71796a37f07f"></a>
|
|
88
88
|
<h2 class="memtitle"><span class="permalink"><a href="#a16b0806f551270a0078f71796a37f07f">◆ </a></span>operator()()</h2>
|
|
@@ -108,13 +108,13 @@ Public Member Functions</h2></td></tr>
|
|
|
108
108
|
</table>
|
|
109
109
|
</div><div class="memdoc">
|
|
110
110
|
|
|
111
|
-
<p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#
|
|
112
|
-
<div class="fragment"><div class="line"><a name="
|
|
113
|
-
<div class="line"><a name="
|
|
114
|
-
<div class="line"><a name="
|
|
115
|
-
<div class="line"><a name="
|
|
116
|
-
<div class="line"><a name="
|
|
117
|
-
<div class="line"><a name="
|
|
111
|
+
<p class="definition">Definition at line <a class="el" href="AccessPath_8h_source.html#l00155">155</a> of file <a class="el" href="AccessPath_8h_source.html">AccessPath.h</a>.</p>
|
|
112
|
+
<div class="fragment"><div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  {</div>
|
|
113
|
+
<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <a class="code" href="structSVF_1_1Hash.html">SVF::Hash<std::pair<SVF::NodeID, SVF::NodeID></a>> h;</div>
|
|
114
|
+
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  std::hash<SVF::AccessPath::OffsetVarAndGepTypePairs> v;</div>
|
|
115
|
+
<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">return</span> h(std::make_pair(ap.<a class="code" href="classSVF_1_1AccessPath.html#a68e49bb797a84ea035ea338549f2e054">getConstantFieldIdx</a>(),</div>
|
|
116
|
+
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  v(ap.<a class="code" href="classSVF_1_1AccessPath.html#ab0641554924d44f16c2831cac63ccf8b">getOffsetVarAndGepTypePairVec</a>())));</div>
|
|
117
|
+
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  }</div>
|
|
118
118
|
</div><!-- fragment -->
|
|
119
119
|
</div>
|
|
120
120
|
</div>
|
|
@@ -418,7 +418,7 @@ Functions</h2></td></tr>
|
|
|
418
418
|
<div class="ttc" id="aclassSVF_1_1SVFIR_html_abda052b73e869ed6d7c139ad1528da11"><div class="ttname"><a href="classSVF_1_1SVFIR.html#abda052b73e869ed6d7c139ad1528da11">SVF::SVFIR::getICFG</a></div><div class="ttdeci">ICFG * getICFG() const</div><div class="ttdef"><b>Definition:</b> <a href="SVFIR_8h_source.html#l00169">SVFIR.h:169</a></div></div>
|
|
419
419
|
<div class="ttc" id="aclassSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
|
|
420
420
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00040">SVFModule.h:40</a></div></div>
|
|
421
|
-
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
421
|
+
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01157">LLVMUtil.cpp:1157</a></div></div>
|
|
422
422
|
<div class="ttc" id="aclassSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
|
|
423
423
|
<div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
|
|
424
424
|
<div class="ttc" id="aclassSVF_1_1PointsTo_html_ad5b582d2672617806c61e6170d0b5a7e"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</a></div></div>
|
|
@@ -283,7 +283,7 @@ $(function() {
|
|
|
283
283
|
<div class="ttc" id="asvf-ex_8cpp_html_ad2f24f5ef6a8eaf0e4a77a8a4d31bc9f"><div class="ttname"><a href="svf-ex_8cpp.html#ad2f24f5ef6a8eaf0e4a77a8a4d31bc9f">aliasQuery</a></div><div class="ttdeci">SVF::AliasResult aliasQuery(PointerAnalysis *pta, SVFValue *v1, SVFValue *v2)</div><div class="ttdef"><b>Definition:</b> <a href="svf-ex_8cpp_source.html#l00042">svf-ex.cpp:42</a></div></div>
|
|
284
284
|
<div class="ttc" id="aclassSVF_1_1PTACallGraph_html"><div class="ttname"><a href="classSVF_1_1PTACallGraph.html">SVF::PTACallGraph</a></div><div class="ttdef"><b>Definition:</b> <a href="PTACallGraph_8h_source.html#l00218">PTACallGraph.h:218</a></div></div>
|
|
285
285
|
<div class="ttc" id="aclassSVF_1_1SVFModule_html"><div class="ttname"><a href="classSVF_1_1SVFModule.html">SVF::SVFModule</a></div><div class="ttdef"><b>Definition:</b> <a href="SVFModule_8h_source.html#l00040">SVFModule.h:40</a></div></div>
|
|
286
|
-
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#
|
|
286
|
+
<div class="ttc" id="aclassSVF_1_1SVFValue_html_a4a0cfe3a8f37d33ffcdca3d66026dcc3"><div class="ttname"><a href="classSVF_1_1SVFValue.html#a4a0cfe3a8f37d33ffcdca3d66026dcc3">SVF::SVFValue::toString</a></div><div class="ttdeci">std::string toString() const</div><div class="ttdoc">Needs to be implemented by a SVF front end.</div><div class="ttdef"><b>Definition:</b> <a href="LLVMUtil_8cpp_source.html#l01157">LLVMUtil.cpp:1157</a></div></div>
|
|
287
287
|
<div class="ttc" id="aclassSVF_1_1VFGNode_html_a3c558955f60c237c558d8faafed781e8"><div class="ttname"><a href="classSVF_1_1VFGNode.html#a3c558955f60c237c558d8faafed781e8">SVF::VFGNode::const_iterator</a></div><div class="ttdeci">VFGEdge::VFGEdgeSetTy::const_iterator const_iterator</div><div class="ttdef"><b>Definition:</b> <a href="VFGNode_8h_source.html#l00060">VFGNode.h:60</a></div></div>
|
|
288
288
|
<div class="ttc" id="aclassSVF_1_1ICFG_html"><div class="ttname"><a href="classSVF_1_1ICFG.html">SVF::ICFG</a></div><div class="ttdef"><b>Definition:</b> <a href="ICFG_8h_source.html#l00047">ICFG.h:47</a></div></div>
|
|
289
289
|
<div class="ttc" id="aclassSVF_1_1PointsTo_html_ad5b582d2672617806c61e6170d0b5a7e"><div class="ttname"><a href="classSVF_1_1PointsTo.html#ad5b582d2672617806c61e6170d0b5a7e">SVF::PointsTo::begin</a></div><div class="ttdeci">const_iterator begin() const</div><div class="ttdef"><b>Definition:</b> <a href="PointsTo_8h_source.html#l00128">PointsTo.h:128</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.770",
|
|
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": {
|
|
@@ -73,9 +73,23 @@ public:
|
|
|
73
73
|
/// Return the field address given a pointer points to a struct object and an offset
|
|
74
74
|
VAddrs getGepObjAddress(u32_t pointer, s32_t offset);
|
|
75
75
|
|
|
76
|
+
/// Return the byte offset from one gep param offset
|
|
77
|
+
std::pair<s32_t, s32_t> getBytefromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep, s32_t elem_bytesize);
|
|
78
|
+
|
|
79
|
+
/// Return the Index offset from one gep param offset
|
|
80
|
+
std::pair<s32_t, s32_t> getIndexfromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep);
|
|
81
|
+
|
|
82
|
+
/// Return the byte offset expression of a GepStmt
|
|
83
|
+
/// elemBytesize is the element byte size of an static alloc or heap alloc array
|
|
84
|
+
/// e.g. GepStmt* gep = **,
|
|
85
|
+
/// s32_t elemBytesize = LLVMUtil::SVFType2ByteSize(gep->getRHSVar()->getValue()->getType());
|
|
86
|
+
/// std::pair<s32_t, s32_t> byteOffset = getGepByteOffset(gep, elemBytesize);
|
|
87
|
+
std::pair<s32_t, s32_t> getGepByteOffset(const GepStmt *gep, s32_t elemBytesize);
|
|
88
|
+
|
|
76
89
|
/// Return the offset expression of a GepStmt
|
|
77
90
|
std::pair<s32_t, s32_t> getGepOffset(const GepStmt *gep);
|
|
78
91
|
|
|
92
|
+
|
|
79
93
|
static z3::context &getContext()
|
|
80
94
|
{
|
|
81
95
|
return Z3Expr::getContext();
|
|
@@ -109,6 +109,12 @@ public:
|
|
|
109
109
|
}
|
|
110
110
|
//@}
|
|
111
111
|
|
|
112
|
+
/// Return accumulated constant byte offset given OffsetVarVec and elemByteSize
|
|
113
|
+
/// elemBytesize is the element byte size of an static alloc or heap alloc array
|
|
114
|
+
/// e.g. GepStmt* gep = **,
|
|
115
|
+
/// s32_t elemBytesize = LLVMUtil::SVFType2ByteSize(gep->getRHSVar()->getValue()->getType());
|
|
116
|
+
/// APOffset byteOffset = gep->accumulateConstantByteOffset(elemBytesize);
|
|
117
|
+
APOffset computeConstantByteOffset(u32_t elemBytesize) const;
|
|
112
118
|
/// Return accumulated constant offset given OffsetVarVec
|
|
113
119
|
APOffset computeConstantOffset() const;
|
|
114
120
|
|
|
@@ -500,6 +500,16 @@ public:
|
|
|
500
500
|
{
|
|
501
501
|
return getAccessPath().isConstantOffset();
|
|
502
502
|
}
|
|
503
|
+
/// Return accumulated constant offset (when accessing array or struct) if this offset is a constant.
|
|
504
|
+
/// elemBytesize is the element byte size of an static alloc or heap alloc array
|
|
505
|
+
/// e.g. GepStmt* gep = **,
|
|
506
|
+
/// s32_t elemBytesize = LLVMUtil::SVFType2ByteSize(gep->getRHSVar()->getValue()->getType());
|
|
507
|
+
/// APOffset byteOffset = gep->accumulateConstantByteOffset(elemBytesize);
|
|
508
|
+
inline APOffset accumulateConstantByteOffset(u32_t elemBytesize) const
|
|
509
|
+
{
|
|
510
|
+
return getAccessPath().computeConstantByteOffset(elemBytesize);
|
|
511
|
+
}
|
|
512
|
+
|
|
503
513
|
/// Return accumulated constant offset (when accessing array or struct) if this offset is a constant.
|
|
504
514
|
inline APOffset accumulateConstantOffset() const
|
|
505
515
|
{
|
|
@@ -350,14 +350,6 @@ inline bool isReallocExtFun(const SVFFunction* fun)
|
|
|
350
350
|
return fun && (ExtAPI::getExtAPI()->is_realloc(fun));
|
|
351
351
|
}
|
|
352
352
|
|
|
353
|
-
/// Return true if the call is a static global call
|
|
354
|
-
//@{
|
|
355
|
-
/// note that this function is not suppose to be used externally
|
|
356
|
-
inline bool isStaticExtFun(const SVFFunction* fun)
|
|
357
|
-
{
|
|
358
|
-
return fun && ExtAPI::getExtAPI()->has_static(fun);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
353
|
/// Program entry function e.g. main
|
|
362
354
|
//@{
|
|
363
355
|
/// Return true if this is a program entry function (e.g. main)
|
|
@@ -494,32 +486,6 @@ inline bool isReallocExtCall(const SVFInstruction *inst)
|
|
|
494
486
|
}
|
|
495
487
|
//@}
|
|
496
488
|
|
|
497
|
-
inline bool isStaticExtCall(const CallSite cs)
|
|
498
|
-
{
|
|
499
|
-
bool isPtrTy = cs.getInstruction()->getType()->isPointerTy();
|
|
500
|
-
return isPtrTy && isStaticExtFun(getCallee(cs));
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
inline bool isStaticExtCall(const SVFInstruction *inst)
|
|
504
|
-
{
|
|
505
|
-
bool isPtrTy = inst->getType()->isPointerTy();
|
|
506
|
-
return isPtrTy && isStaticExtFun(getCallee(inst));
|
|
507
|
-
}
|
|
508
|
-
//@}
|
|
509
|
-
|
|
510
|
-
/// Return true if the call is a static global call
|
|
511
|
-
//@{
|
|
512
|
-
inline bool isHeapAllocOrStaticExtCall(const CallSite cs)
|
|
513
|
-
{
|
|
514
|
-
return isStaticExtCall(cs) || isHeapAllocExtCall(cs);
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
inline bool isHeapAllocOrStaticExtCall(const SVFInstruction *inst)
|
|
518
|
-
{
|
|
519
|
-
return isStaticExtCall(inst) || isHeapAllocExtCall(inst);
|
|
520
|
-
}
|
|
521
|
-
//@}
|
|
522
|
-
|
|
523
489
|
/// Return true if this is a thread creation call
|
|
524
490
|
///@{
|
|
525
491
|
inline bool isThreadForkCall(const CallSite cs)
|
|
@@ -173,108 +173,187 @@ SVFIR2ItvExeState::VAddrs SVFIR2ItvExeState::getGepObjAddress(u32_t pointer, s32
|
|
|
173
173
|
return ret;
|
|
174
174
|
}
|
|
175
175
|
|
|
176
|
-
std::pair<s32_t, s32_t> SVFIR2ItvExeState::
|
|
176
|
+
std::pair<s32_t, s32_t> SVFIR2ItvExeState::getBytefromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep, s32_t elemBytesize)
|
|
177
177
|
{
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
s32_t
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
178
|
+
const SVFValue *value = gep_pair.first->getValue();
|
|
179
|
+
const SVFType *type = gep_pair.second;
|
|
180
|
+
const SVFConstantInt *op = SVFUtil::dyn_cast<SVFConstantInt>(value);
|
|
181
|
+
s32_t offsetLb = 0;
|
|
182
|
+
s32_t offsetUb = 0;
|
|
183
|
+
/// set largest byte offset is 0xFFFFFF in case of int32 overflow
|
|
184
|
+
s32_t maxFieldLimit = 0xFFFFFF;
|
|
185
|
+
/// offset is constant but stored in variable
|
|
186
|
+
if (op)
|
|
187
|
+
{
|
|
188
|
+
offsetLb = offsetUb = op->getSExtValue() >
|
|
189
|
+
maxFieldLimit? maxFieldLimit: op->getSExtValue();
|
|
190
|
+
}
|
|
191
|
+
else
|
|
188
192
|
{
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (op)
|
|
193
|
+
u32_t idx = _svfir->getValueNode(value);
|
|
194
|
+
IntervalValue &idxVal = _es[idx];
|
|
195
|
+
if (idxVal.isBottom() || idxVal.isTop())
|
|
196
|
+
return std::make_pair(0, maxFieldLimit);
|
|
197
|
+
// if idxVal is a concrete value
|
|
198
|
+
if (idxVal.is_numeral())
|
|
196
199
|
{
|
|
197
|
-
offsetLb = offsetUb =
|
|
200
|
+
offsetLb = offsetUb = idxVal.lb().getNumeral()>
|
|
201
|
+
maxFieldLimit? maxFieldLimit: idxVal.lb().getNumeral();
|
|
198
202
|
}
|
|
199
|
-
/// offset is variable, the concrete value isn't sure util runtime, and maybe not a concrete value.
|
|
200
|
-
/// e.g.
|
|
201
203
|
else
|
|
202
204
|
{
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
IntervalValue &idxVal = _es[idx];
|
|
206
|
-
if (idxVal.isBottom() || idxVal.isTop()) return std::make_pair(0, (s32_t)Options::MaxFieldLimit());
|
|
207
|
-
// if idxVal is a concrete value
|
|
208
|
-
if (idxVal.is_numeral())
|
|
209
|
-
{
|
|
210
|
-
offsetLb = offsetUb = idxVal.lb().getNumeral();
|
|
211
|
-
}
|
|
212
|
-
else
|
|
213
|
-
{
|
|
214
|
-
// if inxVal is an interval. we should make sure that idxVal.lb>0 && idxVal.ub<MaxFieldLimit
|
|
215
|
-
offsetLb = idxVal.lb().getNumeral() < 0 ? 0 : idxVal.lb().getNumeral();
|
|
216
|
-
offsetLb = idxVal.lb().getNumeral() > maxFieldLimit ? maxFieldLimit : offsetLb;
|
|
217
|
-
offsetUb = idxVal.ub().getNumeral() < 0 ? 0 : idxVal.ub().getNumeral();
|
|
218
|
-
offsetUb = idxVal.ub().getNumeral() > maxFieldLimit ? maxFieldLimit : offsetUb;
|
|
219
|
-
}
|
|
205
|
+
offsetLb = idxVal.lb().getNumeral()> maxFieldLimit? maxFieldLimit:idxVal.lb().getNumeral() * elemBytesize ;
|
|
206
|
+
offsetUb = idxVal.ub().getNumeral() > maxFieldLimit? maxFieldLimit:idxVal.ub().getNumeral() * elemBytesize;
|
|
220
207
|
}
|
|
221
|
-
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (type)
|
|
211
|
+
{
|
|
212
|
+
if (const SVFPointerType *pty = SVFUtil::dyn_cast<SVFPointerType>(type))
|
|
222
213
|
{
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
214
|
+
offsetLb = offsetLb * gep->getAccessPath().getElementNum(pty->getPtrElementType())* elemBytesize;
|
|
215
|
+
offsetUb = offsetUb * gep->getAccessPath().getElementNum(pty->getPtrElementType())* elemBytesize;
|
|
216
|
+
}
|
|
217
|
+
else
|
|
218
|
+
{
|
|
219
|
+
offsetLb = offsetLb * elemBytesize;
|
|
220
|
+
offsetUb = offsetUb * elemBytesize;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return {offsetLb, offsetUb};
|
|
224
|
+
}
|
|
231
225
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
226
|
+
|
|
227
|
+
std::pair<s32_t, s32_t> SVFIR2ItvExeState::getIndexfromGepTypePair(const AccessPath::VarAndGepTypePair& gep_pair, const GepStmt *gep)
|
|
228
|
+
{
|
|
229
|
+
const SVFValue *value = gep_pair.first->getValue();
|
|
230
|
+
const SVFType *type = gep_pair.second;
|
|
231
|
+
const SVFConstantInt *op = SVFUtil::dyn_cast<SVFConstantInt>(value);
|
|
232
|
+
s32_t offsetLb = 0;
|
|
233
|
+
s32_t offsetUb = 0;
|
|
234
|
+
s32_t maxFieldLimit = (s32_t)Options::MaxFieldLimit();
|
|
235
|
+
/// offset is constant but stored in variable
|
|
236
|
+
if (op)
|
|
237
|
+
{
|
|
238
|
+
offsetLb = offsetUb = op->getSExtValue() >
|
|
239
|
+
maxFieldLimit? maxFieldLimit: op->getSExtValue();
|
|
240
|
+
}
|
|
241
|
+
else
|
|
242
|
+
{
|
|
243
|
+
u32_t idx = _svfir->getValueNode(value);
|
|
244
|
+
//if (!inVarToIValTable(idx)) return std::make_pair(-1, -1);
|
|
245
|
+
IntervalValue &idxVal = _es[idx];
|
|
246
|
+
if (idxVal.isBottom() || idxVal.isTop())
|
|
247
|
+
return std::make_pair(0, (s32_t)Options::MaxFieldLimit());
|
|
248
|
+
// if idxVal is a concrete value
|
|
249
|
+
if (idxVal.is_numeral())
|
|
250
|
+
{
|
|
251
|
+
offsetLb = offsetUb = idxVal.lb().getNumeral()>
|
|
252
|
+
maxFieldLimit? maxFieldLimit: idxVal.lb().getNumeral();
|
|
253
|
+
}
|
|
254
|
+
else
|
|
255
|
+
{
|
|
256
|
+
offsetLb = idxVal.lb().getNumeral() < 0
|
|
257
|
+
? 0
|
|
258
|
+
: idxVal.lb().getNumeral();
|
|
259
|
+
offsetLb = idxVal.lb().getNumeral() > maxFieldLimit
|
|
260
|
+
? maxFieldLimit
|
|
261
|
+
: offsetLb;
|
|
262
|
+
offsetUb = idxVal.ub().getNumeral() < 0
|
|
263
|
+
? 0
|
|
264
|
+
: idxVal.ub().getNumeral();
|
|
265
|
+
offsetUb = idxVal.ub().getNumeral() > maxFieldLimit
|
|
266
|
+
? maxFieldLimit
|
|
267
|
+
: offsetUb;
|
|
241
268
|
}
|
|
269
|
+
}
|
|
242
270
|
|
|
271
|
+
if (type)
|
|
272
|
+
{
|
|
243
273
|
if (const SVFPointerType *pty = SVFUtil::dyn_cast<SVFPointerType>(type))
|
|
244
274
|
{
|
|
245
275
|
offsetLb = offsetLb * gep->getAccessPath().getElementNum(pty->getPtrElementType());
|
|
246
276
|
offsetUb = offsetUb * gep->getAccessPath().getElementNum(pty->getPtrElementType());
|
|
247
|
-
|
|
248
277
|
}
|
|
249
278
|
else
|
|
250
279
|
{
|
|
251
|
-
const std::vector<u32_t
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
280
|
+
const std::vector<u32_t>& so = SymbolTableInfo::SymbolInfo()
|
|
281
|
+
->getTypeInfo(type)
|
|
282
|
+
->getFlattenedElemIdxVec();
|
|
283
|
+
if (so.empty() || (u32_t)offsetUb >= so.size() ||
|
|
284
|
+
(u32_t)offsetLb >= so.size())
|
|
285
|
+
{
|
|
286
|
+
offsetLb = 0;
|
|
287
|
+
offsetUb = maxFieldLimit;
|
|
288
|
+
}
|
|
289
|
+
else
|
|
290
|
+
{
|
|
291
|
+
offsetLb =
|
|
292
|
+
SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(
|
|
293
|
+
type, offsetLb);
|
|
294
|
+
offsetUb =
|
|
295
|
+
SymbolTableInfo::SymbolInfo()->getFlattenedElemIdx(
|
|
296
|
+
type, offsetUb);
|
|
297
|
+
}
|
|
256
298
|
}
|
|
299
|
+
}
|
|
300
|
+
return {offsetLb, offsetUb};
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
std::pair<s32_t, s32_t> SVFIR2ItvExeState::getGepByteOffset(const GepStmt *gep, s32_t elemBytesize)
|
|
305
|
+
{
|
|
306
|
+
/// for instant constant index, e.g. gep arr, 1
|
|
307
|
+
if (gep->getOffsetVarAndGepTypePairVec().empty())
|
|
308
|
+
return std::make_pair(gep->getConstantFieldIdx(), gep->getConstantFieldIdx());
|
|
309
|
+
s32_t totalOffsetLb = 0;
|
|
310
|
+
s32_t totalOffsetUb = 0;
|
|
311
|
+
/// default value of MaxFieldLimit is 512
|
|
312
|
+
u32_t maxFieldLimit = 0xFFFFFF;
|
|
313
|
+
for (int i = gep->getOffsetVarAndGepTypePairVec().size() - 1; i >= 0; i--)
|
|
314
|
+
{
|
|
315
|
+
std::pair<s32_t, s32_t> offsetIdx = getBytefromGepTypePair(
|
|
316
|
+
gep->getOffsetVarAndGepTypePairVec()[i], gep, elemBytesize);
|
|
317
|
+
s32_t offsetLb = offsetIdx.first;
|
|
318
|
+
s32_t offsetUb = offsetIdx.second;
|
|
257
319
|
if ((long long) (totalOffsetLb + offsetLb) > maxFieldLimit)
|
|
258
|
-
{
|
|
259
320
|
totalOffsetLb = maxFieldLimit;
|
|
260
|
-
}
|
|
261
321
|
else
|
|
262
|
-
{
|
|
263
322
|
totalOffsetLb += offsetLb;
|
|
264
|
-
}
|
|
265
323
|
if ((long long) (totalOffsetUb + offsetUb) > maxFieldLimit)
|
|
266
|
-
{
|
|
267
324
|
totalOffsetUb = maxFieldLimit;
|
|
268
|
-
}
|
|
269
325
|
else
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
326
|
+
totalOffsetUb += offsetUb ;
|
|
327
|
+
}
|
|
328
|
+
return {totalOffsetLb, totalOffsetUb};
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
std::pair<s32_t, s32_t> SVFIR2ItvExeState::getGepOffset(const GepStmt *gep)
|
|
333
|
+
{
|
|
334
|
+
/// for instant constant index, e.g. gep arr, 1
|
|
335
|
+
if (gep->getOffsetVarAndGepTypePairVec().empty())
|
|
336
|
+
return std::make_pair(gep->getConstantFieldIdx(), gep->getConstantFieldIdx());
|
|
337
|
+
s32_t totalOffsetLb = 0;
|
|
338
|
+
s32_t totalOffsetUb = 0;
|
|
339
|
+
/// default value of MaxFieldLimit is 512
|
|
340
|
+
u32_t maxFieldLimit = Options::MaxFieldLimit() - 1;
|
|
341
|
+
for (int i = gep->getOffsetVarAndGepTypePairVec().size() - 1; i >= 0; i--)
|
|
342
|
+
{
|
|
343
|
+
std::pair<s32_t, s32_t> offsetIdx = getIndexfromGepTypePair(
|
|
344
|
+
gep->getOffsetVarAndGepTypePairVec()[i], gep);
|
|
345
|
+
s32_t offsetLb = offsetIdx.first;
|
|
346
|
+
s32_t offsetUb = offsetIdx.second;
|
|
347
|
+
if ((long long) (totalOffsetLb + offsetLb) > maxFieldLimit)
|
|
348
|
+
totalOffsetLb = maxFieldLimit;
|
|
349
|
+
else
|
|
350
|
+
totalOffsetLb += offsetLb;
|
|
351
|
+
if ((long long) (totalOffsetUb + offsetUb) > maxFieldLimit)
|
|
352
|
+
totalOffsetUb = maxFieldLimit;
|
|
353
|
+
else
|
|
354
|
+
totalOffsetUb += offsetUb ;
|
|
273
355
|
}
|
|
274
|
-
|
|
275
|
-
offSetPair.first = totalOffsetLb;
|
|
276
|
-
offSetPair.second = totalOffsetUb;
|
|
277
|
-
return offSetPair;
|
|
356
|
+
return {totalOffsetLb, totalOffsetUb};
|
|
278
357
|
}
|
|
279
358
|
|
|
280
359
|
/*!
|
|
@@ -87,6 +87,45 @@ u32_t AccessPath::getElementNum(const SVFType* type) const
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
/// Return accumulated constant offset
|
|
91
|
+
///
|
|
92
|
+
/// "value" is the offset variable (must be a constant)
|
|
93
|
+
/// "type" is the location where we want to compute offset
|
|
94
|
+
/// Given a vector and elem byte size: [(value1,type1), (value2,type2), (value3,type3)], bytesize
|
|
95
|
+
/// totalConstByteOffset = ByteOffset(value1,type1) * ByteOffset(value2,type2) + ByteOffset(value3,type3)
|
|
96
|
+
/// For a pointer type (e.g., t1 is PointerType), we will retrieve the pointee type and times the offset, i.e., getElementNum(t1) X off1
|
|
97
|
+
APOffset AccessPath::computeConstantByteOffset(u32_t elemBytesize) const
|
|
98
|
+
{
|
|
99
|
+
assert(isConstantOffset() && "not a constant offset");
|
|
100
|
+
|
|
101
|
+
if(offsetVarAndGepTypePairs.empty())
|
|
102
|
+
return getConstantFieldIdx() * elemBytesize;
|
|
103
|
+
|
|
104
|
+
APOffset totalConstOffset = 0;
|
|
105
|
+
for(int i = offsetVarAndGepTypePairs.size() - 1; i >= 0; i--)
|
|
106
|
+
{
|
|
107
|
+
const SVFValue* value = offsetVarAndGepTypePairs[i].first->getValue();
|
|
108
|
+
const SVFType* type = offsetVarAndGepTypePairs[i].second;
|
|
109
|
+
const SVFConstantInt* op = SVFUtil::dyn_cast<SVFConstantInt>(value);
|
|
110
|
+
assert(op && "not a constant offset?");
|
|
111
|
+
if(type==nullptr)
|
|
112
|
+
{
|
|
113
|
+
totalConstOffset += op->getSExtValue() * elemBytesize;
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if(const SVFPointerType* pty = SVFUtil::dyn_cast<SVFPointerType>(type))
|
|
118
|
+
totalConstOffset += op->getSExtValue() * getElementNum(pty->getPtrElementType()) * elemBytesize;
|
|
119
|
+
else
|
|
120
|
+
{
|
|
121
|
+
APOffset offset = op->getSExtValue();
|
|
122
|
+
// if getByteOffset is false, it will retrieve flatten idx
|
|
123
|
+
totalConstOffset += offset * elemBytesize;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return totalConstOffset;
|
|
127
|
+
}
|
|
128
|
+
|
|
90
129
|
/// Return accumulated constant offset
|
|
91
130
|
///
|
|
92
131
|
/// "value" is the offset variable (must be a constant)
|
package/svf/lib/Util/ExtAPI.cpp
CHANGED
|
@@ -144,12 +144,6 @@ bool ExtAPI::hasExtFuncAnnotation(const SVFFunction* fun, const std::string& fun
|
|
|
144
144
|
return false;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
// Does (F) have a static var X (unavailable to us) that its return points to?
|
|
148
|
-
bool ExtAPI::has_static(const SVFFunction* F)
|
|
149
|
-
{
|
|
150
|
-
return F && hasExtFuncAnnotation(F, "STATIC");
|
|
151
|
-
}
|
|
152
|
-
|
|
153
147
|
bool ExtAPI::is_memcpy(const SVFFunction *F)
|
|
154
148
|
{
|
|
155
149
|
return F && hasExtFuncAnnotation(F, "MEMCPY");
|
|
@@ -141,10 +141,10 @@ inline const PointerType *getRefTypeOfHeapAllocOrStatic(const CallBase* cs)
|
|
|
141
141
|
if (const PointerType *argType = SVFUtil::dyn_cast<PointerType>(arg->getType()))
|
|
142
142
|
refType = SVFUtil::dyn_cast<PointerType>(getPtrElementType(argType));
|
|
143
143
|
}
|
|
144
|
-
// Case 2: heap
|
|
144
|
+
// Case 2: heap object held by return value.
|
|
145
145
|
else
|
|
146
146
|
{
|
|
147
|
-
assert(
|
|
147
|
+
assert(SVFUtil::isHeapAllocExtCallViaRet(svfcs)
|
|
148
148
|
&& "Must be heap alloc via ret, or static allocation site");
|
|
149
149
|
refType = SVFUtil::dyn_cast<PointerType>(cs->getType());
|
|
150
150
|
}
|
|
@@ -377,6 +377,23 @@ std::vector<const Function *> getCalledFunctions(const Function *F);
|
|
|
377
377
|
std::vector<std::string> getFunAnnotations(const Function* fun);
|
|
378
378
|
void removeFunAnnotations(std::vector<Function*>& removedFuncList);
|
|
379
379
|
|
|
380
|
+
inline u32_t SVFType2ByteSize(const SVFType* type)
|
|
381
|
+
{
|
|
382
|
+
const llvm::Type* llvm_rhs = LLVMModuleSet::getLLVMModuleSet()->getLLVMType(type);
|
|
383
|
+
u32_t llvm_rhs_size = LLVMUtil::getTypeSizeInBytes(llvm_rhs->getPointerElementType());
|
|
384
|
+
u32_t llvm_elem_size = -1;
|
|
385
|
+
if (llvm_rhs->getPointerElementType()->isArrayTy() && llvm_rhs_size > 0)
|
|
386
|
+
{
|
|
387
|
+
size_t array_len = llvm_rhs->getPointerElementType()->getArrayNumElements();
|
|
388
|
+
llvm_elem_size = llvm_rhs_size / array_len;
|
|
389
|
+
}
|
|
390
|
+
else
|
|
391
|
+
{
|
|
392
|
+
llvm_elem_size =llvm_rhs_size;
|
|
393
|
+
}
|
|
394
|
+
return llvm_elem_size;
|
|
395
|
+
}
|
|
396
|
+
|
|
380
397
|
inline void removeUnusedFuncsAndAnnotations(std::vector<Function*> removedFuncList)
|
|
381
398
|
{
|
|
382
399
|
/// Remove unused function annotations in extapi.bc
|
|
@@ -53,8 +53,6 @@ const std::string structName = "struct.";
|
|
|
53
53
|
*/
|
|
54
54
|
bool LLVMUtil::isObject(const Value* ref)
|
|
55
55
|
{
|
|
56
|
-
if (SVFUtil::isa<Instruction>(ref) && SVFUtil::isStaticExtCall(LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(SVFUtil::cast<Instruction>(ref))) )
|
|
57
|
-
return true;
|
|
58
56
|
if (SVFUtil::isa<Instruction>(ref) && SVFUtil::isHeapAllocExtCallViaRet(LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(SVFUtil::cast<Instruction>(ref))))
|
|
59
57
|
return true;
|
|
60
58
|
if (SVFUtil::isa<GlobalVariable>(ref))
|
|
@@ -128,7 +128,7 @@ void SVFIRBuilder::handleExtCall(const CallBase* cs, const SVFFunction* svfCalle
|
|
|
128
128
|
const SVFInstruction* svfInst = LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(cs);
|
|
129
129
|
const SVFCallInst* svfCall = SVFUtil::cast<SVFCallInst>(svfInst);
|
|
130
130
|
|
|
131
|
-
if (isHeapAllocExtCallViaRet(svfCall)
|
|
131
|
+
if (isHeapAllocExtCallViaRet(svfCall))
|
|
132
132
|
{
|
|
133
133
|
NodeID val = pag->getValueNode(svfInst);
|
|
134
134
|
NodeID obj = pag->getObjectNode(svfInst);
|
|
@@ -750,15 +750,6 @@ void SymbolTableBuilder::initTypeInfo(ObjTypeInfo* typeinfo, const Value* val,
|
|
|
750
750
|
// Heap object, label its field as infinite here
|
|
751
751
|
objSize = typeinfo->getMaxFieldOffsetLimit();
|
|
752
752
|
}
|
|
753
|
-
else if (SVFUtil::isa<Instruction>(val) &&
|
|
754
|
-
isStaticExtCall(
|
|
755
|
-
LLVMModuleSet::getLLVMModuleSet()->getSVFInstruction(
|
|
756
|
-
SVFUtil::cast<Instruction>(val))))
|
|
757
|
-
{
|
|
758
|
-
analyzeStaticObjType(typeinfo,val);
|
|
759
|
-
// static object allocated before main, label its field as infinite here
|
|
760
|
-
objSize = typeinfo->getMaxFieldOffsetLimit();
|
|
761
|
-
}
|
|
762
753
|
else if(ArgInProgEntryFunction(val))
|
|
763
754
|
{
|
|
764
755
|
analyzeStaticObjType(typeinfo,val);
|