svf-tools 1.0.440 → 1.0.443
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/.gitignore +1 -0
- package/SVF-doxygen/html/html/AbstractPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenHCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenHLCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenLCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSFR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSFR_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenWaveDiff_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Annotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BDDExpr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/BDDExpr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BitVector_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/BitVector_8h_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/BreakConstantExpr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp.html +86 -0
- package/SVF-doxygen/html/html/CFGNormalizer_8cpp_source.html +104 -0
- package/SVF-doxygen/html/html/CFGNormalizer_8h.html +95 -0
- package/SVF-doxygen/html/html/CFGNormalizer_8h_source.html +95 -0
- package/SVF-doxygen/html/html/CFLAlias_8h.html +100 -0
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +136 -0
- package/SVF-doxygen/html/html/CFLGrammar_8cpp.html +81 -0
- package/SVF-doxygen/html/html/CFLGrammar_8cpp_source.html +90 -0
- package/SVF-doxygen/html/html/CFLGrammar_8h.html +97 -0
- package/SVF-doxygen/html/html/CFLGrammar_8h_source.html +114 -0
- package/SVF-doxygen/html/html/CFLGraph_8cpp.html +96 -0
- package/SVF-doxygen/html/html/CFLGraph_8cpp_source.html +123 -0
- package/SVF-doxygen/html/html/CFLGraph_8h.html +124 -0
- package/SVF-doxygen/html/html/CFLGraph_8h_source.html +114 -0
- package/SVF-doxygen/html/html/CFLSolver_8cpp.html +80 -0
- package/SVF-doxygen/html/html/CFLSolver_8cpp_source.html +107 -0
- package/SVF-doxygen/html/html/CFLSolver_8h.html +6 -5
- package/SVF-doxygen/html/html/CFLSolver_8h_source.html +27 -33
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CPPUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CPPUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CSC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Casting_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConditionalPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsGNode_8h_source.html +6 -6
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ContextDDA_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CoreBitVector_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DCHG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAVFSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DataFlowUtil_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/DataFlowUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DoubleFreeChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExeState_8cpp_source.html +12 -9
- package/SVF-doxygen/html/html/ExeState_8h_source.html +22 -20
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FileChecker_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitiveTBHC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GEPTypeBridgeIterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp.html +94 -0
- package/SVF-doxygen/html/html/GrammarBuilder_8cpp_source.html +92 -0
- package/SVF-doxygen/html/html/GrammarBuilder_8h.html +96 -0
- package/SVF-doxygen/html/html/GrammarBuilder_8h_source.html +87 -0
- package/SVF-doxygen/html/html/Graph2Json_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Graph2Json_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GraphPrinter_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GraphReachSolver_8h.html +96 -0
- package/SVF-doxygen/html/html/GraphReachSolver_8h_source.html +113 -0
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ICFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/IRAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/IRGraph_8h_source.html +3 -3
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LeakChecker_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LocationSet_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LocationSet_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MHP_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAResultValidator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemPartition_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MutablePointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/NodeIDAllocator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/OfflineConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/OfflineConsG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/Options_8cpp_source.html +7 -2
- package/SVF-doxygen/html/html/Options_8h_source.html +7 -2
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PAGBuilderFromFile_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PCG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +2 -2
- package/SVF-doxygen/html/html/PTAStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PTAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PathCondAllocator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PathCondAllocator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToCache_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PersistentPointsToDS_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +5 -5
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/PointsTo_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SCC_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFBasicTypes_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFGStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFVariables_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberAnnotator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SrcSnkDDA_8h.html +3 -3
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +61 -61
- package/SVF-doxygen/html/html/SrcSnkSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ThreadCallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeBasedHeapCloning_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Util_2BasicTypes_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/VFG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/VFG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/VersionedFlowSensitiveStat_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VersionedFlowSensitive_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WPAFSSolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WPASolver_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WPAStat_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WorkList_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Z3Expr_8h_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +302 -288
- package/SVF-doxygen/html/html/cfl_8cpp.html +171 -0
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +95 -0
- package/SVF-doxygen/html/html/classSVF_1_1Andersen-members.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase-members.html +39 -39
- package/SVF-doxygen/html/html/classSVF_1_1AndersenBase.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD-members.html +56 -56
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHCD.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD-members.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1AndersenHLCD.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD-members.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1AndersenLCD.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD-members.html +52 -52
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR-members.html +59 -59
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSFR.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff-members.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1AndersenWaveDiff.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl-members.html +33 -33
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer-members.html +90 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFGNormalizer.html +458 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias-members.html +216 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +801 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge-members.html +96 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.html +216 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar-members.html +110 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.html +591 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGrammar.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph-members.html +122 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.html +756 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLGraph.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode-members.html +118 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.html +257 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver-members.html +17 -28
- package/SVF-doxygen/html/html/classSVF_1_1CFLSolver.html +181 -548
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl-members.html +36 -36
- package/SVF-doxygen/html/html/classSVF_1_1CondPTAImpl.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode-members.html +26 -26
- package/SVF-doxygen/html/html/classSVF_1_1ConstraintNode.html +43 -43
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA-members.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker-members.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +64 -64
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1ExeState-members.html +16 -14
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +153 -67
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA-members.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1FSMPTA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker-members.html +57 -57
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.html +66 -66
- package/SVF-doxygen/html/html/classSVF_1_1FileChecker.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA-members.html +48 -48
- package/SVF-doxygen/html/html/classSVF_1_1FlowDDA.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive-members.html +47 -47
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitive.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC-members.html +59 -59
- package/SVF-doxygen/html/html/classSVF_1_1FlowSensitiveTBHC.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.html +8 -24
- package/SVF-doxygen/html/html/classSVF_1_1GenericEdge.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.html +10 -9
- package/SVF-doxygen/html/html/classSVF_1_1GenericGraph.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.html +21 -20
- package/SVF-doxygen/html/html/classSVF_1_1GenericNode.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase-members.html +93 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +399 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder-members.html +85 -0
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBuilder.html +226 -0
- package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver-members.html +106 -0
- package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.html +937 -0
- package/SVF-doxygen/html/html/classSVF_1_1GraphReachSolver.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker-members.html +55 -55
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +81 -81
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1Options-members.html +80 -75
- package/SVF-doxygen/html/html/classSVF_1_1Options.html +130 -0
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis-members.html +25 -25
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +17 -16
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA-members.html +51 -51
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.html +207 -207
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkDDA.png +0 -0
- package/SVF-doxygen/html/html/classSVF_1_1SrcSnkSolver.html +0 -12
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard-members.html +42 -42
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis-members.html +45 -45
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive-members.html +61 -61
- package/SVF-doxygen/html/html/classSVF_1_1VersionedFlowSensitive.html +5 -5
- package/SVF-doxygen/html/html/classes.html +103 -101
- package/SVF-doxygen/html/html/cuddInt_8c.html +6 -6
- package/SVF-doxygen/html/html/cuddInt_8c_source.html +2 -2
- package/SVF-doxygen/html/html/cudd_8h.html +4 -4
- package/SVF-doxygen/html/html/dda_8cpp.html +2 -46
- package/SVF-doxygen/html/html/dda_8cpp_source.html +4 -5
- package/SVF-doxygen/html/html/dir_1870ebf480d659cc38d2dd7ac3aa8993.html +2 -0
- package/SVF-doxygen/html/html/dir_4eeb864c4eec08c7d6b9d3b0352cfdde.html +2 -0
- package/SVF-doxygen/html/html/dir_95e22971b5dbae2382075a3453e365b4.html +2 -0
- package/SVF-doxygen/html/html/dir_97aefd0d527b934f1d99a682da8fe6a9.html +2 -0
- package/SVF-doxygen/html/html/dir_98f9a352f241e0e917d4efaa4086f6e8.html +89 -0
- package/SVF-doxygen/html/html/dir_ae8aa099e368efaa962140c6624142bc.html +91 -0
- package/SVF-doxygen/html/html/dir_d44c64559bbebec7f509842c48db8b23.html +2 -0
- package/SVF-doxygen/html/html/dir_e6cca4e14eddbb730e0cbe3cab632ce5.html +83 -0
- package/SVF-doxygen/html/html/dir_fa02919a30fec2d2c2d591b4d920d648.html +2 -0
- package/SVF-doxygen/html/html/files.html +268 -252
- package/SVF-doxygen/html/html/functions.html +2 -1
- package/SVF-doxygen/html/html/functions_0x7e.html +18 -0
- package/SVF-doxygen/html/html/functions_a.html +16 -14
- package/SVF-doxygen/html/html/functions_b.html +16 -5
- package/SVF-doxygen/html/html/functions_c.html +69 -26
- package/SVF-doxygen/html/html/functions_d.html +3 -1
- package/SVF-doxygen/html/html/functions_e.html +22 -4
- package/SVF-doxygen/html/html/functions_eval.html +0 -6
- package/SVF-doxygen/html/html/functions_eval_c.html +9 -0
- package/SVF-doxygen/html/html/functions_eval_f.html +0 -3
- package/SVF-doxygen/html/html/functions_f.html +31 -24
- package/SVF-doxygen/html/html/functions_func.html +18 -10
- package/SVF-doxygen/html/html/functions_func_0x7e.html +18 -0
- package/SVF-doxygen/html/html/functions_func_b.html +19 -8
- package/SVF-doxygen/html/html/functions_func_c.html +42 -18
- package/SVF-doxygen/html/html/functions_func_d.html +4 -2
- package/SVF-doxygen/html/html/functions_func_e.html +13 -1
- package/SVF-doxygen/html/html/functions_func_f.html +6 -3
- package/SVF-doxygen/html/html/functions_func_g.html +56 -10
- package/SVF-doxygen/html/html/functions_func_h.html +12 -2
- package/SVF-doxygen/html/html/functions_func_i.html +19 -9
- package/SVF-doxygen/html/html/functions_func_l.html +4 -1
- package/SVF-doxygen/html/html/functions_func_n.html +7 -1
- package/SVF-doxygen/html/html/functions_func_p.html +8 -4
- package/SVF-doxygen/html/html/functions_func_s.html +20 -6
- package/SVF-doxygen/html/html/functions_func_v.html +3 -2
- package/SVF-doxygen/html/html/functions_g.html +86 -21
- package/SVF-doxygen/html/html/functions_h.html +15 -5
- package/SVF-doxygen/html/html/functions_i.html +27 -12
- package/SVF-doxygen/html/html/functions_l.html +15 -9
- package/SVF-doxygen/html/html/functions_n.html +18 -3
- package/SVF-doxygen/html/html/functions_o.html +3 -3
- package/SVF-doxygen/html/html/functions_p.html +22 -13
- package/SVF-doxygen/html/html/functions_r.html +10 -5
- package/SVF-doxygen/html/html/functions_s.html +51 -17
- package/SVF-doxygen/html/html/functions_t.html +6 -0
- package/SVF-doxygen/html/html/functions_type_c.html +5 -1
- package/SVF-doxygen/html/html/functions_type_g.html +6 -3
- package/SVF-doxygen/html/html/functions_type_i.html +4 -2
- package/SVF-doxygen/html/html/functions_type_l.html +1 -1
- package/SVF-doxygen/html/html/functions_type_n.html +6 -3
- package/SVF-doxygen/html/html/functions_type_p.html +9 -0
- package/SVF-doxygen/html/html/functions_type_s.html +6 -0
- package/SVF-doxygen/html/html/functions_type_w.html +3 -1
- package/SVF-doxygen/html/html/functions_v.html +2 -1
- package/SVF-doxygen/html/html/functions_vars.html +2 -1
- package/SVF-doxygen/html/html/functions_vars_c.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_e.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_f.html +9 -0
- package/SVF-doxygen/html/html/functions_vars_g.html +17 -1
- package/SVF-doxygen/html/html/functions_vars_i.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_l.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_n.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_r.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_s.html +16 -0
- package/SVF-doxygen/html/html/functions_vars_t.html +6 -0
- package/SVF-doxygen/html/html/functions_vars_w.html +3 -1
- package/SVF-doxygen/html/html/functions_w.html +15 -1
- package/SVF-doxygen/html/html/globals_func_i.html +3 -10
- package/SVF-doxygen/html/html/globals_func_m.html +12 -11
- package/SVF-doxygen/html/html/globals_func_s.html +1 -0
- package/SVF-doxygen/html/html/globals_i.html +3 -10
- package/SVF-doxygen/html/html/globals_m.html +14 -13
- package/SVF-doxygen/html/html/globals_s.html +8 -7
- package/SVF-doxygen/html/html/hierarchy.html +433 -417
- package/SVF-doxygen/html/html/mta_8cpp.html +2 -46
- package/SVF-doxygen/html/html/mta_8cpp_source.html +3 -4
- package/SVF-doxygen/html/html/namespaceSVF.html +83 -6
- package/SVF-doxygen/html/html/namespacellvm.html +9 -0
- package/SVF-doxygen/html/html/namespacemembers_c.html +1 -1
- package/SVF-doxygen/html/html/namespacemembers_g.html +11 -2
- package/SVF-doxygen/html/html/namespacemembers_type.html +10 -1
- package/SVF-doxygen/html/html/saber_8cpp.html +2 -46
- package/SVF-doxygen/html/html/saber_8cpp_source.html +4 -5
- package/SVF-doxygen/html/html/search/all_0.js +1 -1
- package/SVF-doxygen/html/html/search/all_1.js +4 -4
- package/SVF-doxygen/html/html/search/all_10.js +10 -8
- package/SVF-doxygen/html/html/search/all_12.js +3 -2
- package/SVF-doxygen/html/html/search/all_13.js +25 -16
- package/SVF-doxygen/html/html/search/all_14.js +6 -4
- package/SVF-doxygen/html/html/search/all_16.js +2 -2
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_1b.js +6 -0
- package/SVF-doxygen/html/html/search/all_2.js +6 -4
- package/SVF-doxygen/html/html/search/all_3.js +27 -4
- package/SVF-doxygen/html/html/search/all_4.js +3 -2
- package/SVF-doxygen/html/html/search/all_5.js +6 -0
- package/SVF-doxygen/html/html/search/all_6.js +7 -4
- package/SVF-doxygen/html/html/search/all_7.js +40 -13
- package/SVF-doxygen/html/html/search/all_8.js +4 -1
- package/SVF-doxygen/html/html/search/all_9.js +8 -6
- package/SVF-doxygen/html/html/search/all_c.js +6 -4
- package/SVF-doxygen/html/html/search/all_d.js +2 -2
- package/SVF-doxygen/html/html/search/all_e.js +8 -4
- package/SVF-doxygen/html/html/search/all_f.js +3 -3
- package/SVF-doxygen/html/html/search/classes_2.js +7 -0
- package/SVF-doxygen/html/html/search/classes_3.js +1 -0
- package/SVF-doxygen/html/html/search/classes_5.js +1 -0
- package/SVF-doxygen/html/html/search/classes_6.js +7 -0
- package/SVF-doxygen/html/html/search/enumvalues_0.js +0 -2
- package/SVF-doxygen/html/html/search/enumvalues_2.js +3 -0
- package/SVF-doxygen/html/html/search/enumvalues_5.js +0 -1
- package/SVF-doxygen/html/html/search/files_2.js +11 -1
- package/SVF-doxygen/html/html/search/files_6.js +4 -1
- package/SVF-doxygen/html/html/search/functions_0.js +4 -2
- package/SVF-doxygen/html/html/search/functions_1.js +6 -4
- package/SVF-doxygen/html/html/search/functions_10.js +8 -4
- package/SVF-doxygen/html/html/search/functions_13.js +1 -1
- package/SVF-doxygen/html/html/search/functions_16.js +6 -0
- package/SVF-doxygen/html/html/search/functions_2.js +8 -0
- package/SVF-doxygen/html/html/search/functions_3.js +2 -2
- package/SVF-doxygen/html/html/search/functions_4.js +4 -0
- package/SVF-doxygen/html/html/search/functions_5.js +3 -3
- package/SVF-doxygen/html/html/search/functions_6.js +22 -10
- package/SVF-doxygen/html/html/search/functions_7.js +4 -1
- package/SVF-doxygen/html/html/search/functions_8.js +5 -4
- package/SVF-doxygen/html/html/search/functions_a.js +1 -0
- package/SVF-doxygen/html/html/search/functions_b.js +1 -1
- package/SVF-doxygen/html/html/search/functions_c.js +2 -0
- package/SVF-doxygen/html/html/search/functions_e.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_11.js +1 -0
- package/SVF-doxygen/html/html/search/typedefs_15.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_2.js +3 -2
- package/SVF-doxygen/html/html/search/typedefs_6.js +6 -3
- package/SVF-doxygen/html/html/search/typedefs_8.js +2 -2
- package/SVF-doxygen/html/html/search/typedefs_b.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_d.js +3 -3
- package/SVF-doxygen/html/html/search/typedefs_f.js +2 -0
- package/SVF-doxygen/html/html/search/variables_0.js +1 -1
- package/SVF-doxygen/html/html/search/variables_12.js +1 -0
- package/SVF-doxygen/html/html/search/variables_13.js +5 -0
- package/SVF-doxygen/html/html/search/variables_14.js +5 -3
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_3.js +2 -0
- package/SVF-doxygen/html/html/search/variables_5.js +3 -1
- package/SVF-doxygen/html/html/search/variables_6.js +3 -0
- package/SVF-doxygen/html/html/search/variables_7.js +5 -1
- package/SVF-doxygen/html/html/search/variables_9.js +1 -0
- package/SVF-doxygen/html/html/search/variables_c.js +1 -0
- package/SVF-doxygen/html/html/search/variables_d.js +1 -1
- package/SVF-doxygen/html/html/search/variables_e.js +2 -0
- package/SVF-doxygen/html/html/st_8c.html +4 -4
- package/SVF-doxygen/html/html/st_8c_source.html +2 -2
- package/SVF-doxygen/html/html/st_8h.html +4 -4
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4-members.html +87 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.html +381 -0
- package/SVF-doxygen/html/html/structllvm_1_1DOTGraphTraits_3_01CFLGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.html +100 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01Inverse_3_01SVF_1_1CFLNode_01_5_01_4_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4-members.html +81 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.html +122 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLGraph_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.html +96 -0
- package/SVF-doxygen/html/html/structllvm_1_1GraphTraits_3_01SVF_1_1CFLNode_01_5_01_4.png +0 -0
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1ExeState_01_4.html +5 -5
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +10 -54
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +8 -9
- package/SVF-doxygen/html/html/tools_2CFL_2CMakeLists_8txt.html +102 -0
- package/SVF-doxygen/html/html/wpa_8cpp.html +2 -46
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +3 -4
- package/include/CFL/CFGNormalizer.h +70 -0
- package/include/CFL/CFLAlias.h +124 -0
- package/include/CFL/CFLGrammar.h +127 -0
- package/include/CFL/CFLSolver.h +94 -0
- package/include/CFL/GrammarBuilder.h +65 -0
- package/include/Graphs/CFLGraph.h +175 -0
- package/include/Graphs/IRGraph.h +1 -1
- package/include/MemoryModel/PointerAnalysis.h +3 -3
- package/include/SABER/SrcSnkDDA.h +3 -2
- package/include/Util/ExeState.h +6 -1
- package/include/Util/GraphReachSolver.h +186 -0
- package/include/Util/Options.h +6 -0
- package/lib/CFL/CFGNormalizer.cpp +329 -0
- package/lib/CFL/CFLGrammar.cpp +101 -0
- package/lib/CFL/CFLSolver.cpp +106 -0
- package/lib/CFL/GrammarBuilder.cpp +155 -0
- package/lib/CMakeLists.txt +1 -0
- package/lib/Graphs/CFLGraph.cpp +225 -0
- package/lib/Util/ExeState.cpp +20 -36
- package/lib/Util/Options.cpp +31 -0
- package/package.json +1 -1
- package/tools/CFL/CMakeLists.txt +12 -0
- package/tools/CFL/cfl.cpp +80 -0
- package/tools/CMakeLists.txt +1 -0
- package/tools/DDA/dda.cpp +0 -3
- package/tools/Example/svf-ex.cpp +0 -3
- package/tools/MTA/mta.cpp +0 -4
- package/tools/SABER/saber.cpp +0 -3
- package/tools/WPA/wpa.cpp +0 -4
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
//===----- CFLGraph.cpp -- Graph for context-free language reachability analysis --//
|
|
2
|
+
//
|
|
3
|
+
// SVF: Static Value-Flow Analysis
|
|
4
|
+
//
|
|
5
|
+
// Copyright (C) <2013-> <Yulei Sui>
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
// This program is free software: you can redistribute it and/or modify
|
|
9
|
+
// it under the terms of the GNU General Public License as published by
|
|
10
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
// (at your option) any later version.
|
|
12
|
+
|
|
13
|
+
// This program is distributed in the hope that it will be useful,
|
|
14
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
// GNU General Public License for more details.
|
|
17
|
+
|
|
18
|
+
// You should have received a copy of the GNU General Public License
|
|
19
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
//
|
|
21
|
+
//===----------------------------------------------------------------------===//
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
* CFLGraph.cpp
|
|
26
|
+
*
|
|
27
|
+
* Created on: March 5, 2022
|
|
28
|
+
* Author: Yulei Sui
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
#include "Util/Options.h"
|
|
32
|
+
#include "Graphs/CFLGraph.h"
|
|
33
|
+
#include "Util/SVFUtil.h"
|
|
34
|
+
|
|
35
|
+
using namespace SVF;
|
|
36
|
+
|
|
37
|
+
//// Build graph from file
|
|
38
|
+
void CFLGraph::build(std::string filename){
|
|
39
|
+
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
void CFLGraph::addCFLNode(NodeID id, CFLNode* node){
|
|
43
|
+
addGNode(id, node);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const CFLEdge* CFLGraph::addCFLEdge(CFLNode* src, CFLNode* dst, CFLEdge::GEdgeFlag label){
|
|
47
|
+
CFLEdge* edge = new CFLEdge(src,dst,label);
|
|
48
|
+
if(cflEdgeSet.insert(edge).second){
|
|
49
|
+
src->addOutgoingEdge(edge);
|
|
50
|
+
dst->addIncomingEdge(edge);
|
|
51
|
+
return edge;
|
|
52
|
+
}
|
|
53
|
+
else
|
|
54
|
+
return nullptr;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const CFLEdge* CFLGraph::hasEdge(CFLNode* src, CFLNode* dst, CFLEdge::GEdgeFlag label){
|
|
58
|
+
CFLEdge edge(src,dst,label);
|
|
59
|
+
auto it = cflEdgeSet.find(&edge);
|
|
60
|
+
if(it !=cflEdgeSet.end())
|
|
61
|
+
return *it;
|
|
62
|
+
else
|
|
63
|
+
return nullptr;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
void CFLGraph::dump(const std::string& filename)
|
|
67
|
+
{
|
|
68
|
+
GraphPrinter::WriteGraphToFile(SVFUtil::outs(), filename, this);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
void CFLGraph::view()
|
|
72
|
+
{
|
|
73
|
+
llvm::ViewGraph(this, "CFL Graph");
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
void CFLGraph::buildFromDot(std::string fileName)
|
|
77
|
+
{
|
|
78
|
+
std::cout << "Building CFL Graph from dot file: " << fileName << "..\n";
|
|
79
|
+
std::string lineString;
|
|
80
|
+
std::ifstream inputFile(fileName);
|
|
81
|
+
|
|
82
|
+
std::regex reg("Node(\\w+)\\s*->\\s*Node(\\w+)\\s*\\[.*label=(.*)\\]");
|
|
83
|
+
|
|
84
|
+
std::cout << std::boolalpha;
|
|
85
|
+
u32_t lineNum = 0 ;
|
|
86
|
+
|
|
87
|
+
while (getline(inputFile, lineString))
|
|
88
|
+
{
|
|
89
|
+
lineNum += 1;
|
|
90
|
+
std::smatch matches;
|
|
91
|
+
if (std::regex_search(lineString, matches, reg))
|
|
92
|
+
{
|
|
93
|
+
CFLNode *src, *dst;
|
|
94
|
+
if (hasGNode(std::stoul(matches.str(1), nullptr, 16))==false) {
|
|
95
|
+
src = new CFLNode(std::stoul(matches.str(1), nullptr, 16));
|
|
96
|
+
addCFLNode(src->getId(), src);
|
|
97
|
+
} else {
|
|
98
|
+
src = getGNode(std::stoul(matches.str(1), nullptr, 16));
|
|
99
|
+
}
|
|
100
|
+
if (hasGNode(std::stoul(matches.str(2), nullptr, 16))==false){
|
|
101
|
+
dst = new CFLNode(std::stoul(matches.str(2), nullptr, 16));
|
|
102
|
+
addCFLNode(dst->getId(), dst);
|
|
103
|
+
}else{
|
|
104
|
+
dst = getGNode(std::stoul(matches.str(2), nullptr, 16));
|
|
105
|
+
}
|
|
106
|
+
if (externMap == false){
|
|
107
|
+
if (label2SymMap.find(matches.str(3)) != label2SymMap.end()) {
|
|
108
|
+
addCFLEdge(src, dst, label2SymMap[matches.str(3)]);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
label2SymMap.insert({matches.str(3), current++});
|
|
112
|
+
addCFLEdge(src, dst, label2SymMap[matches.str(3)]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
if (label2SymMap.find(matches.str(3)) != label2SymMap.end()) {
|
|
117
|
+
addCFLEdge(src, dst, label2SymMap[matches.str(3)]);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
if(Options::FlexSymMap == true){
|
|
121
|
+
label2SymMap.insert({matches.str(3), current++});
|
|
122
|
+
addCFLEdge(src, dst, label2SymMap[matches.str(3)]);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
std::string msg = "In line " + std::to_string(lineNum) + " sym can not find in grammar, please correct the input dot or set --flexsymmap.";
|
|
126
|
+
SVFUtil::errMsg(msg);
|
|
127
|
+
std::cout << msg;
|
|
128
|
+
abort();
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
inputFile.close();
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
void CFLGraph::setMap(Map<std::string, Symbol>* terminals, Map<std::string, Symbol>* nonterminals)
|
|
138
|
+
{
|
|
139
|
+
externMap = true;
|
|
140
|
+
for(auto pairV : *terminals){
|
|
141
|
+
if(label2SymMap.find(pairV.first) == label2SymMap.end()){
|
|
142
|
+
label2SymMap.insert(pairV);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
for(auto pairV : *nonterminals){
|
|
147
|
+
if(label2SymMap.find(pairV.first) == label2SymMap.end()){
|
|
148
|
+
label2SymMap.insert(pairV);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
current = label2SymMap.size();
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
namespace llvm
|
|
157
|
+
{
|
|
158
|
+
/*!
|
|
159
|
+
* Write value flow graph into dot file for debugging
|
|
160
|
+
*/
|
|
161
|
+
template<>
|
|
162
|
+
struct DOTGraphTraits<CFLGraph*> : public DefaultDOTGraphTraits
|
|
163
|
+
{
|
|
164
|
+
|
|
165
|
+
typedef CFLNode NodeType;
|
|
166
|
+
|
|
167
|
+
DOTGraphTraits(bool isSimple = false) : DefaultDOTGraphTraits(isSimple)
|
|
168
|
+
{
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/// Return name of the graph
|
|
172
|
+
static std::string getGraphName(CFLGraph*)
|
|
173
|
+
{
|
|
174
|
+
return "CFL Reachability Graph";
|
|
175
|
+
}
|
|
176
|
+
/// Return function name;
|
|
177
|
+
static std::string getNodeLabel(CFLNode *node, CFLGraph*)
|
|
178
|
+
{
|
|
179
|
+
std::string str;
|
|
180
|
+
raw_string_ostream rawstr(str);
|
|
181
|
+
rawstr << "Node ID: " << node->getId() << " ";
|
|
182
|
+
return rawstr.str();
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
static std::string getNodeAttributes(CFLNode *node, CFLGraph*)
|
|
186
|
+
{
|
|
187
|
+
return "shape=box";
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
template<class EdgeIter>
|
|
191
|
+
static std::string getEdgeAttributes(CFLNode*, EdgeIter EI, CFLGraph* graph)
|
|
192
|
+
{
|
|
193
|
+
CFLEdge* edge = *(EI.getCurrent());
|
|
194
|
+
assert(edge && "No edge found!!");
|
|
195
|
+
std::string str;
|
|
196
|
+
raw_string_ostream rawstr(str);
|
|
197
|
+
std::string key = "";
|
|
198
|
+
for (auto &i : graph->label2SymMap)
|
|
199
|
+
{
|
|
200
|
+
if (i.second == edge->getEdgeKind())
|
|
201
|
+
{
|
|
202
|
+
key = i.first;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
rawstr << "label=" << '"' <<key << '"';
|
|
206
|
+
if( graph->label2SymMap[key] == graph->startSymbol){
|
|
207
|
+
rawstr << ',' << "color=red";
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
return rawstr.str();
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
template<class EdgeIter>
|
|
214
|
+
static std::string getEdgeSourceLabel(NodeType*, EdgeIter EI)
|
|
215
|
+
{
|
|
216
|
+
CFLEdge* edge = *(EI.getCurrent());
|
|
217
|
+
assert(edge && "No edge found!!");
|
|
218
|
+
std::string str;
|
|
219
|
+
raw_string_ostream rawstr(str);
|
|
220
|
+
rawstr << "Edge label: " << edge->getEdgeKind() << " ";
|
|
221
|
+
return rawstr.str();
|
|
222
|
+
}
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
}
|
package/lib/Util/ExeState.cpp
CHANGED
|
@@ -147,30 +147,8 @@ ExeState &ExeState::operator=(const ExeState &rhs) {
|
|
|
147
147
|
* @return
|
|
148
148
|
*/
|
|
149
149
|
bool ExeState::operator==(const ExeState &rhs) const {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
return false;
|
|
153
|
-
if(varToVal.size() != rhs.getVarToVal().size() || locToVal.size() != rhs.getLocToVal().size())
|
|
154
|
-
return false;
|
|
155
|
-
for (const auto &item: varToVal) {
|
|
156
|
-
auto it = rhs.getVarToVal().find(item.first);
|
|
157
|
-
// return false if SVFVar not exists in rhs
|
|
158
|
-
if (it == rhs.getVarToVal().end())
|
|
159
|
-
return false;
|
|
160
|
-
// return false if Z3Expr is not equivalent
|
|
161
|
-
if (!eq(item.second, it->second))
|
|
162
|
-
return false;
|
|
163
|
-
}
|
|
164
|
-
for (const auto &item: locToVal) {
|
|
165
|
-
auto it = rhs.getLocToVal().find(item.first);
|
|
166
|
-
// return false if location not exists in rhs
|
|
167
|
-
if (it == rhs.getLocToVal().end())
|
|
168
|
-
return false;
|
|
169
|
-
// return false if Z3Expr is not equivalent
|
|
170
|
-
if (!eq(item.second, it->second))
|
|
171
|
-
return false;
|
|
172
|
-
}
|
|
173
|
-
return true;
|
|
150
|
+
return eq(pathConstraint, rhs.getPathConstraint()) && eqVarToValMap(varToVal, rhs.getVarToVal()) &&
|
|
151
|
+
eqVarToValMap(locToVal, rhs.getLocToVal());
|
|
174
152
|
}
|
|
175
153
|
|
|
176
154
|
/*!
|
|
@@ -182,21 +160,28 @@ bool ExeState::operator<(const ExeState &rhs) const {
|
|
|
182
160
|
// judge from path constraint
|
|
183
161
|
if (!eq(pathConstraint, rhs.getPathConstraint()))
|
|
184
162
|
return pathConstraint.id() < rhs.getPathConstraint().id();
|
|
185
|
-
if(varToVal
|
|
163
|
+
if (lessThanVarToValMap(varToVal, rhs.getVarToVal()) || lessThanVarToValMap(locToVal, rhs.getLocToVal()))
|
|
186
164
|
return true;
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
bool ExeState::eqVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const {
|
|
169
|
+
if(lhs.size() != rhs.size()) return false;
|
|
170
|
+
for (const auto &item: lhs) {
|
|
171
|
+
auto it = rhs.find(item.first);
|
|
172
|
+
// return false if SVFVar not exists in rhs or z3Expr not equal
|
|
173
|
+
if (it == rhs.end() || !eq(item.second, it->second))
|
|
191
174
|
return false;
|
|
192
|
-
// judge from expr id
|
|
193
|
-
if (!eq(item.second, it->second))
|
|
194
|
-
return item.second.id() < it->second.id();
|
|
195
175
|
}
|
|
196
|
-
|
|
197
|
-
|
|
176
|
+
return true;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
bool ExeState::lessThanVarToValMap(const VarToValMap &lhs, const VarToValMap &rhs) const {
|
|
180
|
+
if(lhs.size() != rhs.size()) return lhs.size() < rhs.size();
|
|
181
|
+
for (const auto &item: lhs) {
|
|
182
|
+
auto it = rhs.find(item.first);
|
|
198
183
|
// lhs > rhs if SVFVar not exists in rhs
|
|
199
|
-
if (it == rhs.
|
|
184
|
+
if (it == rhs.end())
|
|
200
185
|
return false;
|
|
201
186
|
// judge from expr id
|
|
202
187
|
if (!eq(item.second, it->second))
|
|
@@ -204,7 +189,6 @@ bool ExeState::operator<(const ExeState &rhs) const {
|
|
|
204
189
|
}
|
|
205
190
|
return false;
|
|
206
191
|
}
|
|
207
|
-
|
|
208
192
|
/*!
|
|
209
193
|
* Store value to location
|
|
210
194
|
* @param loc location, e.g., int_val(0x7f..01)
|
package/lib/Util/Options.cpp
CHANGED
|
@@ -797,4 +797,35 @@ namespace SVF
|
|
|
797
797
|
llvm::cl::init(false),
|
|
798
798
|
llvm::cl::desc("Show hidden nodes on DOT Graphs (e.g., isolated node on a graph)")
|
|
799
799
|
);
|
|
800
|
+
|
|
801
|
+
const llvm::cl::opt<std::string> Options::InputFilename(
|
|
802
|
+
llvm::cl::Positional,
|
|
803
|
+
llvm::cl::desc("<input bitcode>"),
|
|
804
|
+
llvm::cl::init("-")
|
|
805
|
+
);
|
|
806
|
+
|
|
807
|
+
const llvm::cl::opt<std::string> Options::GrammarFilename(
|
|
808
|
+
llvm::cl::Positional,
|
|
809
|
+
llvm::cl::desc("<Grammar textfile>"),
|
|
810
|
+
llvm::cl::init("-")
|
|
811
|
+
);
|
|
812
|
+
|
|
813
|
+
const llvm::cl::opt<bool> Options::GraphIsFromDot(
|
|
814
|
+
"dot-graph",
|
|
815
|
+
llvm::cl::init(false),
|
|
816
|
+
llvm::cl::desc("Dot text as graph input")
|
|
817
|
+
);
|
|
818
|
+
|
|
819
|
+
const llvm::cl::opt<bool> Options::GrammarIsEBNF(
|
|
820
|
+
"ebnf-grammar",
|
|
821
|
+
llvm::cl::init(false),
|
|
822
|
+
llvm::cl::desc("EBNF grammar as grammar input")
|
|
823
|
+
);
|
|
824
|
+
|
|
825
|
+
const llvm::cl::opt<bool> Options::FlexSymMap(
|
|
826
|
+
"flex-symmap",
|
|
827
|
+
llvm::cl::init(false),
|
|
828
|
+
llvm::cl::desc("extend exist sym map while read graph from dot if sym not in map.")
|
|
829
|
+
);
|
|
830
|
+
|
|
800
831
|
} // namespace SVF.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "svf-tools",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.443",
|
|
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": {
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
if(DEFINED IN_SOURCE_BUILD)
|
|
3
|
+
set(LLVM_LINK_COMPONENTS BitWriter Core IPO IrReader InstCombine Instrumentation Target Linker Analysis ScalarOpts Support Svf Cudd)
|
|
4
|
+
add_llvm_tool( cfl cfl.cpp )
|
|
5
|
+
else()
|
|
6
|
+
add_executable( cfl cfl.cpp )
|
|
7
|
+
|
|
8
|
+
target_link_libraries( cfl Svf Cudd ${llvm_libs} )
|
|
9
|
+
|
|
10
|
+
set_target_properties( cfl PROPERTIES
|
|
11
|
+
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin )
|
|
12
|
+
endif()
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
//===- cfl.cpp -- A driver of CFL Reachability Analysis-------------------------------------//
|
|
2
|
+
//
|
|
3
|
+
// SVF: Static Value-Flow Analysis
|
|
4
|
+
//
|
|
5
|
+
// Copyright (C) <2013-> <Yulei Sui>
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
// This program is free software: you can redistribute it and/or modify
|
|
9
|
+
// it under the terms of the GNU General Public License as published by
|
|
10
|
+
// the Free Software Foundation, either version 3 of the License, or
|
|
11
|
+
// (at your option) any later version.
|
|
12
|
+
|
|
13
|
+
// This program is distributed in the hope that it will be useful,
|
|
14
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
+
// GNU General Public License for more details.
|
|
17
|
+
|
|
18
|
+
// You should have received a copy of the GNU General Public License
|
|
19
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
//
|
|
21
|
+
//===-----------------------------------------------------------------------===//
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
// A driver of CFL Reachability Analysis
|
|
25
|
+
//
|
|
26
|
+
// Author: Yulei Sui,
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
#include "SVF-FE/LLVMUtil.h"
|
|
31
|
+
#include "CFL/CFLAlias.h"
|
|
32
|
+
#include "Util/Options.h"
|
|
33
|
+
#include "SVF-FE/SVFIRBuilder.h"
|
|
34
|
+
#include "CFL/CFGNormalizer.h"
|
|
35
|
+
|
|
36
|
+
using namespace llvm;
|
|
37
|
+
using namespace SVF;
|
|
38
|
+
|
|
39
|
+
static cl::opt<bool>
|
|
40
|
+
StandardCompileOpts("std-compile-opts",
|
|
41
|
+
cl::desc("Include the standard compile time optimizations"));
|
|
42
|
+
|
|
43
|
+
int main(int argc, char ** argv)
|
|
44
|
+
{
|
|
45
|
+
int arg_num = 0;
|
|
46
|
+
char **arg_value = new char*[argc];
|
|
47
|
+
std::vector<std::string> moduleNameVec;
|
|
48
|
+
SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
|
|
49
|
+
cl::ParseCommandLineOptions(arg_num, arg_value,
|
|
50
|
+
"CFL Reachability Analysis\n");
|
|
51
|
+
|
|
52
|
+
if (Options::WriteAnder == "ir_annotator")
|
|
53
|
+
{
|
|
54
|
+
LLVMModuleSet::getLLVMModuleSet()->preProcessBCs(moduleNameVec);
|
|
55
|
+
}
|
|
56
|
+
if (Options::GraphIsFromDot == false){
|
|
57
|
+
SVFModule* svfModule = LLVMModuleSet::getLLVMModuleSet()->buildSVFModule(moduleNameVec);
|
|
58
|
+
svfModule->buildSymbolTableInfo();
|
|
59
|
+
|
|
60
|
+
/// Build Program Assignment Graph (SVFIR)
|
|
61
|
+
SVFIRBuilder builder;
|
|
62
|
+
SVFIR* svfir = builder.build(svfModule);
|
|
63
|
+
CFLAlias* cflaa = new CFLAlias(svfir);
|
|
64
|
+
cflaa->analyze();
|
|
65
|
+
delete cflaa;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
SVFIR* svfir = nullptr;
|
|
69
|
+
CFLAlias* cflaa = new CFLAlias(svfir);
|
|
70
|
+
cflaa->analyze();
|
|
71
|
+
delete cflaa;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
SVFIR::releaseSVFIR();
|
|
75
|
+
SVF::LLVMModuleSet::releaseLLVMModuleSet();
|
|
76
|
+
|
|
77
|
+
return 0;
|
|
78
|
+
|
|
79
|
+
}
|
|
80
|
+
|
package/tools/CMakeLists.txt
CHANGED
package/tools/DDA/dda.cpp
CHANGED
|
@@ -13,9 +13,6 @@
|
|
|
13
13
|
using namespace llvm;
|
|
14
14
|
using namespace SVF;
|
|
15
15
|
|
|
16
|
-
static cl::opt<std::string> InputFilename(cl::Positional,
|
|
17
|
-
cl::desc("<input bitcode>"), cl::init("-"));
|
|
18
|
-
|
|
19
16
|
static cl::opt<bool>
|
|
20
17
|
StandardCompileOpts("std-compile-opts",
|
|
21
18
|
cl::desc("Include the standard compile time optimizations"));
|
package/tools/Example/svf-ex.cpp
CHANGED
|
@@ -36,9 +36,6 @@ using namespace llvm;
|
|
|
36
36
|
using namespace std;
|
|
37
37
|
using namespace SVF;
|
|
38
38
|
|
|
39
|
-
static llvm::cl::opt<std::string> InputFilename(cl::Positional,
|
|
40
|
-
llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
|
|
41
|
-
|
|
42
39
|
/*!
|
|
43
40
|
* An example to query alias results of two LLVM values
|
|
44
41
|
*/
|
package/tools/MTA/mta.cpp
CHANGED
package/tools/SABER/saber.cpp
CHANGED
|
@@ -35,9 +35,6 @@
|
|
|
35
35
|
using namespace llvm;
|
|
36
36
|
using namespace SVF;
|
|
37
37
|
|
|
38
|
-
static llvm::cl::opt<std::string> InputFilename(cl::Positional,
|
|
39
|
-
llvm::cl::desc("<input bitcode>"), llvm::cl::init("-"));
|
|
40
|
-
|
|
41
38
|
static llvm::cl::opt<bool> LEAKCHECKER("leak", llvm::cl::init(false),
|
|
42
39
|
llvm::cl::desc("Memory Leak Detection"));
|
|
43
40
|
|
package/tools/WPA/wpa.cpp
CHANGED