svf-tools 1.0.897 → 1.0.899
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/AbstractExecution_8cpp.html +1 -1
- package/SVF-doxygen/html/AbstractExecution_8cpp_source.html +1638 -1659
- package/SVF-doxygen/html/AbstractExecution_8h_source.html +49 -49
- package/SVF-doxygen/html/AbstractPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/AccessPath_8cpp_source.html +1 -1
- package/SVF-doxygen/html/AccessPath_8h_source.html +2 -2
- package/SVF-doxygen/html/AddressValue_8h_source.html +1 -1
- package/SVF-doxygen/html/AndersenPWC_8h_source.html +4 -4
- package/SVF-doxygen/html/AndersenSCD_8cpp_source.html +3 -3
- package/SVF-doxygen/html/AndersenSFR_8cpp_source.html +3 -3
- package/SVF-doxygen/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/Andersen_8cpp_source.html +5 -5
- package/SVF-doxygen/html/Andersen_8h_source.html +3 -3
- package/SVF-doxygen/html/BoundedZ3Expr_8cpp_source.html +4 -4
- package/SVF-doxygen/html/BoundedZ3Expr_8h_source.html +400 -380
- package/SVF-doxygen/html/BufOverflowChecker_8cpp_source.html +29 -28
- package/SVF-doxygen/html/BufOverflowChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/CDGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CDGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/CDG_8h_source.html +2 -2
- package/SVF-doxygen/html/CFGNormalizer_8cpp_source.html +3 -3
- package/SVF-doxygen/html/CFGNormalizer_8h_source.html +3 -3
- package/SVF-doxygen/html/CFGrammar_8cpp_source.html +2 -2
- package/SVF-doxygen/html/CFGrammar_8h_source.html +3 -3
- package/SVF-doxygen/html/CFLAlias_8h_source.html +2 -2
- package/SVF-doxygen/html/CFLGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CFLGraphBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/CFLSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CFLSVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/CFLSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CHG_8h_source.html +2 -2
- package/SVF-doxygen/html/CSC_8cpp_source.html +2 -2
- package/SVF-doxygen/html/CSC_8h_source.html +3 -3
- package/SVF-doxygen/html/ConditionalPT_8h_source.html +3 -3
- package/SVF-doxygen/html/ConsExeState_8cpp_source.html +6 -6
- package/SVF-doxygen/html/ConsExeState_8h_source.html +6 -6
- package/SVF-doxygen/html/ConsGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/ConsG_8cpp_source.html +14 -14
- package/SVF-doxygen/html/ConsG_8h_source.html +4 -4
- package/SVF-doxygen/html/ContextDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/ContextDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/CoreBitVector_8h_source.html +1 -1
- package/SVF-doxygen/html/CppUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/CppUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/CxtStmt_8h_source.html +1 -1
- package/SVF-doxygen/html/DCHG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/DCHG_8h_source.html +2 -2
- package/SVF-doxygen/html/DDAClient_8cpp_source.html +2 -2
- package/SVF-doxygen/html/DDAClient_8h_source.html +3 -3
- package/SVF-doxygen/html/DDAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/DDAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/DDAVFSolver_8h_source.html +2 -2
- package/SVF-doxygen/html/DPItem_8h_source.html +2 -2
- package/SVF-doxygen/html/ExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/FSMPTA_8h_source.html +2 -2
- package/SVF-doxygen/html/FlowDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/FlowSensitiveStat_8cpp_source.html +2 -2
- package/SVF-doxygen/html/FlowSensitive_8cpp_source.html +6 -6
- package/SVF-doxygen/html/FlowSensitive_8h_source.html +2 -2
- package/SVF-doxygen/html/GeneralType_8h.html +8 -0
- package/SVF-doxygen/html/GeneralType_8h_source.html +110 -102
- package/SVF-doxygen/html/GenericGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/GrammarBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/ICFGEdge_8h_source.html +3 -3
- package/SVF-doxygen/html/ICFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/ICFGSimplification_8cpp_source.html +2 -2
- package/SVF-doxygen/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/ICFG_8cpp_source.html +3 -3
- package/SVF-doxygen/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/IRGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/IntervalExeState_8cpp_source.html +2 -2
- package/SVF-doxygen/html/IntervalExeState_8h_source.html +4 -4
- package/SVF-doxygen/html/IntervalValue_8h_source.html +863 -802
- package/SVF-doxygen/html/LLVMLoopAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LLVMModule_8cpp_source.html +335 -316
- package/SVF-doxygen/html/LLVMModule_8h_source.html +11 -11
- package/SVF-doxygen/html/LLVMUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/LLVMUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/LeakChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/LockAnalysis_8cpp_source.html +2 -2
- package/SVF-doxygen/html/LockAnalysis_8h_source.html +3 -3
- package/SVF-doxygen/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/LockResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/MHP_8cpp_source.html +3 -3
- package/SVF-doxygen/html/MHP_8h_source.html +3 -3
- package/SVF-doxygen/html/MSSAMuChi_8h_source.html +4 -4
- package/SVF-doxygen/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/MTAResultValidator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/MTA_8h_source.html +1 -1
- package/SVF-doxygen/html/MemPartition_8h_source.html +2 -2
- package/SVF-doxygen/html/MemRegion_8cpp_source.html +4 -4
- package/SVF-doxygen/html/MemRegion_8h_source.html +5 -5
- package/SVF-doxygen/html/MemSSA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/MemSSA_8h_source.html +5 -5
- package/SVF-doxygen/html/MutablePointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/NodeIDAllocator_8cpp_source.html +2 -2
- package/SVF-doxygen/html/NodeIDAllocator_8h_source.html +2 -2
- package/SVF-doxygen/html/NumericLiteral_8h_source.html +465 -424
- package/SVF-doxygen/html/ObjTypeInference_8cpp_source.html +3 -3
- package/SVF-doxygen/html/ObjTypeInference_8h_source.html +2 -2
- package/SVF-doxygen/html/Options_8cpp_source.html +10 -1
- package/SVF-doxygen/html/Options_8h_source.html +8 -4
- package/SVF-doxygen/html/PAGBuilderFromFile_8cpp_source.html +195 -137
- package/SVF-doxygen/html/PAGBuilderFromFile_8h_source.html +3 -3
- package/SVF-doxygen/html/PCG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/PTACallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PTACallGraph_8h_source.html +4 -4
- package/SVF-doxygen/html/PTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PersistentPointsToCache_8h_source.html +2 -2
- package/SVF-doxygen/html/PersistentPointsToDS_8h_source.html +2 -2
- package/SVF-doxygen/html/PointerAnalysisImpl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/PointerAnalysisImpl_8h_source.html +3 -3
- package/SVF-doxygen/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/PointerAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/PointsTo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/PointsTo_8h_source.html +3 -3
- package/SVF-doxygen/html/ProgSlice_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ProgSlice_8h_source.html +2 -2
- package/SVF-doxygen/html/RelExeState_8cpp_source.html +5 -5
- package/SVF-doxygen/html/RelExeState_8h_source.html +6 -6
- package/SVF-doxygen/html/RelationSolver_8cpp.html +2 -0
- package/SVF-doxygen/html/RelationSolver_8cpp_source.html +386 -378
- package/SVF-doxygen/html/RelationSolver_8h_source.html +11 -11
- package/SVF-doxygen/html/SCC_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFBugReport_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFFileSystem_8cpp_source.html +1937 -1934
- package/SVF-doxygen/html/SVFFileSystem_8h.html +1 -1
- package/SVF-doxygen/html/SVFFileSystem_8h_source.html +59 -59
- package/SVF-doxygen/html/SVFGEdge_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFGNode_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFGOPT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFGOPT_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFGReadWrite_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SVFGStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFGStat_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SVFG_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFIR2ConsExeState_8cpp_source.html +60 -60
- package/SVF-doxygen/html/SVFIR2ConsExeState_8h_source.html +9 -9
- package/SVF-doxygen/html/SVFIR2ItvExeState_8cpp_source.html +1101 -886
- package/SVF-doxygen/html/SVFIR2ItvExeState_8h_source.html +173 -154
- package/SVF-doxygen/html/SVFIR2Relation_8cpp_source.html +35 -35
- package/SVF-doxygen/html/SVFIRBuilder_8cpp_source.html +17 -17
- package/SVF-doxygen/html/SVFIRBuilder_8h_source.html +172 -121
- package/SVF-doxygen/html/SVFIRExtAPI_8cpp_source.html +5 -5
- package/SVF-doxygen/html/SVFIR_8cpp_source.html +24 -22
- package/SVF-doxygen/html/SVFIR_8h_source.html +55 -53
- package/SVF-doxygen/html/SVFLoop_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFStat_8h_source.html +1 -1
- package/SVF-doxygen/html/SVFStatements_8cpp_source.html +20 -20
- package/SVF-doxygen/html/SVFStatements_8h_source.html +979 -955
- package/SVF-doxygen/html/SVFType_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFType_8h_source.html +4 -4
- package/SVF-doxygen/html/SVFUtil_8h_source.html +2 -2
- package/SVF-doxygen/html/SVFValue_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SVFValue_8h_source.html +3 -3
- package/SVF-doxygen/html/SVFVariables_8h_source.html +1 -1
- package/SVF-doxygen/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/SaberCondAllocator_8cpp_source.html +10 -10
- package/SVF-doxygen/html/SaberCondAllocator_8h_source.html +8 -8
- package/SVF-doxygen/html/SaberSVFGBuilder_8cpp_source.html +2 -2
- package/SVF-doxygen/html/SaberSVFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/SingleAbsValue_8h_source.html +6 -6
- package/SVF-doxygen/html/SparseBitVector_8h_source.html +3 -3
- package/SVF-doxygen/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/SrcSnkDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/Steensgaard_8cpp_source.html +2 -2
- package/SVF-doxygen/html/Steensgaard_8h_source.html +4 -4
- package/SVF-doxygen/html/SymState_8h_source.html +2 -2
- package/SVF-doxygen/html/SymbolTableBuilder_8cpp_source.html +4 -4
- package/SVF-doxygen/html/SymbolTableBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/SymbolTableInfo_8cpp_source.html +3 -3
- package/SVF-doxygen/html/SymbolTableInfo_8h_source.html +4 -4
- package/SVF-doxygen/html/TCT_8cpp_source.html +3 -3
- package/SVF-doxygen/html/TCT_8h_source.html +4 -4
- package/SVF-doxygen/html/ThreadAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ThreadAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/ThreadCallGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/VFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/VFGNode_8h_source.html +12 -12
- package/SVF-doxygen/html/VFG_8cpp_source.html +18 -18
- package/SVF-doxygen/html/VFG_8h_source.html +17 -17
- package/SVF-doxygen/html/VersionedFlowSensitiveStat_8cpp_source.html +3 -3
- package/SVF-doxygen/html/VersionedFlowSensitive_8cpp_source.html +4 -4
- package/SVF-doxygen/html/VersionedFlowSensitive_8h_source.html +4 -4
- package/SVF-doxygen/html/WPAFSSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/WPASolver_8h_source.html +2 -2
- package/SVF-doxygen/html/WTO_8h_source.html +2 -2
- package/SVF-doxygen/html/WorkList_8h_source.html +1 -1
- package/SVF-doxygen/html/Z3Expr_8cpp_source.html +5 -5
- package/SVF-doxygen/html/Z3Expr_8h_source.html +303 -294
- package/SVF-doxygen/html/ae_8cpp_source.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1AEStat.html +119 -119
- package/SVF-doxygen/html/classSVF_1_1AbstractExecution.html +1517 -1538
- package/SVF-doxygen/html/classSVF_1_1AccessPath.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Andersen.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1AndersenBase.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AndersenSCD.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1AndersenSFR.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1AndersenStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1AndersenWaveDiff.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1BVDataPTAImpl.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1BinaryOPStmt.html +68 -68
- package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr-members.html +77 -72
- package/SVF-doxygen/html/classSVF_1_1BoundedZ3Expr.html +450 -294
- package/SVF-doxygen/html/classSVF_1_1BranchStmt.html +51 -51
- package/SVF-doxygen/html/classSVF_1_1BranchVFGNode.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1BufOverflowChecker.html +7 -7
- package/SVF-doxygen/html/classSVF_1_1CDGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CFGNormalizer.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1CFLSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CHGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1CSC.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1CallPE.html +35 -35
- package/SVF-doxygen/html/classSVF_1_1CmpStmt.html +97 -97
- package/SVF-doxygen/html/classSVF_1_1CondPTAImpl.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ConsExeState.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1ConstraintGraph.html +13 -13
- package/SVF-doxygen/html/classSVF_1_1ContextDDA.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1CopyStmt-members.html +48 -33
- package/SVF-doxygen/html/classSVF_1_1CopyStmt.html +206 -65
- package/SVF-doxygen/html/classSVF_1_1DCHGraph.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1DDAPass.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1DDAVFSolver.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ExeState.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1FlowSensitive.html +5 -5
- package/SVF-doxygen/html/classSVF_1_1FlowSensitiveStat.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1ForkJoinAnalysis.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1FunptrDDAClient.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GenericGraphReader.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1GepStmt.html +56 -56
- package/SVF-doxygen/html/classSVF_1_1GrammarBase.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFG.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1ICFGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ICFGWriter.html +11 -11
- package/SVF-doxygen/html/classSVF_1_1IntervalESBase.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1IntervalValue-members.html +40 -35
- package/SVF-doxygen/html/classSVF_1_1IntervalValue.html +512 -307
- package/SVF-doxygen/html/classSVF_1_1LLVMLoopAnalysis.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1LLVMModuleSet.html +331 -312
- package/SVF-doxygen/html/classSVF_1_1LoadStmt.html +19 -19
- package/SVF-doxygen/html/classSVF_1_1LockAnalysis.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1LockResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MHP.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1MRGenerator.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1MTAAnnotator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAResultValidator.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1MTASVFGBuilder.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MTAStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1MemSSA.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1MultiOpndStmt.html +48 -48
- package/SVF-doxygen/html/classSVF_1_1MutableDFPTData.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1NodeIDAllocator_1_1Clusterer.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1NumericLiteral-members.html +50 -43
- package/SVF-doxygen/html/classSVF_1_1NumericLiteral.html +574 -343
- package/SVF-doxygen/html/classSVF_1_1ObjTypeInference.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1Options-members.html +129 -128
- package/SVF-doxygen/html/classSVF_1_1Options.html +26 -0
- package/SVF-doxygen/html/classSVF_1_1PAGBuilderFromFile.html +204 -135
- package/SVF-doxygen/html/classSVF_1_1PCG.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1POCRSolver.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PTACallGraph.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PTAStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PersistentDFPTData.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PersistentDiffPTData.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PersistentPTData.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PersistentPointsToCache.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PhiStmt.html +46 -46
- package/SVF-doxygen/html/classSVF_1_1PointerAnalysis.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1PointsTo.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ProgSlice.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RaceResultValidator.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ReaderIDToObjMap.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1ReaderPtrPool.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1RelExeState.html +6 -6
- package/SVF-doxygen/html/classSVF_1_1RelationSolver-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1RelationSolver.html +362 -358
- package/SVF-doxygen/html/classSVF_1_1RetPE.html +35 -35
- package/SVF-doxygen/html/classSVF_1_1SVFG.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1SVFGOPT.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFGStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIR-members.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFIR.html +32 -25
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ConsExeState.html +51 -51
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState-members.html +49 -40
- package/SVF-doxygen/html/classSVF_1_1SVFIR2ItvExeState.html +1346 -909
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder-members.html +62 -61
- package/SVF-doxygen/html/classSVF_1_1SVFIRBuilder.html +211 -131
- package/SVF-doxygen/html/classSVF_1_1SVFIRReader.html +1122 -1121
- package/SVF-doxygen/html/classSVF_1_1SVFIRWriter.html +429 -427
- package/SVF-doxygen/html/classSVF_1_1SVFLoopAndDomInfo.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFModuleReader.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SVFModuleWriter.html +23 -23
- package/SVF-doxygen/html/classSVF_1_1SVFStat.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1SaberCondAllocator.html +14 -14
- package/SVF-doxygen/html/classSVF_1_1SaberSVFGBuilder.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1SelectStmt.html +38 -38
- package/SVF-doxygen/html/classSVF_1_1SingleAbsValue-members.html +96 -91
- package/SVF-doxygen/html/classSVF_1_1SingleAbsValue.html +19 -5
- package/SVF-doxygen/html/classSVF_1_1SrcSnkDDA.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1StInfo.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Steensgaard.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1StoreStmt.html +17 -17
- package/SVF-doxygen/html/classSVF_1_1SymbolTableBuilder.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1SymbolTableInfo.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1SymbolTableInfoReader.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1TCT.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1TDForkPE.html +22 -22
- package/SVF-doxygen/html/classSVF_1_1TDJoinPE.html +21 -21
- package/SVF-doxygen/html/classSVF_1_1ThreadAPI.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1UnaryOPStmt.html +44 -44
- package/SVF-doxygen/html/classSVF_1_1VFG.html +17 -17
- package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitive.html +4 -4
- package/SVF-doxygen/html/classSVF_1_1VersionedFlowSensitiveStat.html +3 -3
- package/SVF-doxygen/html/classSVF_1_1WPAFSSolver.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1WPAMinimumSolver.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1WPASCCSolver.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1WPASolver.html +1 -1
- package/SVF-doxygen/html/classSVF_1_1Z3Expr-members.html +2 -2
- package/SVF-doxygen/html/classSVF_1_1Z3Expr.html +227 -221
- package/SVF-doxygen/html/classSymblicAbstractionTest.html +6 -6
- package/SVF-doxygen/html/fastcluster__dm_8cpp_8inc_source.html +1 -1
- package/SVF-doxygen/html/functions_a.html +11 -8
- package/SVF-doxygen/html/functions_b.html +8 -5
- package/SVF-doxygen/html/functions_c.html +23 -14
- package/SVF-doxygen/html/functions_e.html +1 -1
- package/SVF-doxygen/html/functions_enum.html +3 -0
- package/SVF-doxygen/html/functions_eval_b.html +3 -0
- package/SVF-doxygen/html/functions_eval_c.html +3 -0
- package/SVF-doxygen/html/functions_eval_f.html +9 -0
- package/SVF-doxygen/html/functions_eval_i.html +3 -0
- package/SVF-doxygen/html/functions_eval_p.html +3 -0
- package/SVF-doxygen/html/functions_eval_s.html +6 -0
- package/SVF-doxygen/html/functions_eval_t.html +3 -0
- package/SVF-doxygen/html/functions_eval_u.html +3 -0
- package/SVF-doxygen/html/functions_eval_z.html +79 -0
- package/SVF-doxygen/html/functions_f.html +21 -12
- package/SVF-doxygen/html/functions_func.html +2 -2
- package/SVF-doxygen/html/functions_func_b.html +3 -3
- package/SVF-doxygen/html/functions_func_g.html +47 -12
- package/SVF-doxygen/html/functions_func_i.html +19 -9
- package/SVF-doxygen/html/functions_func_n.html +1 -1
- package/SVF-doxygen/html/functions_func_p.html +1 -1
- package/SVF-doxygen/html/functions_func_z.html +1 -1
- package/SVF-doxygen/html/functions_g.html +54 -19
- package/SVF-doxygen/html/functions_i.html +18 -5
- package/SVF-doxygen/html/functions_l.html +3 -3
- package/SVF-doxygen/html/functions_o.html +15 -15
- package/SVF-doxygen/html/functions_p.html +28 -29
- package/SVF-doxygen/html/functions_r.html +1 -1
- package/SVF-doxygen/html/functions_s.html +24 -16
- package/SVF-doxygen/html/functions_t.html +7 -4
- package/SVF-doxygen/html/functions_u.html +6 -3
- package/SVF-doxygen/html/functions_v.html +4 -6
- package/SVF-doxygen/html/functions_vars_a.html +3 -0
- package/SVF-doxygen/html/functions_vars_c.html +3 -0
- package/SVF-doxygen/html/functions_w.html +13 -7
- package/SVF-doxygen/html/functions_z.html +4 -1
- package/SVF-doxygen/html/menudata.js +2 -1
- package/SVF-doxygen/html/namespaceSVF.html +689 -617
- package/SVF-doxygen/html/namespaceSVF_1_1LLVMUtil.html +1 -1
- package/SVF-doxygen/html/namespaceSVF_1_1SVFUtil.html +1 -1
- package/SVF-doxygen/html/namespaceSVF_1_1cppUtil.html +1 -1
- package/SVF-doxygen/html/namespacemembers_s.html +6 -0
- package/SVF-doxygen/html/namespacemembers_type_s.html +6 -0
- package/SVF-doxygen/html/namespacemembers_type_u.html +6 -0
- package/SVF-doxygen/html/namespacemembers_u.html +6 -0
- package/SVF-doxygen/html/search/all_1.js +135 -134
- package/SVF-doxygen/html/search/all_10.js +326 -325
- package/SVF-doxygen/html/search/all_11.js +226 -226
- package/SVF-doxygen/html/search/all_12.js +574 -570
- package/SVF-doxygen/html/search/all_13.js +208 -207
- package/SVF-doxygen/html/search/all_14.js +73 -70
- package/SVF-doxygen/html/search/all_15.js +176 -176
- package/SVF-doxygen/html/search/all_16.js +77 -77
- package/SVF-doxygen/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/search/all_19.js +27 -26
- package/SVF-doxygen/html/search/all_1a.js +179 -179
- package/SVF-doxygen/html/search/all_2.js +182 -181
- package/SVF-doxygen/html/search/all_3.js +642 -640
- package/SVF-doxygen/html/search/all_4.js +236 -236
- package/SVF-doxygen/html/search/all_5.js +126 -126
- package/SVF-doxygen/html/search/all_6.js +235 -232
- package/SVF-doxygen/html/search/all_7.js +1056 -1047
- package/SVF-doxygen/html/search/all_8.js +215 -215
- package/SVF-doxygen/html/search/all_9.js +632 -629
- package/SVF-doxygen/html/search/all_a.js +46 -46
- package/SVF-doxygen/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/search/all_c.js +115 -115
- package/SVF-doxygen/html/search/all_d.js +204 -204
- package/SVF-doxygen/html/search/all_e.js +209 -209
- package/SVF-doxygen/html/search/all_f.js +122 -122
- package/SVF-doxygen/html/search/classes_0.js +28 -28
- package/SVF-doxygen/html/search/classes_1.js +11 -11
- package/SVF-doxygen/html/search/classes_10.js +74 -74
- package/SVF-doxygen/html/search/classes_11.js +14 -14
- package/SVF-doxygen/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/search/classes_14.js +19 -19
- package/SVF-doxygen/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/search/classes_2.js +73 -73
- package/SVF-doxygen/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/search/classes_4.js +8 -8
- package/SVF-doxygen/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/search/classes_7.js +38 -38
- package/SVF-doxygen/html/search/classes_8.js +59 -59
- package/SVF-doxygen/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/search/classes_d.js +19 -19
- package/SVF-doxygen/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/search/defines_1.js +3 -3
- package/SVF-doxygen/html/search/defines_10.js +2 -2
- package/SVF-doxygen/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/search/defines_4.js +3 -3
- package/SVF-doxygen/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/search/defines_8.js +11 -11
- package/SVF-doxygen/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/search/defines_c.js +4 -4
- package/SVF-doxygen/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/search/defines_e.js +8 -8
- package/SVF-doxygen/html/search/defines_f.js +4 -4
- package/SVF-doxygen/html/search/enums_0.js +4 -4
- package/SVF-doxygen/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/search/enums_2.js +9 -8
- package/SVF-doxygen/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/search/enums_4.js +4 -4
- package/SVF-doxygen/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/search/enums_a.js +1 -1
- package/SVF-doxygen/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/search/enumvalues_0.js +15 -15
- package/SVF-doxygen/html/search/enumvalues_1.js +16 -15
- package/SVF-doxygen/html/search/enumvalues_10.js +36 -35
- package/SVF-doxygen/html/search/enumvalues_11.js +5 -4
- package/SVF-doxygen/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/search/enumvalues_15.js +4 -3
- package/SVF-doxygen/html/search/enumvalues_2.js +37 -36
- package/SVF-doxygen/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/search/enumvalues_4.js +2 -2
- package/SVF-doxygen/html/search/enumvalues_5.js +50 -47
- package/SVF-doxygen/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_7.js +8 -8
- package/SVF-doxygen/html/search/enumvalues_8.js +24 -23
- package/SVF-doxygen/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/search/enumvalues_a.js +17 -17
- package/SVF-doxygen/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/search/enumvalues_c.js +5 -5
- package/SVF-doxygen/html/search/enumvalues_d.js +19 -18
- package/SVF-doxygen/html/search/enumvalues_e.js +9 -9
- package/SVF-doxygen/html/search/enumvalues_f.js +49 -47
- package/SVF-doxygen/html/search/files_0.js +16 -16
- package/SVF-doxygen/html/search/files_1.js +9 -9
- package/SVF-doxygen/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/search/files_2.js +53 -53
- package/SVF-doxygen/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/search/files_4.js +5 -5
- package/SVF-doxygen/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/search/files_6.js +10 -10
- package/SVF-doxygen/html/search/files_7.js +17 -17
- package/SVF-doxygen/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/search/files_b.js +4 -4
- package/SVF-doxygen/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/search/functions_0.js +13 -13
- package/SVF-doxygen/html/search/functions_1.js +368 -368
- package/SVF-doxygen/html/search/functions_10.js +140 -140
- package/SVF-doxygen/html/search/functions_11.js +140 -140
- package/SVF-doxygen/html/search/functions_12.js +299 -299
- package/SVF-doxygen/html/search/functions_13.js +73 -73
- package/SVF-doxygen/html/search/functions_14.js +41 -41
- package/SVF-doxygen/html/search/functions_15.js +72 -72
- package/SVF-doxygen/html/search/functions_16.js +38 -38
- package/SVF-doxygen/html/search/functions_17.js +3 -3
- package/SVF-doxygen/html/search/functions_18.js +179 -179
- package/SVF-doxygen/html/search/functions_2.js +94 -94
- package/SVF-doxygen/html/search/functions_3.js +261 -261
- package/SVF-doxygen/html/search/functions_4.js +85 -85
- package/SVF-doxygen/html/search/functions_5.js +57 -57
- package/SVF-doxygen/html/search/functions_6.js +65 -65
- package/SVF-doxygen/html/search/functions_7.js +872 -863
- package/SVF-doxygen/html/search/functions_8.js +162 -162
- package/SVF-doxygen/html/search/functions_9.js +440 -438
- package/SVF-doxygen/html/search/functions_a.js +30 -30
- package/SVF-doxygen/html/search/functions_b.js +2 -2
- package/SVF-doxygen/html/search/functions_c.js +25 -25
- package/SVF-doxygen/html/search/functions_d.js +82 -82
- package/SVF-doxygen/html/search/functions_e.js +36 -36
- package/SVF-doxygen/html/search/functions_f.js +58 -58
- package/SVF-doxygen/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/search/related_0.js +4 -4
- package/SVF-doxygen/html/search/related_1.js +2 -2
- package/SVF-doxygen/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/search/related_7.js +5 -5
- package/SVF-doxygen/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/search/related_c.js +2 -2
- package/SVF-doxygen/html/search/related_d.js +12 -12
- package/SVF-doxygen/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/search/typedefs_0.js +19 -19
- package/SVF-doxygen/html/search/typedefs_1.js +27 -27
- package/SVF-doxygen/html/search/typedefs_10.js +65 -63
- package/SVF-doxygen/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/search/typedefs_12.js +13 -11
- package/SVF-doxygen/html/search/typedefs_13.js +40 -40
- package/SVF-doxygen/html/search/typedefs_14.js +11 -11
- package/SVF-doxygen/html/search/typedefs_2.js +125 -125
- package/SVF-doxygen/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/search/typedefs_4.js +17 -17
- package/SVF-doxygen/html/search/typedefs_5.js +42 -42
- package/SVF-doxygen/html/search/typedefs_6.js +54 -54
- package/SVF-doxygen/html/search/typedefs_7.js +47 -47
- package/SVF-doxygen/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/search/typedefs_c.js +41 -41
- package/SVF-doxygen/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/search/variables_0.js +177 -177
- package/SVF-doxygen/html/search/variables_1.js +77 -76
- package/SVF-doxygen/html/search/variables_10.js +98 -98
- package/SVF-doxygen/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/search/variables_12.js +93 -93
- package/SVF-doxygen/html/search/variables_13.js +76 -76
- package/SVF-doxygen/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/search/variables_15.js +49 -49
- package/SVF-doxygen/html/search/variables_16.js +11 -11
- package/SVF-doxygen/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/search/variables_18.js +17 -17
- package/SVF-doxygen/html/search/variables_2.js +40 -40
- package/SVF-doxygen/html/search/variables_3.js +143 -142
- package/SVF-doxygen/html/search/variables_4.js +51 -51
- package/SVF-doxygen/html/search/variables_5.js +39 -39
- package/SVF-doxygen/html/search/variables_6.js +66 -66
- package/SVF-doxygen/html/search/variables_7.js +34 -34
- package/SVF-doxygen/html/search/variables_8.js +8 -8
- package/SVF-doxygen/html/search/variables_9.js +79 -79
- package/SVF-doxygen/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/search/variables_d.js +57 -57
- package/SVF-doxygen/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/search/variables_f.js +31 -31
- package/SVF-doxygen/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +2 -2
- package/SVF-doxygen/html/structSVF_1_1Hash.html +6 -6
- package/SVF-doxygen/html/structSVF_1_1Hash_3_01std_1_1pair_3_01S_00_01T_01_4_01_4.html +12 -12
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1AccessPath_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1BoundedZ3Expr_01_4.html +6 -6
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CondStdSet_3_01Element_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtDPItem_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1CxtStmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1NumericLiteral_01_4.html +5 -5
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SingleAbsValue_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SparseBitVector_3_01N_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1StmtDPItem_3_01LocCond_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1SymState_01_4.html +1 -1
- package/SVF-doxygen/html/structstd_1_1hash_3_01SVF_1_1Z3Expr_01_4.html +6 -6
- package/SVF-doxygen/html/structstd_1_1hash_3_01std_1_1vector_3_01T_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/svf-ex_8cpp.html +21 -21
- package/SVF-doxygen/html/svf-ex_8cpp_source.html +21 -21
- package/SVF-doxygen/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +2 -2
- package/SVF-doxygen/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +3 -3
- package/package.json +1 -1
- package/svf/include/AE/Core/BoundedZ3Expr.h +33 -20
- package/svf/include/AE/Core/IntervalValue.h +57 -5
- package/svf/include/AE/Core/NumericLiteral.h +31 -1
- package/svf/include/AE/Core/RelationSolver.h +1 -1
- package/svf/include/AE/Svfexe/SVFIR2ItvExeState.h +10 -0
- package/svf/include/SVFIR/SVFIR.h +2 -1
- package/svf/include/SVFIR/SVFStatements.h +12 -2
- package/svf/include/Util/GeneralType.h +4 -0
- package/svf/include/Util/Options.h +3 -0
- package/svf/include/Util/Z3Expr.h +9 -2
- package/svf/lib/AE/Core/RelationSolver.cpp +11 -6
- package/svf/lib/AE/Svfexe/AbstractExecution.cpp +13 -34
- package/svf/lib/AE/Svfexe/BufOverflowChecker.cpp +6 -6
- package/svf/lib/AE/Svfexe/SVFIR2ItvExeState.cpp +217 -23
- package/svf/lib/SVFIR/PAGBuilderFromFile.cpp +62 -3
- package/svf/lib/SVFIR/SVFFileSystem.cpp +4 -1
- package/svf/lib/SVFIR/SVFIR.cpp +3 -3
- package/svf/lib/Util/Options.cpp +8 -0
- package/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +39 -3
- package/svf-llvm/lib/LLVMModule.cpp +21 -2
- package/svf-llvm/lib/SVFIRBuilder.cpp +7 -7
- package/svf-llvm/lib/SVFIRExtAPI.cpp +3 -3
|
@@ -71,13 +71,13 @@ IntervalValue SVFIR2ItvExeState::getRangeLimitFromType(const SVFType* type)
|
|
|
71
71
|
{
|
|
72
72
|
if (intType->isSigned())
|
|
73
73
|
{
|
|
74
|
-
ub = static_cast<s64_t>(std::numeric_limits<
|
|
75
|
-
lb = static_cast<s64_t>(std::numeric_limits<
|
|
74
|
+
ub = static_cast<s64_t>(std::numeric_limits<s16_t>::max());
|
|
75
|
+
lb = static_cast<s64_t>(std::numeric_limits<s16_t>::min());
|
|
76
76
|
}
|
|
77
77
|
else
|
|
78
78
|
{
|
|
79
|
-
ub = static_cast<s64_t>(std::numeric_limits<
|
|
80
|
-
lb = static_cast<s64_t>(std::numeric_limits<
|
|
79
|
+
ub = static_cast<s64_t>(std::numeric_limits<u16_t>::max());
|
|
80
|
+
lb = static_cast<s64_t>(std::numeric_limits<u16_t>::min());
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
else if (bits == 8)
|
|
@@ -109,6 +109,168 @@ IntervalValue SVFIR2ItvExeState::getRangeLimitFromType(const SVFType* type)
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
IntervalValue SVFIR2ItvExeState::getZExtValue(const SVFVar* var)
|
|
113
|
+
{
|
|
114
|
+
const SVFType* type = var->getType();
|
|
115
|
+
if (SVFUtil::isa<SVFIntegerType>(type))
|
|
116
|
+
{
|
|
117
|
+
u32_t bits = type->getByteSize() * 8;
|
|
118
|
+
if (_es[var->getId()].is_numeral())
|
|
119
|
+
{
|
|
120
|
+
if (bits == 8)
|
|
121
|
+
{
|
|
122
|
+
int8_t signed_i8_value = _es[var->getId()].getIntNumeral();
|
|
123
|
+
u32_t unsigned_value = static_cast<uint8_t>(signed_i8_value);
|
|
124
|
+
return IntervalValue(unsigned_value, unsigned_value);
|
|
125
|
+
}
|
|
126
|
+
else if (bits == 16)
|
|
127
|
+
{
|
|
128
|
+
s16_t signed_i16_value = _es[var->getId()].getIntNumeral();
|
|
129
|
+
u32_t unsigned_value = static_cast<u16_t>(signed_i16_value);
|
|
130
|
+
return IntervalValue(unsigned_value, unsigned_value);
|
|
131
|
+
}
|
|
132
|
+
else if (bits == 32)
|
|
133
|
+
{
|
|
134
|
+
s32_t signed_i32_value = _es[var->getId()].getIntNumeral();
|
|
135
|
+
u32_t unsigned_value = static_cast<u32_t>(signed_i32_value);
|
|
136
|
+
return IntervalValue(unsigned_value, unsigned_value);
|
|
137
|
+
}
|
|
138
|
+
else if (bits == 64)
|
|
139
|
+
{
|
|
140
|
+
s64_t signed_i64_value = _es[var->getId()].getIntNumeral();
|
|
141
|
+
return IntervalValue((s64_t)signed_i64_value, (s64_t)signed_i64_value);
|
|
142
|
+
// we only support i64 at most
|
|
143
|
+
}
|
|
144
|
+
else
|
|
145
|
+
{
|
|
146
|
+
assert(false && "cannot support int type other than u8/16/32/64");
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else
|
|
150
|
+
{
|
|
151
|
+
return IntervalValue::top(); // TODO: may have better solution
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
assert(false && "cannot support non-integer type");
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
IntervalValue SVFIR2ItvExeState::getSExtValue(const SVFVar* var)
|
|
158
|
+
{
|
|
159
|
+
return _es[var->getId()];
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
IntervalValue SVFIR2ItvExeState::getFPToSIntValue(const SVF::SVFVar* var)
|
|
163
|
+
{
|
|
164
|
+
if (_es[var->getId()].is_real())
|
|
165
|
+
{
|
|
166
|
+
// get the float value of ub and lb
|
|
167
|
+
double float_lb = _es[var->getId()].lb().getRealNumeral();
|
|
168
|
+
double float_ub = _es[var->getId()].ub().getRealNumeral();
|
|
169
|
+
// get the int value of ub and lb
|
|
170
|
+
s64_t int_lb = static_cast<s64_t>(float_lb);
|
|
171
|
+
s64_t int_ub = static_cast<s64_t>(float_ub);
|
|
172
|
+
return IntervalValue(int_lb, int_ub);
|
|
173
|
+
}
|
|
174
|
+
else
|
|
175
|
+
{
|
|
176
|
+
return getSExtValue(var);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
IntervalValue SVFIR2ItvExeState::getFPToUIntValue(const SVF::SVFVar* var)
|
|
181
|
+
{
|
|
182
|
+
if (_es[var->getId()].is_real())
|
|
183
|
+
{
|
|
184
|
+
// get the float value of ub and lb
|
|
185
|
+
double float_lb = _es[var->getId()].lb().getRealNumeral();
|
|
186
|
+
double float_ub = _es[var->getId()].ub().getRealNumeral();
|
|
187
|
+
// get the int value of ub and lb
|
|
188
|
+
u64_t int_lb = static_cast<u64_t>(float_lb);
|
|
189
|
+
u64_t int_ub = static_cast<u64_t>(float_ub);
|
|
190
|
+
return IntervalValue(int_lb, int_ub);
|
|
191
|
+
}
|
|
192
|
+
else
|
|
193
|
+
{
|
|
194
|
+
return getZExtValue(var);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
IntervalValue SVFIR2ItvExeState::getSIntToFPValue(const SVF::SVFVar* var)
|
|
199
|
+
{
|
|
200
|
+
// get the sint value of ub and lb
|
|
201
|
+
s64_t sint_lb = _es[var->getId()].lb().getIntNumeral();
|
|
202
|
+
s64_t sint_ub = _es[var->getId()].ub().getIntNumeral();
|
|
203
|
+
// get the float value of ub and lb
|
|
204
|
+
double float_lb = static_cast<double>(sint_lb);
|
|
205
|
+
double float_ub = static_cast<double>(sint_ub);
|
|
206
|
+
return IntervalValue(float_lb, float_ub);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
IntervalValue SVFIR2ItvExeState::getUIntToFPValue(const SVF::SVFVar* var)
|
|
210
|
+
{
|
|
211
|
+
// get the uint value of ub and lb
|
|
212
|
+
u64_t uint_lb = _es[var->getId()].lb().getIntNumeral();
|
|
213
|
+
u64_t uint_ub = _es[var->getId()].ub().getIntNumeral();
|
|
214
|
+
// get the float value of ub and lb
|
|
215
|
+
double float_lb = static_cast<double>(uint_lb);
|
|
216
|
+
double float_ub = static_cast<double>(uint_ub);
|
|
217
|
+
return IntervalValue(float_lb, float_ub);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
IntervalValue SVFIR2ItvExeState::getTruncValue(const SVF::SVFVar* var, const SVFType* dstType)
|
|
221
|
+
{
|
|
222
|
+
// get the value of ub and lb
|
|
223
|
+
s64_t int_lb = _es[var->getId()].lb().getIntNumeral();
|
|
224
|
+
s64_t int_ub = _es[var->getId()].ub().getIntNumeral();
|
|
225
|
+
// get dst type
|
|
226
|
+
u32_t dst_bits = dstType->getByteSize() * 8;
|
|
227
|
+
if (dst_bits == 8)
|
|
228
|
+
{
|
|
229
|
+
// get the signed value of ub and lb
|
|
230
|
+
int8_t s8_lb = static_cast<int8_t>(int_lb);
|
|
231
|
+
int8_t s8_ub = static_cast<int8_t>(int_ub);
|
|
232
|
+
if (s8_lb > s8_ub)
|
|
233
|
+
{
|
|
234
|
+
// return range of s8
|
|
235
|
+
return IntervalValue::top();
|
|
236
|
+
}
|
|
237
|
+
return IntervalValue(s8_lb, s8_ub);
|
|
238
|
+
}
|
|
239
|
+
else if (dst_bits == 16)
|
|
240
|
+
{
|
|
241
|
+
// get the signed value of ub and lb
|
|
242
|
+
s16_t s16_lb = static_cast<s16_t>(int_lb);
|
|
243
|
+
s16_t s16_ub = static_cast<s16_t>(int_ub);
|
|
244
|
+
if (s16_lb > s16_ub)
|
|
245
|
+
{
|
|
246
|
+
// return range of s16
|
|
247
|
+
return IntervalValue::top();
|
|
248
|
+
}
|
|
249
|
+
return IntervalValue(s16_lb, s16_ub);
|
|
250
|
+
}
|
|
251
|
+
else if (dst_bits == 32)
|
|
252
|
+
{
|
|
253
|
+
// get the signed value of ub and lb
|
|
254
|
+
s32_t s32_lb = static_cast<s32_t>(int_lb);
|
|
255
|
+
s32_t s32_ub = static_cast<s32_t>(int_ub);
|
|
256
|
+
if (s32_lb > s32_ub)
|
|
257
|
+
{
|
|
258
|
+
// return range of s32
|
|
259
|
+
return IntervalValue::top();
|
|
260
|
+
}
|
|
261
|
+
return IntervalValue(s32_lb, s32_ub);
|
|
262
|
+
}
|
|
263
|
+
else
|
|
264
|
+
{
|
|
265
|
+
assert(false && "cannot support dst int type other than u8/16/32");
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
IntervalValue SVFIR2ItvExeState::getFPTruncValue(const SVF::SVFVar* var, const SVFType* dstType)
|
|
270
|
+
{
|
|
271
|
+
// TODO: now we do not really handle fptrunc
|
|
272
|
+
return _es[var->getId()];
|
|
273
|
+
}
|
|
112
274
|
|
|
113
275
|
void SVFIR2ItvExeState::applySummary(IntervalExeState &es)
|
|
114
276
|
{
|
|
@@ -236,7 +398,7 @@ SVFIR2ItvExeState::Addrs SVFIR2ItvExeState::getGepObjAddress(u32_t pointer, APOf
|
|
|
236
398
|
Addrs ret;
|
|
237
399
|
for (const auto &addr: addrs)
|
|
238
400
|
{
|
|
239
|
-
|
|
401
|
+
s64_t baseObj = getInternalID(addr);
|
|
240
402
|
if (baseObj == 0)
|
|
241
403
|
{
|
|
242
404
|
ret.insert(getVirtualMemAddress(0));
|
|
@@ -310,12 +472,12 @@ IntervalValue SVFIR2ItvExeState::getByteOffset(const GepStmt *gep)
|
|
|
310
472
|
{
|
|
311
473
|
// if lb or ub is negative number, set 0.
|
|
312
474
|
// if lb or ub is positive number, guarantee lb/ub * elemByteSize <= MaxFieldLimit
|
|
313
|
-
s64_t ub = (idxVal.ub().
|
|
475
|
+
s64_t ub = (idxVal.ub().getIntNumeral() < 0) ? 0 :
|
|
314
476
|
(double)Options::MaxFieldLimit() /
|
|
315
|
-
elemByteSize >= idxVal.ub().
|
|
316
|
-
s64_t lb = (idxVal.lb().
|
|
477
|
+
elemByteSize >= idxVal.ub().getIntNumeral() ? elemByteSize * idxVal.ub().getIntNumeral(): Options::MaxFieldLimit();
|
|
478
|
+
s64_t lb = (idxVal.lb().getIntNumeral() < 0) ? 0 :
|
|
317
479
|
((double)Options::MaxFieldLimit() /
|
|
318
|
-
elemByteSize >= idxVal.lb().
|
|
480
|
+
elemByteSize >= idxVal.lb().getIntNumeral()) ? elemByteSize * idxVal.lb().getIntNumeral() : Options::MaxFieldLimit();
|
|
319
481
|
res = res + IntervalValue(lb, ub);
|
|
320
482
|
}
|
|
321
483
|
}
|
|
@@ -367,8 +529,8 @@ IntervalValue SVFIR2ItvExeState::getItvOfFlattenedElemIndex(const GepStmt *gep)
|
|
|
367
529
|
idxLb = idxUb = 0;
|
|
368
530
|
else
|
|
369
531
|
{
|
|
370
|
-
idxLb = idxItv.lb().
|
|
371
|
-
idxUb = idxItv.ub().
|
|
532
|
+
idxLb = idxItv.lb().getIntNumeral();
|
|
533
|
+
idxUb = idxItv.ub().getIntNumeral();
|
|
372
534
|
}
|
|
373
535
|
}
|
|
374
536
|
// for pointer type, flattened index = elemNum * idx
|
|
@@ -428,7 +590,7 @@ void SVFIR2ItvExeState::initObjVar(const ObjVar *objVar, u32_t varId)
|
|
|
428
590
|
{
|
|
429
591
|
if (const SVFConstantInt *consInt = SVFUtil::dyn_cast<SVFConstantInt>(obj->getValue()))
|
|
430
592
|
{
|
|
431
|
-
|
|
593
|
+
s64_t numeral = consInt->getSExtValue();
|
|
432
594
|
IntervalExeState::globalES[varId] = IntervalValue(numeral, numeral);
|
|
433
595
|
}
|
|
434
596
|
else if (const SVFConstantFP* consFP = SVFUtil::dyn_cast<SVFConstantFP>(obj->getValue()))
|
|
@@ -822,14 +984,46 @@ void SVFIR2ItvExeState::translateCopy(const CopyStmt *copy)
|
|
|
822
984
|
{
|
|
823
985
|
if (inVarToValTable(rhs))
|
|
824
986
|
{
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
if (copy->
|
|
987
|
+
if (copy->getCopyKind() == CopyStmt::COPYVAL)
|
|
988
|
+
{
|
|
989
|
+
_es[lhs] = _es[rhs];
|
|
990
|
+
}
|
|
991
|
+
else if (copy->getCopyKind() == CopyStmt::ZEXT)
|
|
992
|
+
{
|
|
993
|
+
_es[lhs] = getZExtValue(copy->getRHSVar());
|
|
994
|
+
}
|
|
995
|
+
else if (copy->getCopyKind() == CopyStmt::SEXT)
|
|
996
|
+
{
|
|
997
|
+
_es[lhs] = getSExtValue(copy->getRHSVar());
|
|
998
|
+
}
|
|
999
|
+
else if (copy->getCopyKind() == CopyStmt::FPTOSI)
|
|
1000
|
+
{
|
|
1001
|
+
_es[lhs] = getFPToSIntValue(copy->getRHSVar());
|
|
1002
|
+
}
|
|
1003
|
+
else if (copy->getCopyKind() == CopyStmt::FPTOUI)
|
|
1004
|
+
{
|
|
1005
|
+
_es[lhs] = getFPToUIntValue(copy->getRHSVar());
|
|
1006
|
+
}
|
|
1007
|
+
else if (copy->getCopyKind() == CopyStmt::SITOFP)
|
|
1008
|
+
{
|
|
1009
|
+
_es[lhs] = getSIntToFPValue(copy->getRHSVar());
|
|
1010
|
+
}
|
|
1011
|
+
else if (copy->getCopyKind() == CopyStmt::UITOFP)
|
|
1012
|
+
{
|
|
1013
|
+
_es[lhs] = getUIntToFPValue(copy->getRHSVar());
|
|
1014
|
+
}
|
|
1015
|
+
else if (copy->getCopyKind() == CopyStmt::TRUNC)
|
|
1016
|
+
{
|
|
1017
|
+
_es[lhs] = getTruncValue(copy->getRHSVar(), copy->getLHSVar()->getType());
|
|
1018
|
+
}
|
|
1019
|
+
else if (copy->getCopyKind() == CopyStmt::FPTRUNC)
|
|
1020
|
+
{
|
|
1021
|
+
_es[lhs] = getFPTruncValue(copy->getRHSVar(), copy->getLHSVar()->getType());
|
|
1022
|
+
}
|
|
1023
|
+
else
|
|
830
1024
|
{
|
|
831
|
-
|
|
832
|
-
|
|
1025
|
+
assert(false && "undefined copy kind");
|
|
1026
|
+
abort();
|
|
833
1027
|
}
|
|
834
1028
|
}
|
|
835
1029
|
else if (inVarToAddrsTable(rhs))
|
|
@@ -854,10 +1048,10 @@ void SVFIR2ItvExeState::translateGep(const GepStmt *gep)
|
|
|
854
1048
|
else
|
|
855
1049
|
{
|
|
856
1050
|
Addrs gepAddrs;
|
|
857
|
-
APOffset lb = offsetPair.lb().
|
|
858
|
-
offsetPair.lb().
|
|
859
|
-
APOffset ub = offsetPair.ub().
|
|
860
|
-
offsetPair.ub().
|
|
1051
|
+
APOffset lb = offsetPair.lb().getIntNumeral() < Options::MaxFieldLimit()?
|
|
1052
|
+
offsetPair.lb().getIntNumeral(): Options::MaxFieldLimit();
|
|
1053
|
+
APOffset ub = offsetPair.ub().getIntNumeral() < Options::MaxFieldLimit()?
|
|
1054
|
+
offsetPair.ub().getIntNumeral(): Options::MaxFieldLimit();
|
|
861
1055
|
for (APOffset i = lb; i <= ub; i++)
|
|
862
1056
|
gepAddrs.join_with(getGepObjAddress(rhs, i));
|
|
863
1057
|
if(gepAddrs.empty()) return;
|
|
@@ -52,10 +52,12 @@ static u32_t gepNodeNumIndex = 100000;
|
|
|
52
52
|
9 v
|
|
53
53
|
5 addr 6 0
|
|
54
54
|
6 gep 7 4
|
|
55
|
-
7 copy 8 0
|
|
55
|
+
7 copy-ZEXT 8 0
|
|
56
56
|
6 store 8 0
|
|
57
57
|
8 load 9 0
|
|
58
58
|
*/
|
|
59
|
+
// for copy stmt, the enum is COPYVAL, ZEXT, SEXT, BITCAST, TRUNC, FPTRUNC,
|
|
60
|
+
// FPTOUI, FPTOSI, UITOFP, SITOFP, INTTOPTR, PTRTOINT, UNKNOWN
|
|
59
61
|
SVFIR* PAGBuilderFromFile::build()
|
|
60
62
|
{
|
|
61
63
|
|
|
@@ -162,8 +164,65 @@ void PAGBuilderFromFile::addEdge(NodeID srcID, NodeID dstID,
|
|
|
162
164
|
{
|
|
163
165
|
pag->addAddrStmt(srcID, dstID);
|
|
164
166
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
+
if (edge.rfind("copy-", 0) == 0)
|
|
168
|
+
{
|
|
169
|
+
// the enum is COPYVAL, ZEXT, SEXT, BITCAST, TRUNC, FPTRUNC,
|
|
170
|
+
//// FPTOUI, FPTOSI, UITOFP, SITOFP, INTTOPTR, PTRTOINT, UNKNOWN
|
|
171
|
+
std::string opType = edge.substr(5); // start substring from 5th char
|
|
172
|
+
|
|
173
|
+
if (opType == "COPYVAL")
|
|
174
|
+
{
|
|
175
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::COPYVAL);
|
|
176
|
+
}
|
|
177
|
+
else if (opType == "ZEXT")
|
|
178
|
+
{
|
|
179
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::ZEXT);
|
|
180
|
+
}
|
|
181
|
+
else if (opType == "SEXT")
|
|
182
|
+
{
|
|
183
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::SEXT);
|
|
184
|
+
}
|
|
185
|
+
else if (opType == "BITCAST")
|
|
186
|
+
{
|
|
187
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::BITCAST);
|
|
188
|
+
}
|
|
189
|
+
else if (opType == "TRUNC")
|
|
190
|
+
{
|
|
191
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::TRUNC);
|
|
192
|
+
}
|
|
193
|
+
else if (opType == "FPTRUNC")
|
|
194
|
+
{
|
|
195
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::FPTRUNC);
|
|
196
|
+
}
|
|
197
|
+
else if (opType == "FPTOUI")
|
|
198
|
+
{
|
|
199
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::FPTOUI);
|
|
200
|
+
}
|
|
201
|
+
else if (opType == "FPTOSI")
|
|
202
|
+
{
|
|
203
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::FPTOSI);
|
|
204
|
+
}
|
|
205
|
+
else if (opType == "UITOFP")
|
|
206
|
+
{
|
|
207
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::UITOFP);
|
|
208
|
+
}
|
|
209
|
+
else if (opType == "SITOFP")
|
|
210
|
+
{
|
|
211
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::SITOFP);
|
|
212
|
+
}
|
|
213
|
+
else if (opType == "INTTOPTR")
|
|
214
|
+
{
|
|
215
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::INTTOPTR);
|
|
216
|
+
}
|
|
217
|
+
else if (opType == "PTRTOINT")
|
|
218
|
+
{
|
|
219
|
+
pag->addCopyStmt(srcID, dstID, CopyStmt::PTRTOINT);
|
|
220
|
+
}
|
|
221
|
+
else
|
|
222
|
+
{
|
|
223
|
+
assert(false && "format not support, can not create such edge");
|
|
224
|
+
}
|
|
225
|
+
}
|
|
167
226
|
else if (edge == "load")
|
|
168
227
|
pag->addLoadStmt(srcID, dstID);
|
|
169
228
|
else if (edge == "store")
|
|
@@ -692,7 +692,9 @@ cJSON* SVFIRWriter::contentToJson(const AddrStmt* edge)
|
|
|
692
692
|
|
|
693
693
|
cJSON* SVFIRWriter::contentToJson(const CopyStmt* edge)
|
|
694
694
|
{
|
|
695
|
-
|
|
695
|
+
cJSON* root = contentToJson(static_cast<const AssignStmt*>(edge));
|
|
696
|
+
JSON_WRITE_FIELD(root, edge, copyKind);
|
|
697
|
+
return root;
|
|
696
698
|
}
|
|
697
699
|
|
|
698
700
|
cJSON* SVFIRWriter::contentToJson(const StoreStmt* edge)
|
|
@@ -2055,6 +2057,7 @@ void SVFIRReader::fill(const cJSON*& fieldJson, AddrStmt* stmt)
|
|
|
2055
2057
|
void SVFIRReader::fill(const cJSON*& fieldJson, CopyStmt* stmt)
|
|
2056
2058
|
{
|
|
2057
2059
|
fill(fieldJson, static_cast<AssignStmt*>(stmt));
|
|
2060
|
+
JSON_READ_FIELD_FWD(fieldJson, stmt, copyKind);
|
|
2058
2061
|
}
|
|
2059
2062
|
|
|
2060
2063
|
void SVFIRReader::fill(const cJSON*& fieldJson, StoreStmt* stmt)
|
package/svf/lib/SVFIR/SVFIR.cpp
CHANGED
|
@@ -61,7 +61,7 @@ AddrStmt* SVFIR::addAddrStmt(NodeID src, NodeID dst)
|
|
|
61
61
|
/*!
|
|
62
62
|
* Add Copy edge
|
|
63
63
|
*/
|
|
64
|
-
CopyStmt* SVFIR::addCopyStmt(NodeID src, NodeID dst)
|
|
64
|
+
CopyStmt* SVFIR::addCopyStmt(NodeID src, NodeID dst, CopyStmt::CopyKind type)
|
|
65
65
|
{
|
|
66
66
|
SVFVar* srcNode = getGNode(src);
|
|
67
67
|
SVFVar* dstNode = getGNode(dst);
|
|
@@ -69,7 +69,7 @@ CopyStmt* SVFIR::addCopyStmt(NodeID src, NodeID dst)
|
|
|
69
69
|
return nullptr;
|
|
70
70
|
else
|
|
71
71
|
{
|
|
72
|
-
CopyStmt* copyPE = new CopyStmt(srcNode, dstNode);
|
|
72
|
+
CopyStmt* copyPE = new CopyStmt(srcNode, dstNode, type);
|
|
73
73
|
addToStmt2TypeMap(copyPE);
|
|
74
74
|
addEdge(srcNode,dstNode, copyPE);
|
|
75
75
|
return copyPE;
|
|
@@ -279,7 +279,7 @@ SVFStmt* SVFIR::addBlackHoleAddrStmt(NodeID node)
|
|
|
279
279
|
if(Options::HandBlackHole())
|
|
280
280
|
return pag->addAddrStmt(pag->getBlackHoleNode(), node);
|
|
281
281
|
else
|
|
282
|
-
return pag->addCopyStmt(pag->getNullPtr(), node);
|
|
282
|
+
return pag->addCopyStmt(pag->getNullPtr(), node, CopyStmt::COPYVAL);
|
|
283
283
|
}
|
|
284
284
|
|
|
285
285
|
/*!
|
package/svf/lib/Util/Options.cpp
CHANGED
|
@@ -853,4 +853,12 @@ const Option<bool> Options::RunUncallFuncs(
|
|
|
853
853
|
"run-uncall-fun","Skip Gep Unknown Index",false);
|
|
854
854
|
const Option<bool> Options::ICFGMergeAdjacentNodes(
|
|
855
855
|
"icfg-merge-adjnodes","ICFG Simplification - Merge Adjacent Nodes in the Same Basic Block.",false);
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
const Option<u32_t> Options::AEPrecision(
|
|
859
|
+
"precision",
|
|
860
|
+
"symbolic abstraction precision for float",
|
|
861
|
+
0
|
|
862
|
+
);
|
|
863
|
+
|
|
856
864
|
} // namespace SVF.
|
|
@@ -358,16 +358,52 @@ protected:
|
|
|
358
358
|
return edge;
|
|
359
359
|
}
|
|
360
360
|
|
|
361
|
-
|
|
362
|
-
inline CopyStmt* addCopyEdge(NodeID src, NodeID dst)
|
|
361
|
+
inline CopyStmt* addCopyEdge(NodeID src, NodeID dst, CopyStmt::CopyKind kind)
|
|
363
362
|
{
|
|
364
|
-
if(CopyStmt *edge = pag->addCopyStmt(src, dst))
|
|
363
|
+
if(CopyStmt *edge = pag->addCopyStmt(src, dst, kind))
|
|
365
364
|
{
|
|
366
365
|
setCurrentBBAndValueForPAGEdge(edge);
|
|
367
366
|
return edge;
|
|
368
367
|
}
|
|
369
368
|
return nullptr;
|
|
370
369
|
}
|
|
370
|
+
|
|
371
|
+
inline CopyStmt::CopyKind getCopyKind(const Value* val)
|
|
372
|
+
{
|
|
373
|
+
// COPYVAL, ZEXT, SEXT, BITCAST, FPTRUNC, FPTOUI, FPTOSI, UITOFP, SITOFP, INTTOPTR, PTRTOINT
|
|
374
|
+
if (const Instruction* inst = SVFUtil::dyn_cast<Instruction>(val))
|
|
375
|
+
{
|
|
376
|
+
switch (inst->getOpcode())
|
|
377
|
+
{
|
|
378
|
+
case Instruction::ZExt:
|
|
379
|
+
return CopyStmt::ZEXT;
|
|
380
|
+
case Instruction::SExt:
|
|
381
|
+
return CopyStmt::SEXT;
|
|
382
|
+
case Instruction::BitCast:
|
|
383
|
+
return CopyStmt::BITCAST;
|
|
384
|
+
case Instruction ::Trunc:
|
|
385
|
+
return CopyStmt::TRUNC;
|
|
386
|
+
case Instruction::FPTrunc:
|
|
387
|
+
return CopyStmt::FPTRUNC;
|
|
388
|
+
case Instruction::FPToUI:
|
|
389
|
+
return CopyStmt::FPTOUI;
|
|
390
|
+
case Instruction::FPToSI:
|
|
391
|
+
return CopyStmt::FPTOSI;
|
|
392
|
+
case Instruction::UIToFP:
|
|
393
|
+
return CopyStmt::UITOFP;
|
|
394
|
+
case Instruction::SIToFP:
|
|
395
|
+
return CopyStmt::SITOFP;
|
|
396
|
+
case Instruction::IntToPtr:
|
|
397
|
+
return CopyStmt::INTTOPTR;
|
|
398
|
+
case Instruction::PtrToInt:
|
|
399
|
+
return CopyStmt::PTRTOINT;
|
|
400
|
+
default:
|
|
401
|
+
return CopyStmt::COPYVAL;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
assert (false && "Unknown cast inst!");
|
|
405
|
+
}
|
|
406
|
+
|
|
371
407
|
/// Add Copy edge
|
|
372
408
|
inline void addPhiStmt(NodeID res, NodeID opnd, const ICFGNode* pred)
|
|
373
409
|
{
|
|
@@ -1263,8 +1263,27 @@ SVFConstantData* LLVMModuleSet::getSVFConstantData(const ConstantData* cd)
|
|
|
1263
1263
|
{
|
|
1264
1264
|
double dval = 0;
|
|
1265
1265
|
// TODO: Why only double is considered? What about float?
|
|
1266
|
-
if(cfp->isNormalFP()
|
|
1267
|
-
|
|
1266
|
+
if (cfp->isNormalFP())
|
|
1267
|
+
{
|
|
1268
|
+
if (&cfp->getValueAPF().getSemantics()== &llvm::APFloatBase::IEEEsingle())
|
|
1269
|
+
{
|
|
1270
|
+
dval = cfp->getValueAPF().convertToFloat();
|
|
1271
|
+
}
|
|
1272
|
+
else if (&cfp->getValueAPF().getSemantics()== &llvm::APFloatBase::IEEEdouble())
|
|
1273
|
+
{
|
|
1274
|
+
dval = cfp->getValueAPF().convertToDouble();
|
|
1275
|
+
}
|
|
1276
|
+
else
|
|
1277
|
+
{
|
|
1278
|
+
assert (false && "Unsupported floating point type");
|
|
1279
|
+
abort();
|
|
1280
|
+
}
|
|
1281
|
+
}
|
|
1282
|
+
else
|
|
1283
|
+
{
|
|
1284
|
+
// other cfp type, like isZero(), isInfinity(), isNegative(), etc.
|
|
1285
|
+
// do nothing
|
|
1286
|
+
}
|
|
1268
1287
|
svfcd = new SVFConstantFP(getSVFType(cd->getType()), dval);
|
|
1269
1288
|
}
|
|
1270
1289
|
else if(SVFUtil::isa<ConstantPointerNull>(cd))
|
|
@@ -374,7 +374,7 @@ void SVFIRBuilder::processCE(const Value* val)
|
|
|
374
374
|
const SVFValue* cval = getCurrentValue();
|
|
375
375
|
const SVFBasicBlock* cbb = getCurrentBB();
|
|
376
376
|
setCurrentLocation(castce, nullptr);
|
|
377
|
-
addCopyEdge(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(opnd)), pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(castce)));
|
|
377
|
+
addCopyEdge(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(opnd)), pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(castce)), CopyStmt::BITCAST);
|
|
378
378
|
setCurrentLocation(cval, cbb);
|
|
379
379
|
}
|
|
380
380
|
else if (const ConstantExpr* selectce = isSelectConstantExpr(ref))
|
|
@@ -406,7 +406,7 @@ void SVFIRBuilder::processCE(const Value* val)
|
|
|
406
406
|
const SVFBasicBlock* cbb = getCurrentBB();
|
|
407
407
|
const SVFValue* cval = getCurrentValue();
|
|
408
408
|
setCurrentLocation(ptr2Intce, nullptr);
|
|
409
|
-
addCopyEdge(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(opnd)), pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(ptr2Intce)));
|
|
409
|
+
addCopyEdge(pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(opnd)), pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(ptr2Intce)), CopyStmt::PTRTOINT);
|
|
410
410
|
setCurrentLocation(cval, cbb);
|
|
411
411
|
}
|
|
412
412
|
else if(isTruncConstantExpr(ref) || isCmpConstantExpr(ref))
|
|
@@ -530,7 +530,7 @@ void SVFIRBuilder::InitialGlobal(const GlobalVariable *gvar, Constant *C,
|
|
|
530
530
|
addStoreEdge(src, field);
|
|
531
531
|
/// src should not point to anything yet
|
|
532
532
|
if (C->getType()->isPtrOrPtrVectorTy() && src != pag->getNullPtr())
|
|
533
|
-
addCopyEdge(pag->getNullPtr(), src);
|
|
533
|
+
addCopyEdge(pag->getNullPtr(), src, CopyStmt::COPYVAL);
|
|
534
534
|
}
|
|
535
535
|
}
|
|
536
536
|
else if (SVFUtil::isa<ConstantArray, ConstantStruct>(C))
|
|
@@ -615,7 +615,7 @@ void SVFIRBuilder::visitGlobal(SVFModule* svfModule)
|
|
|
615
615
|
NodeID src = pag->getValueNode(LLVMModuleSet::getLLVMModuleSet()->getSVFValue(alias->getAliasee()));
|
|
616
616
|
processCE(alias->getAliasee());
|
|
617
617
|
setCurrentLocation(alias, nullptr);
|
|
618
|
-
addCopyEdge(src,dst);
|
|
618
|
+
addCopyEdge(src, dst, CopyStmt::COPYVAL);
|
|
619
619
|
}
|
|
620
620
|
}
|
|
621
621
|
}
|
|
@@ -743,7 +743,7 @@ void SVFIRBuilder::visitCastInst(CastInst &inst)
|
|
|
743
743
|
opnd = stripAllCasts(opnd);
|
|
744
744
|
|
|
745
745
|
NodeID src = getValueNode(opnd);
|
|
746
|
-
addCopyEdge(src, dst);
|
|
746
|
+
addCopyEdge(src, dst, getCopyKind(&inst));
|
|
747
747
|
}
|
|
748
748
|
}
|
|
749
749
|
|
|
@@ -980,7 +980,7 @@ void SVFIRBuilder::visitVAArgInst(VAArgInst &inst)
|
|
|
980
980
|
NodeID dst = getValueNode(&inst);
|
|
981
981
|
Value* opnd = inst.getPointerOperand();
|
|
982
982
|
NodeID src = getValueNode(opnd);
|
|
983
|
-
addCopyEdge(src,dst);
|
|
983
|
+
addCopyEdge(src, dst, CopyStmt::COPYVAL);
|
|
984
984
|
}
|
|
985
985
|
|
|
986
986
|
/// <result> = freeze ty <val>
|
|
@@ -994,7 +994,7 @@ void SVFIRBuilder::visitFreezeInst(FreezeInst &inst)
|
|
|
994
994
|
{
|
|
995
995
|
Value* opnd = inst.getOperand(i);
|
|
996
996
|
NodeID src = getValueNode(opnd);
|
|
997
|
-
addCopyEdge(src,dst);
|
|
997
|
+
addCopyEdge(src, dst, CopyStmt::COPYVAL);
|
|
998
998
|
}
|
|
999
999
|
}
|
|
1000
1000
|
|
|
@@ -165,7 +165,7 @@ void SVFIRBuilder::handleExtCall(const CallBase* cs, const SVFFunction* svfCalle
|
|
|
165
165
|
else
|
|
166
166
|
addComplexConsForExt(cs->getArgOperand(0), cs->getArgOperand(1), nullptr);
|
|
167
167
|
if(SVFUtil::isa<PointerType>(cs->getType()))
|
|
168
|
-
addCopyEdge(getValueNode(cs->getArgOperand(0)), getValueNode(cs));
|
|
168
|
+
addCopyEdge(getValueNode(cs->getArgOperand(0)), getValueNode(cs), CopyStmt::COPYVAL);
|
|
169
169
|
}
|
|
170
170
|
else if(isMemsetExtFun(svfCallee))
|
|
171
171
|
{
|
|
@@ -184,7 +184,7 @@ void SVFIRBuilder::handleExtCall(const CallBase* cs, const SVFFunction* svfCalle
|
|
|
184
184
|
addStoreEdge(getValueNode(cs->getArgOperand(1)),dField);
|
|
185
185
|
}
|
|
186
186
|
if(SVFUtil::isa<PointerType>(cs->getType()))
|
|
187
|
-
addCopyEdge(getValueNode(cs->getArgOperand(0)), getValueNode(cs));
|
|
187
|
+
addCopyEdge(getValueNode(cs->getArgOperand(0)), getValueNode(cs), CopyStmt::COPYVAL);
|
|
188
188
|
}
|
|
189
189
|
else if(svfCallee->getName().compare("dlsym") == 0)
|
|
190
190
|
{
|
|
@@ -221,7 +221,7 @@ void SVFIRBuilder::handleExtCall(const CallBase* cs, const SVFFunction* svfCalle
|
|
|
221
221
|
if (const Function *fn = getHookFn(src))
|
|
222
222
|
{
|
|
223
223
|
NodeID srcNode = getValueNode(fn);
|
|
224
|
-
addCopyEdge(srcNode, getValueNode(cs));
|
|
224
|
+
addCopyEdge(srcNode, getValueNode(cs), CopyStmt::COPYVAL);
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
else if(svfCallee->getName().find("_ZSt29_Rb_tree_insert_and_rebalancebPSt18_Rb_tree_node_baseS0_RS_") != std::string::npos)
|