svf-lib 1.0.1376 → 1.0.1377
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-osx/Release-build/svf-llvm/libSvfLLVM.a +0 -0
- package/package.json +1 -1
- package/SVF-linux/svf/include/include/AbstractExecution/AbstractValue.h +0 -79
- package/SVF-linux/svf/include/include/AbstractExecution/AddressValue.h +0 -210
- package/SVF-linux/svf/include/include/AbstractExecution/ExeState.h +0 -223
- package/SVF-linux/svf/include/include/AbstractExecution/IntervalExeState.h +0 -425
- package/SVF-linux/svf/include/include/AbstractExecution/IntervalValue.h +0 -868
- package/SVF-linux/svf/include/include/AbstractExecution/NumericLiteral.h +0 -406
- package/SVF-linux/svf/include/include/AbstractExecution/RelExeState.h +0 -225
- package/SVF-linux/svf/include/include/AbstractExecution/RelationSolver.h +0 -68
- package/SVF-linux/svf/include/include/AbstractExecution/SVFIR2ItvExeState.h +0 -186
- package/SVF-linux/svf/include/include/AbstractExecution/WTO.h +0 -845
- package/SVF-linux/svf/include/include/CFL/CFGNormalizer.h +0 -84
- package/SVF-linux/svf/include/include/CFL/CFLAlias.h +0 -176
- package/SVF-linux/svf/include/include/CFL/CFLBase.h +0 -115
- package/SVF-linux/svf/include/include/CFL/CFLData.h +0 -316
- package/SVF-linux/svf/include/include/CFL/CFLDataBuilder.h +0 -91
- package/SVF-linux/svf/include/include/CFL/CFLGramGraphChecker.h +0 -74
- package/SVF-linux/svf/include/include/CFL/CFLGrammar.h +0 -468
- package/SVF-linux/svf/include/include/CFL/CFLGrammar.txt +0 -15
- package/SVF-linux/svf/include/include/CFL/CFLGraphBuilder.h +0 -193
- package/SVF-linux/svf/include/include/CFL/CFLSolver.h +0 -136
- package/SVF-linux/svf/include/include/CFL/CFLStat.h +0 -67
- package/SVF-linux/svf/include/include/CFL/CFLVF.h +0 -65
- package/SVF-linux/svf/include/include/CFL/GrammarBuilder.h +0 -100
- package/SVF-linux/svf/include/include/CFL/PEGGrammar.txt +0 -11
- package/SVF-linux/svf/include/include/CFL/VFG.txt +0 -7
- package/SVF-linux/svf/include/include/DDA/ContextDDA.h +0 -230
- package/SVF-linux/svf/include/include/DDA/DDAClient.h +0 -168
- package/SVF-linux/svf/include/include/DDA/DDAPass.h +0 -99
- package/SVF-linux/svf/include/include/DDA/DDAStat.h +0 -138
- package/SVF-linux/svf/include/include/DDA/DDAVFSolver.h +0 -789
- package/SVF-linux/svf/include/include/DDA/FlowDDA.h +0 -178
- package/SVF-linux/svf/include/include/FastCluster/LICENSE.TXT +0 -13
- package/SVF-linux/svf/include/include/FastCluster/fastcluster.h +0 -80
- package/SVF-linux/svf/include/include/Graphs/CFLGraph.h +0 -215
- package/SVF-linux/svf/include/include/Graphs/CHG.h +0 -351
- package/SVF-linux/svf/include/include/Graphs/ConsG.h +0 -408
- package/SVF-linux/svf/include/include/Graphs/ConsGEdge.h +0 -353
- package/SVF-linux/svf/include/include/Graphs/ConsGNode.h +0 -391
- package/SVF-linux/svf/include/include/Graphs/DOTGraphTraits.h +0 -188
- package/SVF-linux/svf/include/include/Graphs/GenericGraph.h +0 -620
- package/SVF-linux/svf/include/include/Graphs/GraphPrinter.h +0 -111
- package/SVF-linux/svf/include/include/Graphs/GraphTraits.h +0 -150
- package/SVF-linux/svf/include/include/Graphs/GraphWriter.h +0 -380
- package/SVF-linux/svf/include/include/Graphs/ICFG.h +0 -331
- package/SVF-linux/svf/include/include/Graphs/ICFGEdge.h +0 -264
- package/SVF-linux/svf/include/include/Graphs/ICFGNode.h +0 -523
- package/SVF-linux/svf/include/include/Graphs/ICFGStat.h +0 -164
- package/SVF-linux/svf/include/include/Graphs/IRGraph.h +0 -243
- package/SVF-linux/svf/include/include/Graphs/PTACallGraph.h +0 -471
- package/SVF-linux/svf/include/include/Graphs/SVFG.h +0 -490
- package/SVF-linux/svf/include/include/Graphs/SVFGEdge.h +0 -237
- package/SVF-linux/svf/include/include/Graphs/SVFGNode.h +0 -513
- package/SVF-linux/svf/include/include/Graphs/SVFGOPT.h +0 -362
- package/SVF-linux/svf/include/include/Graphs/SVFGStat.h +0 -273
- package/SVF-linux/svf/include/include/Graphs/ThreadCallGraph.h +0 -422
- package/SVF-linux/svf/include/include/Graphs/VFG.h +0 -664
- package/SVF-linux/svf/include/include/Graphs/VFGEdge.h +0 -295
- package/SVF-linux/svf/include/include/Graphs/VFGNode.h +0 -1197
- package/SVF-linux/svf/include/include/MSSA/MSSAMuChi.h +0 -722
- package/SVF-linux/svf/include/include/MSSA/MemPartition.h +0 -169
- package/SVF-linux/svf/include/include/MSSA/MemRegion.h +0 -491
- package/SVF-linux/svf/include/include/MSSA/MemSSA.h +0 -452
- package/SVF-linux/svf/include/include/MSSA/SVFGBuilder.h +0 -98
- package/SVF-linux/svf/include/include/MTA/FSMPTA.h +0 -270
- package/SVF-linux/svf/include/include/MTA/LockAnalysis.h +0 -517
- package/SVF-linux/svf/include/include/MTA/MHP.h +0 -565
- package/SVF-linux/svf/include/include/MTA/MTA.h +0 -101
- package/SVF-linux/svf/include/include/MTA/MTAResultValidator.h +0 -448
- package/SVF-linux/svf/include/include/MTA/MTAStat.h +0 -74
- package/SVF-linux/svf/include/include/MTA/PCG.h +0 -229
- package/SVF-linux/svf/include/include/MTA/TCT.h +0 -599
- package/SVF-linux/svf/include/include/MemoryModel/AbstractPointsToDS.h +0 -316
- package/SVF-linux/svf/include/include/MemoryModel/ConditionalPT.h +0 -878
- package/SVF-linux/svf/include/include/MemoryModel/LocationSet.h +0 -148
- package/SVF-linux/svf/include/include/MemoryModel/MutablePointsToDS.h +0 -1025
- package/SVF-linux/svf/include/include/MemoryModel/PersistentPointsToCache.h +0 -463
- package/SVF-linux/svf/include/include/MemoryModel/PersistentPointsToDS.h +0 -955
- package/SVF-linux/svf/include/include/MemoryModel/PointerAnalysis.h +0 -452
- package/SVF-linux/svf/include/include/MemoryModel/PointerAnalysisImpl.h +0 -590
- package/SVF-linux/svf/include/include/MemoryModel/PointsTo.h +0 -255
- package/SVF-linux/svf/include/include/MemoryModel/SVFLoop.h +0 -164
- package/SVF-linux/svf/include/include/SABER/DoubleFreeChecker.h +0 -76
- package/SVF-linux/svf/include/include/SABER/FileChecker.h +0 -82
- package/SVF-linux/svf/include/include/SABER/LeakChecker.h +0 -124
- package/SVF-linux/svf/include/include/SABER/ProgSlice.h +0 -313
- package/SVF-linux/svf/include/include/SABER/SaberCheckerAPI.h +0 -166
- package/SVF-linux/svf/include/include/SABER/SaberCondAllocator.h +0 -310
- package/SVF-linux/svf/include/include/SABER/SaberSVFGBuilder.h +0 -104
- package/SVF-linux/svf/include/include/SABER/SrcSnkDDA.h +0 -321
- package/SVF-linux/svf/include/include/SABER/SrcSnkSolver.h +0 -186
- package/SVF-linux/svf/include/include/SVFIR/PAGBuilderFromFile.h +0 -80
- package/SVF-linux/svf/include/include/SVFIR/SVFIR.h +0 -659
- package/SVF-linux/svf/include/include/SVFIR/SVFModule.h +0 -233
- package/SVF-linux/svf/include/include/SVFIR/SVFStatements.h +0 -1136
- package/SVF-linux/svf/include/include/SVFIR/SVFType.h +0 -527
- package/SVF-linux/svf/include/include/SVFIR/SVFValue.h +0 -1120
- package/SVF-linux/svf/include/include/SVFIR/SVFVariables.h +0 -721
- package/SVF-linux/svf/include/include/SVFIR/SymbolTableInfo.h +0 -597
- package/SVF-linux/svf/include/include/Util/Annotator.h +0 -180
- package/SVF-linux/svf/include/include/Util/BitVector.h +0 -55
- package/SVF-linux/svf/include/include/Util/CallGraphBuilder.h +0 -74
- package/SVF-linux/svf/include/include/Util/Casting.h +0 -426
- package/SVF-linux/svf/include/include/Util/CommandLine.h +0 -530
- package/SVF-linux/svf/include/include/Util/CoreBitVector.h +0 -214
- package/SVF-linux/svf/include/include/Util/CppUtil.h +0 -81
- package/SVF-linux/svf/include/include/Util/CxtStmt.h +0 -501
- package/SVF-linux/svf/include/include/Util/DPItem.h +0 -618
- package/SVF-linux/svf/include/include/Util/ExtAPI.h +0 -339
- package/SVF-linux/svf/include/include/Util/ExtAPI.json +0 -5707
- package/SVF-linux/svf/include/include/Util/GraphReachSolver.h +0 -186
- package/SVF-linux/svf/include/include/Util/NodeIDAllocator.h +0 -194
- package/SVF-linux/svf/include/include/Util/Options.h +0 -266
- package/SVF-linux/svf/include/include/Util/PTAStat.h +0 -65
- package/SVF-linux/svf/include/include/Util/SCC.h +0 -354
- package/SVF-linux/svf/include/include/Util/SVFStat.h +0 -100
- package/SVF-linux/svf/include/include/Util/SVFUtil.h +0 -660
- package/SVF-linux/svf/include/include/Util/SparseBitVector.h +0 -1202
- package/SVF-linux/svf/include/include/Util/ThreadAPI.h +0 -330
- package/SVF-linux/svf/include/include/Util/WorkList.h +0 -317
- package/SVF-linux/svf/include/include/Util/Z3Expr.h +0 -318
- package/SVF-linux/svf/include/include/Util/cJSON.h +0 -300
- package/SVF-linux/svf/include/include/Util/iterator.h +0 -407
- package/SVF-linux/svf/include/include/Util/iterator_range.h +0 -76
- package/SVF-linux/svf/include/include/WPA/Andersen.h +0 -416
- package/SVF-linux/svf/include/include/WPA/AndersenPWC.h +0 -160
- package/SVF-linux/svf/include/include/WPA/CSC.h +0 -95
- package/SVF-linux/svf/include/include/WPA/FlowSensitive.h +0 -317
- package/SVF-linux/svf/include/include/WPA/Steensgaard.h +0 -126
- package/SVF-linux/svf/include/include/WPA/TypeAnalysis.h +0 -83
- package/SVF-linux/svf/include/include/WPA/VersionedFlowSensitive.h +0 -287
- package/SVF-linux/svf/include/include/WPA/WPAFSSolver.h +0 -254
- package/SVF-linux/svf/include/include/WPA/WPAPass.h +0 -119
- package/SVF-linux/svf/include/include/WPA/WPASolver.h +0 -205
- package/SVF-linux/svf/include/include/WPA/WPAStat.h +0 -222
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/BasicTypes.h +0 -250
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/BreakConstantExpr.h +0 -94
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/CHGBuilder.h +0 -73
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/DCHG.h +0 -484
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/GEPTypeBridgeIterator.h +0 -183
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/ICFGBuilder.h +0 -106
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMLoopAnalysis.h +0 -61
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMModule.h +0 -360
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMUtil.h +0 -466
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/SVFIRBuilder.h +0 -417
- package/SVF-linux/svf-llvm/include/SVF-LLVM/SVF-LLVM/SymbolTableBuilder.h +0 -110
- package/SVF-osx/svf/include/include/AbstractExecution/AbstractValue.h +0 -79
- package/SVF-osx/svf/include/include/AbstractExecution/AddressValue.h +0 -210
- package/SVF-osx/svf/include/include/AbstractExecution/ExeState.h +0 -223
- package/SVF-osx/svf/include/include/AbstractExecution/IntervalExeState.h +0 -425
- package/SVF-osx/svf/include/include/AbstractExecution/IntervalValue.h +0 -868
- package/SVF-osx/svf/include/include/AbstractExecution/NumericLiteral.h +0 -406
- package/SVF-osx/svf/include/include/AbstractExecution/RelExeState.h +0 -225
- package/SVF-osx/svf/include/include/AbstractExecution/RelationSolver.h +0 -68
- package/SVF-osx/svf/include/include/AbstractExecution/SVFIR2ItvExeState.h +0 -186
- package/SVF-osx/svf/include/include/AbstractExecution/WTO.h +0 -845
- package/SVF-osx/svf/include/include/CFL/CFGNormalizer.h +0 -84
- package/SVF-osx/svf/include/include/CFL/CFLAlias.h +0 -176
- package/SVF-osx/svf/include/include/CFL/CFLBase.h +0 -115
- package/SVF-osx/svf/include/include/CFL/CFLData.h +0 -316
- package/SVF-osx/svf/include/include/CFL/CFLDataBuilder.h +0 -91
- package/SVF-osx/svf/include/include/CFL/CFLGramGraphChecker.h +0 -74
- package/SVF-osx/svf/include/include/CFL/CFLGrammar.h +0 -468
- package/SVF-osx/svf/include/include/CFL/CFLGrammar.txt +0 -15
- package/SVF-osx/svf/include/include/CFL/CFLGraphBuilder.h +0 -193
- package/SVF-osx/svf/include/include/CFL/CFLSolver.h +0 -136
- package/SVF-osx/svf/include/include/CFL/CFLStat.h +0 -67
- package/SVF-osx/svf/include/include/CFL/CFLVF.h +0 -65
- package/SVF-osx/svf/include/include/CFL/GrammarBuilder.h +0 -100
- package/SVF-osx/svf/include/include/CFL/PEGGrammar.txt +0 -11
- package/SVF-osx/svf/include/include/CFL/VFG.txt +0 -7
- package/SVF-osx/svf/include/include/DDA/ContextDDA.h +0 -230
- package/SVF-osx/svf/include/include/DDA/DDAClient.h +0 -168
- package/SVF-osx/svf/include/include/DDA/DDAPass.h +0 -99
- package/SVF-osx/svf/include/include/DDA/DDAStat.h +0 -138
- package/SVF-osx/svf/include/include/DDA/DDAVFSolver.h +0 -789
- package/SVF-osx/svf/include/include/DDA/FlowDDA.h +0 -178
- package/SVF-osx/svf/include/include/FastCluster/LICENSE.TXT +0 -13
- package/SVF-osx/svf/include/include/FastCluster/fastcluster.h +0 -80
- package/SVF-osx/svf/include/include/Graphs/CFLGraph.h +0 -215
- package/SVF-osx/svf/include/include/Graphs/CHG.h +0 -351
- package/SVF-osx/svf/include/include/Graphs/ConsG.h +0 -408
- package/SVF-osx/svf/include/include/Graphs/ConsGEdge.h +0 -353
- package/SVF-osx/svf/include/include/Graphs/ConsGNode.h +0 -391
- package/SVF-osx/svf/include/include/Graphs/DOTGraphTraits.h +0 -188
- package/SVF-osx/svf/include/include/Graphs/GenericGraph.h +0 -620
- package/SVF-osx/svf/include/include/Graphs/GraphPrinter.h +0 -111
- package/SVF-osx/svf/include/include/Graphs/GraphTraits.h +0 -150
- package/SVF-osx/svf/include/include/Graphs/GraphWriter.h +0 -380
- package/SVF-osx/svf/include/include/Graphs/ICFG.h +0 -331
- package/SVF-osx/svf/include/include/Graphs/ICFGEdge.h +0 -264
- package/SVF-osx/svf/include/include/Graphs/ICFGNode.h +0 -523
- package/SVF-osx/svf/include/include/Graphs/ICFGStat.h +0 -164
- package/SVF-osx/svf/include/include/Graphs/IRGraph.h +0 -243
- package/SVF-osx/svf/include/include/Graphs/PTACallGraph.h +0 -471
- package/SVF-osx/svf/include/include/Graphs/SVFG.h +0 -490
- package/SVF-osx/svf/include/include/Graphs/SVFGEdge.h +0 -237
- package/SVF-osx/svf/include/include/Graphs/SVFGNode.h +0 -513
- package/SVF-osx/svf/include/include/Graphs/SVFGOPT.h +0 -362
- package/SVF-osx/svf/include/include/Graphs/SVFGStat.h +0 -273
- package/SVF-osx/svf/include/include/Graphs/ThreadCallGraph.h +0 -422
- package/SVF-osx/svf/include/include/Graphs/VFG.h +0 -664
- package/SVF-osx/svf/include/include/Graphs/VFGEdge.h +0 -295
- package/SVF-osx/svf/include/include/Graphs/VFGNode.h +0 -1197
- package/SVF-osx/svf/include/include/MSSA/MSSAMuChi.h +0 -722
- package/SVF-osx/svf/include/include/MSSA/MemPartition.h +0 -169
- package/SVF-osx/svf/include/include/MSSA/MemRegion.h +0 -491
- package/SVF-osx/svf/include/include/MSSA/MemSSA.h +0 -452
- package/SVF-osx/svf/include/include/MSSA/SVFGBuilder.h +0 -98
- package/SVF-osx/svf/include/include/MTA/FSMPTA.h +0 -270
- package/SVF-osx/svf/include/include/MTA/LockAnalysis.h +0 -517
- package/SVF-osx/svf/include/include/MTA/MHP.h +0 -565
- package/SVF-osx/svf/include/include/MTA/MTA.h +0 -101
- package/SVF-osx/svf/include/include/MTA/MTAResultValidator.h +0 -448
- package/SVF-osx/svf/include/include/MTA/MTAStat.h +0 -74
- package/SVF-osx/svf/include/include/MTA/PCG.h +0 -229
- package/SVF-osx/svf/include/include/MTA/TCT.h +0 -599
- package/SVF-osx/svf/include/include/MemoryModel/AbstractPointsToDS.h +0 -316
- package/SVF-osx/svf/include/include/MemoryModel/ConditionalPT.h +0 -878
- package/SVF-osx/svf/include/include/MemoryModel/LocationSet.h +0 -148
- package/SVF-osx/svf/include/include/MemoryModel/MutablePointsToDS.h +0 -1025
- package/SVF-osx/svf/include/include/MemoryModel/PersistentPointsToCache.h +0 -463
- package/SVF-osx/svf/include/include/MemoryModel/PersistentPointsToDS.h +0 -955
- package/SVF-osx/svf/include/include/MemoryModel/PointerAnalysis.h +0 -452
- package/SVF-osx/svf/include/include/MemoryModel/PointerAnalysisImpl.h +0 -590
- package/SVF-osx/svf/include/include/MemoryModel/PointsTo.h +0 -255
- package/SVF-osx/svf/include/include/MemoryModel/SVFLoop.h +0 -164
- package/SVF-osx/svf/include/include/SABER/DoubleFreeChecker.h +0 -76
- package/SVF-osx/svf/include/include/SABER/FileChecker.h +0 -82
- package/SVF-osx/svf/include/include/SABER/LeakChecker.h +0 -124
- package/SVF-osx/svf/include/include/SABER/ProgSlice.h +0 -313
- package/SVF-osx/svf/include/include/SABER/SaberCheckerAPI.h +0 -166
- package/SVF-osx/svf/include/include/SABER/SaberCondAllocator.h +0 -310
- package/SVF-osx/svf/include/include/SABER/SaberSVFGBuilder.h +0 -104
- package/SVF-osx/svf/include/include/SABER/SrcSnkDDA.h +0 -321
- package/SVF-osx/svf/include/include/SABER/SrcSnkSolver.h +0 -186
- package/SVF-osx/svf/include/include/SVFIR/PAGBuilderFromFile.h +0 -80
- package/SVF-osx/svf/include/include/SVFIR/SVFIR.h +0 -659
- package/SVF-osx/svf/include/include/SVFIR/SVFModule.h +0 -233
- package/SVF-osx/svf/include/include/SVFIR/SVFStatements.h +0 -1136
- package/SVF-osx/svf/include/include/SVFIR/SVFType.h +0 -527
- package/SVF-osx/svf/include/include/SVFIR/SVFValue.h +0 -1120
- package/SVF-osx/svf/include/include/SVFIR/SVFVariables.h +0 -721
- package/SVF-osx/svf/include/include/SVFIR/SymbolTableInfo.h +0 -597
- package/SVF-osx/svf/include/include/Util/Annotator.h +0 -180
- package/SVF-osx/svf/include/include/Util/BitVector.h +0 -55
- package/SVF-osx/svf/include/include/Util/CallGraphBuilder.h +0 -74
- package/SVF-osx/svf/include/include/Util/Casting.h +0 -426
- package/SVF-osx/svf/include/include/Util/CommandLine.h +0 -530
- package/SVF-osx/svf/include/include/Util/CoreBitVector.h +0 -214
- package/SVF-osx/svf/include/include/Util/CppUtil.h +0 -81
- package/SVF-osx/svf/include/include/Util/CxtStmt.h +0 -501
- package/SVF-osx/svf/include/include/Util/DPItem.h +0 -618
- package/SVF-osx/svf/include/include/Util/ExtAPI.h +0 -339
- package/SVF-osx/svf/include/include/Util/ExtAPI.json +0 -5707
- package/SVF-osx/svf/include/include/Util/GraphReachSolver.h +0 -186
- package/SVF-osx/svf/include/include/Util/NodeIDAllocator.h +0 -194
- package/SVF-osx/svf/include/include/Util/Options.h +0 -266
- package/SVF-osx/svf/include/include/Util/PTAStat.h +0 -65
- package/SVF-osx/svf/include/include/Util/SCC.h +0 -354
- package/SVF-osx/svf/include/include/Util/SVFStat.h +0 -100
- package/SVF-osx/svf/include/include/Util/SVFUtil.h +0 -660
- package/SVF-osx/svf/include/include/Util/SparseBitVector.h +0 -1202
- package/SVF-osx/svf/include/include/Util/ThreadAPI.h +0 -330
- package/SVF-osx/svf/include/include/Util/WorkList.h +0 -317
- package/SVF-osx/svf/include/include/Util/Z3Expr.h +0 -318
- package/SVF-osx/svf/include/include/Util/cJSON.h +0 -300
- package/SVF-osx/svf/include/include/Util/iterator.h +0 -407
- package/SVF-osx/svf/include/include/Util/iterator_range.h +0 -76
- package/SVF-osx/svf/include/include/WPA/Andersen.h +0 -416
- package/SVF-osx/svf/include/include/WPA/AndersenPWC.h +0 -160
- package/SVF-osx/svf/include/include/WPA/CSC.h +0 -95
- package/SVF-osx/svf/include/include/WPA/FlowSensitive.h +0 -317
- package/SVF-osx/svf/include/include/WPA/Steensgaard.h +0 -126
- package/SVF-osx/svf/include/include/WPA/TypeAnalysis.h +0 -83
- package/SVF-osx/svf/include/include/WPA/VersionedFlowSensitive.h +0 -287
- package/SVF-osx/svf/include/include/WPA/WPAFSSolver.h +0 -254
- package/SVF-osx/svf/include/include/WPA/WPAPass.h +0 -119
- package/SVF-osx/svf/include/include/WPA/WPASolver.h +0 -205
- package/SVF-osx/svf/include/include/WPA/WPAStat.h +0 -222
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/BasicTypes.h +0 -250
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/BreakConstantExpr.h +0 -94
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/CHGBuilder.h +0 -73
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/DCHG.h +0 -484
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/GEPTypeBridgeIterator.h +0 -183
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/ICFGBuilder.h +0 -106
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMLoopAnalysis.h +0 -61
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMModule.h +0 -360
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/LLVMUtil.h +0 -466
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/SVFIRBuilder.h +0 -417
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVF-LLVM/SymbolTableBuilder.h +0 -110
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
//===----- CFLGraphBuilder.h -- CFL Graph Builder --------------//
|
|
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
|
-
* CFLGraphBuilder.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: May 22, 2022
|
|
27
|
-
* Author: Pei Xu
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
#ifndef INCLUDE_CFL_CFLGRAPHBUILDER_H_
|
|
31
|
-
#define INCLUDE_CFL_CFLGRAPHBUILDER_H_
|
|
32
|
-
|
|
33
|
-
#include "CFL/CFLGrammar.h"
|
|
34
|
-
#include "Graphs/CFLGraph.h"
|
|
35
|
-
#include "Graphs/SVFG.h"
|
|
36
|
-
|
|
37
|
-
namespace SVF
|
|
38
|
-
{
|
|
39
|
-
|
|
40
|
-
/*!
|
|
41
|
-
* Build CFLGraph from memory graph or dot form
|
|
42
|
-
|
|
43
|
-
*/
|
|
44
|
-
|
|
45
|
-
class CFLGraphBuilder
|
|
46
|
-
{
|
|
47
|
-
protected:
|
|
48
|
-
typedef CFLGrammar::Kind Kind;
|
|
49
|
-
typedef CFLGrammar::Symbol Symbol;
|
|
50
|
-
Map<std::string, Kind> label2KindMap;
|
|
51
|
-
Map<Kind, std::string> kind2LabelMap;
|
|
52
|
-
Map<CFLGrammar::Kind, Set<CFLGrammar::Attribute>> kind2AttrsMap;
|
|
53
|
-
bool externMap;
|
|
54
|
-
Kind current;
|
|
55
|
-
|
|
56
|
-
public:
|
|
57
|
-
/// add attribute to kind2Attribute Map
|
|
58
|
-
void addAttribute(CFLGrammar::Kind kind, CFLGrammar::Attribute attribute);
|
|
59
|
-
|
|
60
|
-
/// Build graph by copying nodes and edges from any graph inherited from GenericGraph
|
|
61
|
-
template<class N, class E>
|
|
62
|
-
void build(GenericGraph<N,E>* graph, CFLGraph* cflGraph)
|
|
63
|
-
{
|
|
64
|
-
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
65
|
-
{
|
|
66
|
-
CFLNode* node = new CFLNode((*it).first);
|
|
67
|
-
cflGraph->addCFLNode((*it).first, node);
|
|
68
|
-
}
|
|
69
|
-
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
70
|
-
{
|
|
71
|
-
N* node = (*it).second;
|
|
72
|
-
for(E* edge : node->getOutEdges())
|
|
73
|
-
{
|
|
74
|
-
cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edge->getEdgeKind());
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/// Build Bidirectional graph by copying nodes and edges from any graph inherited from GenericGraph
|
|
80
|
-
template<class N, class E>
|
|
81
|
-
CFLGraph* buildBigraph(GenericGraph<N,E>* graph, Kind startKind, GrammarBase *grammar)
|
|
82
|
-
{
|
|
83
|
-
CFLGraph *cflGraph = new CFLGraph(startKind);
|
|
84
|
-
externMap = true;
|
|
85
|
-
for(auto pairV : grammar->getTerminals())
|
|
86
|
-
{
|
|
87
|
-
if(label2KindMap.find(pairV.first) == label2KindMap.end())
|
|
88
|
-
{
|
|
89
|
-
label2KindMap.insert(pairV);
|
|
90
|
-
}
|
|
91
|
-
if(kind2LabelMap.find(pairV.second) == kind2LabelMap.end())
|
|
92
|
-
{
|
|
93
|
-
kind2LabelMap.insert(make_pair(pairV.second, pairV.first));
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
for(auto pairV : grammar->getNonterminals())
|
|
97
|
-
{
|
|
98
|
-
if(label2KindMap.find(pairV.first) == label2KindMap.end())
|
|
99
|
-
{
|
|
100
|
-
label2KindMap.insert(pairV);
|
|
101
|
-
}
|
|
102
|
-
if(kind2LabelMap.find(pairV.second) == kind2LabelMap.end())
|
|
103
|
-
{
|
|
104
|
-
kind2LabelMap.insert(make_pair(pairV.second, pairV.first));
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
108
|
-
{
|
|
109
|
-
CFLNode* node = new CFLNode((*it).first);
|
|
110
|
-
cflGraph->addCFLNode((*it).first, node);
|
|
111
|
-
}
|
|
112
|
-
for(auto it = graph->begin(); it!= graph->end(); it++)
|
|
113
|
-
{
|
|
114
|
-
N* node = (*it).second;
|
|
115
|
-
for(E* edge : node->getOutEdges())
|
|
116
|
-
{
|
|
117
|
-
CFLGrammar::Kind edgeLabel = edge->getEdgeKind();
|
|
118
|
-
cflGraph->addCFLEdge(cflGraph->getGNode(edge->getSrcID()), cflGraph->getGNode(edge->getDstID()), edgeLabel);
|
|
119
|
-
std::string key = kind2LabelMap[edge->getEdgeKind()];
|
|
120
|
-
key.append("bar");
|
|
121
|
-
cflGraph->addCFLEdge(cflGraph->getGNode(edge->getDstID()), cflGraph->getGNode(edge->getSrcID()), label2KindMap[key]);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
return cflGraph;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/// Build graph from file
|
|
128
|
-
void build(std::string filename, CFLGraph* cflGraph);
|
|
129
|
-
|
|
130
|
-
/// Build graph from Dot
|
|
131
|
-
CFLGraph *buildFromDot(std::string filename, GrammarBase *grammar);
|
|
132
|
-
|
|
133
|
-
Map<std::string, Kind>& getLabel2KindMap()
|
|
134
|
-
{
|
|
135
|
-
return this->label2KindMap;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
Map<Kind, std::string>& getKind2LabelMap()
|
|
139
|
-
{
|
|
140
|
-
return this->kind2LabelMap;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
Map<CFLGrammar::Kind, Set<CFLGrammar::Attribute>>& getKind2AttrsMap()
|
|
144
|
-
{
|
|
145
|
-
return this->kind2AttrsMap;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
};
|
|
150
|
-
|
|
151
|
-
class AliasCFLGraphBuilder : public CFLGraphBuilder
|
|
152
|
-
{
|
|
153
|
-
public:
|
|
154
|
-
/// Build Bidirectional graph by copying nodes and edges from const graph inherited from GenericGraph
|
|
155
|
-
CFLGraph* buildBigraph(ConstraintGraph *graph, Kind startKind, GrammarBase *grammar);
|
|
156
|
-
|
|
157
|
-
/// Build Bidirectional graph by copying nodes and edges from any graph inherited from GenericGraph
|
|
158
|
-
/// And transfer Load Store to copy edge and address edge to construct PEG style CFG
|
|
159
|
-
CFLGraph* buildBiPEGgraph(ConstraintGraph *graph, Kind startKind, GrammarBase *grammar, SVFIR* pag);
|
|
160
|
-
|
|
161
|
-
private:
|
|
162
|
-
void connectVGep(CFLGraph *cflGraph, ConstraintGraph *graph, ConstraintNode *src, ConstraintNode *dst, u32_t level, SVFIR* pag);
|
|
163
|
-
|
|
164
|
-
/// Handle edge except for the GEP
|
|
165
|
-
void addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Kind label);
|
|
166
|
-
|
|
167
|
-
/// Add Bidirectional GEP edge with attribute
|
|
168
|
-
void addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Attribute attri);
|
|
169
|
-
};
|
|
170
|
-
|
|
171
|
-
class VFCFLGraphBuilder : public CFLGraphBuilder
|
|
172
|
-
{
|
|
173
|
-
public:
|
|
174
|
-
/// Build Bidirectional graph by copying nodes and edges from const graph inherited from GenericGraph
|
|
175
|
-
CFLGraph* buildBigraph(SVFG *graph, Kind startKind, GrammarBase *grammar);
|
|
176
|
-
|
|
177
|
-
/// Build Bidirectional graph by copying nodes and edges from any graph inherited from GenericGraph
|
|
178
|
-
/// And transfer Load Store to copy edge and address edge to construct PEG style CFG
|
|
179
|
-
CFLGraph* buildBiPEGgraph(ConstraintGraph *graph, Kind startKind, GrammarBase *grammar, SVFIR* pag);
|
|
180
|
-
|
|
181
|
-
private:
|
|
182
|
-
void connectVGep(CFLGraph *cflGraph, ConstraintGraph *graph, ConstraintNode *src, ConstraintNode *dst, u32_t level, SVFIR* pag);
|
|
183
|
-
|
|
184
|
-
/// Handle edge except for the GEP
|
|
185
|
-
void addBiCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Kind label);
|
|
186
|
-
|
|
187
|
-
/// Add Bidirectional GEP edge with attribute
|
|
188
|
-
void addBiGepCFLEdge(CFLGraph *cflGraph, ConstraintNode* src, ConstraintNode* dst, CFLGrammar::Attribute attri);
|
|
189
|
-
};
|
|
190
|
-
|
|
191
|
-
}// SVF
|
|
192
|
-
|
|
193
|
-
#endif /* INCLUDE_CFL_CFLGRAPHBUILDER_H_*/
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
//===----- CFLSolver.h -- Context-free language reachability solver--------------//
|
|
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
|
-
* CFLSolver.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: March 5, 2022
|
|
27
|
-
* Author: Yulei Sui
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
#ifndef INCLUDE_CFL_CFLSolver_H_
|
|
31
|
-
#define INCLUDE_CFL_CFLSolver_H_
|
|
32
|
-
|
|
33
|
-
#include "Graphs/CFLGraph.h"
|
|
34
|
-
#include "CFL/CFLGrammar.h"
|
|
35
|
-
#include "Util/WorkList.h"
|
|
36
|
-
#include "CFL/CFLData.h"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
namespace SVF
|
|
40
|
-
{
|
|
41
|
-
|
|
42
|
-
class CFLSolver
|
|
43
|
-
{
|
|
44
|
-
|
|
45
|
-
public:
|
|
46
|
-
/// Define worklist
|
|
47
|
-
typedef FIFOWorkList<const CFLEdge*> WorkList;
|
|
48
|
-
typedef CFLGrammar::Production Production;
|
|
49
|
-
typedef CFLGrammar::Symbol Symbol;
|
|
50
|
-
|
|
51
|
-
static double numOfChecks;
|
|
52
|
-
|
|
53
|
-
CFLSolver(CFLGraph* _graph, CFLGrammar* _grammar): graph(_graph), grammar(_grammar)
|
|
54
|
-
{
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
~CFLSolver()
|
|
58
|
-
{
|
|
59
|
-
delete graph;
|
|
60
|
-
delete grammar;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/// Initialize worklist
|
|
64
|
-
void initialize();
|
|
65
|
-
|
|
66
|
-
/// Process CFLEdge
|
|
67
|
-
void processCFLEdge(const CFLEdge* Y_edge);
|
|
68
|
-
|
|
69
|
-
/// Start solving
|
|
70
|
-
void solve();
|
|
71
|
-
|
|
72
|
-
/// Return CFL Graph
|
|
73
|
-
inline const CFLGraph* getGraph() const
|
|
74
|
-
{
|
|
75
|
-
return graph;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/// Return CFL Grammar
|
|
79
|
-
inline const CFLGrammar* getGrammar() const
|
|
80
|
-
{
|
|
81
|
-
return grammar;
|
|
82
|
-
}
|
|
83
|
-
inline bool pushIntoWorklist(const CFLEdge* item)
|
|
84
|
-
{
|
|
85
|
-
return worklist.push(item);
|
|
86
|
-
}
|
|
87
|
-
inline bool isWorklistEmpty()
|
|
88
|
-
{
|
|
89
|
-
return worklist.empty();
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
protected:
|
|
93
|
-
/// Worklist operations
|
|
94
|
-
//@{
|
|
95
|
-
inline const CFLEdge* popFromWorklist()
|
|
96
|
-
{
|
|
97
|
-
return worklist.pop();
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
inline bool isInWorklist(const CFLEdge* item)
|
|
101
|
-
{
|
|
102
|
-
return worklist.find(item);
|
|
103
|
-
}
|
|
104
|
-
//@}
|
|
105
|
-
|
|
106
|
-
private:
|
|
107
|
-
CFLGraph* graph;
|
|
108
|
-
CFLGrammar* grammar;
|
|
109
|
-
/// Worklist for resolution
|
|
110
|
-
WorkList worklist;
|
|
111
|
-
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
/// Solver Utilize CFLData
|
|
115
|
-
class POCRSolver : public CFLSolver
|
|
116
|
-
{
|
|
117
|
-
/// Destructor
|
|
118
|
-
virtual ~POCRSolver()
|
|
119
|
-
{
|
|
120
|
-
delete _cflData;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
CFLData* cflData()
|
|
124
|
-
{
|
|
125
|
-
return _cflData;
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
//virtual void initialize();
|
|
129
|
-
|
|
130
|
-
private:
|
|
131
|
-
CFLData* _cflData;
|
|
132
|
-
|
|
133
|
-
};
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
#endif /* INCLUDE_CFL_CFLSolver_H_*/
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
//===- CFLStat.h -- CFL statistics--------------------------------------------//
|
|
2
|
-
//
|
|
3
|
-
// SVF: Static Value-Flow Analysis
|
|
4
|
-
//
|
|
5
|
-
// Copyright (C) <2013-2017> <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
|
-
* CFLStat.h
|
|
26
|
-
*
|
|
27
|
-
* Created on: 17/9/2022
|
|
28
|
-
* Author: Pei Xu
|
|
29
|
-
*/
|
|
30
|
-
|
|
31
|
-
#ifndef CFL_CFLSTAT_H_
|
|
32
|
-
#define CFL_CFLSTAT_H_
|
|
33
|
-
|
|
34
|
-
#include "Util/PTAStat.h"
|
|
35
|
-
#include "CFL/CFLAlias.h"
|
|
36
|
-
#include "CFL/CFLVF.h"
|
|
37
|
-
|
|
38
|
-
namespace SVF
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
/*!
|
|
42
|
-
* Statistics of CFL's analysis
|
|
43
|
-
*/
|
|
44
|
-
class CFLStat : public PTAStat
|
|
45
|
-
{
|
|
46
|
-
private:
|
|
47
|
-
CFLBase* pta;
|
|
48
|
-
|
|
49
|
-
public:
|
|
50
|
-
CFLStat(CFLBase* p);
|
|
51
|
-
|
|
52
|
-
virtual ~CFLStat()
|
|
53
|
-
{
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
virtual void performStat();
|
|
57
|
-
|
|
58
|
-
void CFLGraphStat();
|
|
59
|
-
|
|
60
|
-
void CFLGrammarStat();
|
|
61
|
-
|
|
62
|
-
void CFLSolverStat();
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
} // End namespace SVF
|
|
66
|
-
|
|
67
|
-
#endif /* CFL_CFLSTAT_H_ */
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
//===----- CFLVF.h -- CFL Value-Flow Client--------------//
|
|
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
|
-
* CFLVF.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: September 5, 2022
|
|
27
|
-
* Author: Pei Xu
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
#ifndef INCLUDE_CFL_CFLVF_H_
|
|
31
|
-
#define INCLUDE_CFL_CFLVF_H_
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
#include "CFL/CFLBase.h"
|
|
35
|
-
#include "CFL/CFLStat.h"
|
|
36
|
-
#include "SABER/SaberSVFGBuilder.h"
|
|
37
|
-
#include "WPA/Andersen.h"
|
|
38
|
-
|
|
39
|
-
namespace SVF
|
|
40
|
-
{
|
|
41
|
-
class CFLVF : public CFLBase
|
|
42
|
-
{
|
|
43
|
-
|
|
44
|
-
public:
|
|
45
|
-
CFLVF(SVFIR* ir) : CFLBase(ir, PointerAnalysis::CFLFSCS_WPA)
|
|
46
|
-
{
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
/// Initialize the grammar, graph, solver
|
|
50
|
-
virtual void initialize();
|
|
51
|
-
|
|
52
|
-
/// Print grammar and graph
|
|
53
|
-
virtual void finalize();
|
|
54
|
-
|
|
55
|
-
/// Build CFLGraph via VFG
|
|
56
|
-
void buildCFLGraph();
|
|
57
|
-
|
|
58
|
-
private:
|
|
59
|
-
SaberSVFGBuilder memSSA;
|
|
60
|
-
SVFG* svfg;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
} // End namespace SVF
|
|
64
|
-
|
|
65
|
-
#endif /* INCLUDE_CFL_CFLVF_H_*/
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
//===----- GrammarBuilder.h -- CFL Grammar Builder--------------//
|
|
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
|
-
* GrammarBuilder.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: April 26, 2022
|
|
27
|
-
* Author: Pei Xu
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
#ifndef INCLUDE_CFL_GRAMMARBUILDER_H_
|
|
31
|
-
#define INCLUDE_CFL_GRAMMARBUILDER_H_
|
|
32
|
-
|
|
33
|
-
#include "CFL/CFLGrammar.h"
|
|
34
|
-
|
|
35
|
-
namespace SVF
|
|
36
|
-
{
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Build Grammar from a user specified grammar text
|
|
40
|
-
*
|
|
41
|
-
* Symbol Format:
|
|
42
|
-
* <kind> [bar] [ _alpha | _number ]
|
|
43
|
-
* kind: any nonspace string start with alphabet, epsilon stand for empty string
|
|
44
|
-
* bar: stand for reverse edge
|
|
45
|
-
* alpha: any single alpha
|
|
46
|
-
* number: any number
|
|
47
|
-
* start with capital: nonterminal
|
|
48
|
-
* start with noncapital: terminal
|
|
49
|
-
*
|
|
50
|
-
* Production Format:
|
|
51
|
-
* <symbol> -> <symbol> *;
|
|
52
|
-
* LHS and RHS, Seperate by '->', symbol seperate by ' ', end by ';'
|
|
53
|
-
* support '*', '?', '(', ')'
|
|
54
|
-
*
|
|
55
|
-
* Input Format:
|
|
56
|
-
* Start:
|
|
57
|
-
* M // Specify Start Symbol in Second Line
|
|
58
|
-
* Terminal:
|
|
59
|
-
* Addr Copy Store Load Gep Vgep // Specify the order of terminal Addr->0, Copy->1 ..
|
|
60
|
-
* Productions: // Each Symbol seperate by 'Space', production end with ';'
|
|
61
|
-
* M -> V d; // Terminal in NonCapital
|
|
62
|
-
* M -> dbar V d; // NonTerminal in Capital
|
|
63
|
-
* V -> M abar M a M; // LHS and RHS, Seperate by '->'
|
|
64
|
-
* V -> ( M ? abar ) * M ? ( a M ? ) *; // Support '(' ')' '?' '*' four regular expression sign
|
|
65
|
-
* Gep_j -> Gep_i F vgep; // Support variable attribute with variable attribute
|
|
66
|
-
* Gep_1 -> Gep_2; // Support fix number attribute
|
|
67
|
-
*
|
|
68
|
-
*/
|
|
69
|
-
|
|
70
|
-
class GrammarBuilder
|
|
71
|
-
{
|
|
72
|
-
private:
|
|
73
|
-
std::string fileName;
|
|
74
|
-
GrammarBase *grammar;
|
|
75
|
-
|
|
76
|
-
/// Parse start symbol and production from file string
|
|
77
|
-
const inline std::string parseProductionsString() const;
|
|
78
|
-
|
|
79
|
-
/// Parse whole production string to production vector
|
|
80
|
-
const inline std::vector<std::string> loadWordProductions() const;
|
|
81
|
-
|
|
82
|
-
/// Strip front and tail space
|
|
83
|
-
const inline std::string stripSpace(std::string s) const;
|
|
84
|
-
|
|
85
|
-
public:
|
|
86
|
-
GrammarBuilder(std::string fileName): fileName(fileName), grammar(nullptr)
|
|
87
|
-
{
|
|
88
|
-
grammar = new GrammarBase();
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
/// Build grammarBase from fileName
|
|
92
|
-
GrammarBase* build() const;
|
|
93
|
-
|
|
94
|
-
/// Build grammarBase from fileName with preset str2KindMap
|
|
95
|
-
GrammarBase* build(Map<std::string, SVF::GrammarBase::Symbol> &preMap) const;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
} // SVF
|
|
99
|
-
|
|
100
|
-
#endif /* INCLUDE_CFL_GRAMMARBUILDER_H_ */
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
Start:
|
|
2
|
-
V
|
|
3
|
-
Terminal:
|
|
4
|
-
addr copy store load gep
|
|
5
|
-
Productions:
|
|
6
|
-
F -> ( copy M ? ) *;
|
|
7
|
-
Fbar -> ( M ? copybar ) *;
|
|
8
|
-
M -> addr V addrbar;
|
|
9
|
-
V -> Fbar V F | gepbar_i V gep_i | M | epsilon | gepbar_i Memcpy gep_i | gep_i Memcpy gepbar_i | ArrayPath V gep_0;
|
|
10
|
-
ArrayPath -> gepbar_0 gepbar_0 | ArrayPath gepbar_0;
|
|
11
|
-
Memcpy -> addrbar V addr | gep_i Memcpy gepbar_i | F Memcpy Fbar;
|