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,721 +0,0 @@
|
|
|
1
|
-
//===- SVFSymbols.h -- SVF Variables------------------------//
|
|
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
|
-
* SVFVariables.h
|
|
25
|
-
*
|
|
26
|
-
* Created on: Nov 11, 2013
|
|
27
|
-
* Author: Yulei Sui
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
#ifndef INCLUDE_SVFIR_SVFVARIABLE_H_
|
|
31
|
-
#define INCLUDE_SVFIR_SVFVARIABLE_H_
|
|
32
|
-
|
|
33
|
-
#include "Graphs/GenericGraph.h"
|
|
34
|
-
#include "SVFIR/SymbolTableInfo.h"
|
|
35
|
-
#include "SVFIR/SVFStatements.h"
|
|
36
|
-
|
|
37
|
-
namespace SVF
|
|
38
|
-
{
|
|
39
|
-
|
|
40
|
-
class SVFVar;
|
|
41
|
-
/*
|
|
42
|
-
* SVFIR program variables (PAGNodes)
|
|
43
|
-
*/
|
|
44
|
-
typedef GenericNode<SVFVar,SVFStmt> GenericPAGNodeTy;
|
|
45
|
-
class SVFVar : public GenericPAGNodeTy
|
|
46
|
-
{
|
|
47
|
-
friend class IRGraph;
|
|
48
|
-
friend class SVFIR;
|
|
49
|
-
friend class VFG;
|
|
50
|
-
|
|
51
|
-
public:
|
|
52
|
-
/// Nine kinds of SVFIR variables
|
|
53
|
-
/// ValNode: llvm pointer value
|
|
54
|
-
/// ObjNode: memory object
|
|
55
|
-
/// RetNode: unique return node
|
|
56
|
-
/// Vararg: unique node for vararg parameter
|
|
57
|
-
/// GepValNode: tempory gep value node for field sensitivity
|
|
58
|
-
/// GepValNode: tempory gep obj node for field sensitivity
|
|
59
|
-
/// FIObjNode: for field insensitive analysis
|
|
60
|
-
/// DummyValNode and DummyObjNode: for non-llvm-value node
|
|
61
|
-
enum PNODEK
|
|
62
|
-
{
|
|
63
|
-
ValNode,
|
|
64
|
-
ObjNode,
|
|
65
|
-
RetNode,
|
|
66
|
-
VarargNode,
|
|
67
|
-
GepValNode,
|
|
68
|
-
GepObjNode,
|
|
69
|
-
FIObjNode,
|
|
70
|
-
DummyValNode,
|
|
71
|
-
DummyObjNode,
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
protected:
|
|
76
|
-
const SVFValue* value; ///< value of this SVFIR node
|
|
77
|
-
SVFStmt::KindToSVFStmtMapTy InEdgeKindToSetMap;
|
|
78
|
-
SVFStmt::KindToSVFStmtMapTy OutEdgeKindToSetMap;
|
|
79
|
-
bool isPtr; /// whether it is a pointer (top-level or address-taken)
|
|
80
|
-
|
|
81
|
-
public:
|
|
82
|
-
/// Constructor
|
|
83
|
-
SVFVar(const SVFValue* val, NodeID i, PNODEK k);
|
|
84
|
-
/// Destructor
|
|
85
|
-
virtual ~SVFVar()
|
|
86
|
-
{
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/// Get/has methods of the components
|
|
90
|
-
//@{
|
|
91
|
-
inline const SVFValue* getValue() const
|
|
92
|
-
{
|
|
93
|
-
assert((this->getNodeKind() != DummyValNode && this->getNodeKind() != DummyObjNode) && "dummy node do not have value!");
|
|
94
|
-
assert((SymbolTableInfo::isBlkObjOrConstantObj(this->getId())==false) && "blackhole and constant obj do not have value");
|
|
95
|
-
assert(value && "value is null (GepObjNode whose basenode is a DummyObj?)");
|
|
96
|
-
return value;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/// Return type of the value
|
|
100
|
-
inline virtual const SVFType* getType() const
|
|
101
|
-
{
|
|
102
|
-
if (value)
|
|
103
|
-
return value->getType();
|
|
104
|
-
return nullptr;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
inline bool hasValue() const
|
|
108
|
-
{
|
|
109
|
-
return value!=nullptr;
|
|
110
|
-
}
|
|
111
|
-
/// Whether it is a pointer
|
|
112
|
-
virtual inline bool isPointer() const
|
|
113
|
-
{
|
|
114
|
-
return isPtr;
|
|
115
|
-
}
|
|
116
|
-
/// Whether it is constant data, i.e., "0", "1.001", "str"
|
|
117
|
-
/// or llvm's metadata, i.e., metadata !4087
|
|
118
|
-
bool isConstDataOrAggDataButNotNullPtr() const;
|
|
119
|
-
|
|
120
|
-
/// Whether this is an isoloated node on the SVFIR graph
|
|
121
|
-
bool isIsolatedNode() const;
|
|
122
|
-
|
|
123
|
-
/// Get name of the LLVM value
|
|
124
|
-
virtual const std::string getValueName() const = 0;
|
|
125
|
-
|
|
126
|
-
/// Return the function that this SVFVar resides in. Return nullptr if it is a global or constantexpr node
|
|
127
|
-
virtual inline const SVFFunction* getFunction() const
|
|
128
|
-
{
|
|
129
|
-
if(value)
|
|
130
|
-
{
|
|
131
|
-
if(const SVFInstruction* inst = SVFUtil::dyn_cast<SVFInstruction>(value))
|
|
132
|
-
return inst->getParent()->getParent();
|
|
133
|
-
else if (const SVFArgument* arg = SVFUtil::dyn_cast<SVFArgument>(value))
|
|
134
|
-
return arg->getParent();
|
|
135
|
-
else if (const SVFFunction* fun = SVFUtil::dyn_cast<SVFFunction>(value))
|
|
136
|
-
return fun;
|
|
137
|
-
}
|
|
138
|
-
return nullptr;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/// Get incoming SVFIR statements (edges)
|
|
142
|
-
inline SVFStmt::SVFStmtSetTy& getIncomingEdges(SVFStmt::PEDGEK kind)
|
|
143
|
-
{
|
|
144
|
-
return InEdgeKindToSetMap[kind];
|
|
145
|
-
}
|
|
146
|
-
/// Get outgoing SVFIR statements (edges)
|
|
147
|
-
inline SVFStmt::SVFStmtSetTy& getOutgoingEdges(SVFStmt::PEDGEK kind)
|
|
148
|
-
{
|
|
149
|
-
return OutEdgeKindToSetMap[kind];
|
|
150
|
-
}
|
|
151
|
-
/// Has incoming SVFIR statements (edges)
|
|
152
|
-
inline bool hasIncomingEdges(SVFStmt::PEDGEK kind) const
|
|
153
|
-
{
|
|
154
|
-
SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);
|
|
155
|
-
if (it != InEdgeKindToSetMap.end())
|
|
156
|
-
return (!it->second.empty());
|
|
157
|
-
else
|
|
158
|
-
return false;
|
|
159
|
-
}
|
|
160
|
-
/// Has outgoing SVFIR statements (edges)
|
|
161
|
-
inline bool hasOutgoingEdges(SVFStmt::PEDGEK kind) const
|
|
162
|
-
{
|
|
163
|
-
SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);
|
|
164
|
-
if (it != OutEdgeKindToSetMap.end())
|
|
165
|
-
return (!it->second.empty());
|
|
166
|
-
else
|
|
167
|
-
return false;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/// Get incoming SVFStmt iterator
|
|
171
|
-
inline SVFStmt::SVFStmtSetTy::iterator getIncomingEdgesBegin(SVFStmt::PEDGEK kind) const
|
|
172
|
-
{
|
|
173
|
-
SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);
|
|
174
|
-
assert(it!=InEdgeKindToSetMap.end() && "The node does not have such kind of edge");
|
|
175
|
-
return it->second.begin();
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/// Get incoming SVFStmt iterator
|
|
179
|
-
inline SVFStmt::SVFStmtSetTy::iterator getIncomingEdgesEnd(SVFStmt::PEDGEK kind) const
|
|
180
|
-
{
|
|
181
|
-
SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(kind);
|
|
182
|
-
assert(it!=InEdgeKindToSetMap.end() && "The node does not have such kind of edge");
|
|
183
|
-
return it->second.end();
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/// Get outgoing SVFStmt iterator
|
|
187
|
-
inline SVFStmt::SVFStmtSetTy::iterator getOutgoingEdgesBegin(SVFStmt::PEDGEK kind) const
|
|
188
|
-
{
|
|
189
|
-
SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);
|
|
190
|
-
assert(it!=OutEdgeKindToSetMap.end() && "The node does not have such kind of edge");
|
|
191
|
-
return it->second.begin();
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
/// Get outgoing SVFStmt iterator
|
|
195
|
-
inline SVFStmt::SVFStmtSetTy::iterator getOutgoingEdgesEnd(SVFStmt::PEDGEK kind) const
|
|
196
|
-
{
|
|
197
|
-
SVFStmt::KindToSVFStmtMapTy::const_iterator it = OutEdgeKindToSetMap.find(kind);
|
|
198
|
-
assert(it!=OutEdgeKindToSetMap.end() && "The node does not have such kind of edge");
|
|
199
|
-
return it->second.end();
|
|
200
|
-
}
|
|
201
|
-
//@}
|
|
202
|
-
|
|
203
|
-
private:
|
|
204
|
-
/// add methods of the components
|
|
205
|
-
//@{
|
|
206
|
-
inline void addInEdge(SVFStmt* inEdge)
|
|
207
|
-
{
|
|
208
|
-
GNodeK kind = inEdge->getEdgeKind();
|
|
209
|
-
InEdgeKindToSetMap[kind].insert(inEdge);
|
|
210
|
-
addIncomingEdge(inEdge);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
inline void addOutEdge(SVFStmt* outEdge)
|
|
214
|
-
{
|
|
215
|
-
GNodeK kind = outEdge->getEdgeKind();
|
|
216
|
-
OutEdgeKindToSetMap[kind].insert(outEdge);
|
|
217
|
-
addOutgoingEdge(outEdge);
|
|
218
|
-
}
|
|
219
|
-
/// Has incoming VariantGepEdges
|
|
220
|
-
inline bool hasIncomingVariantGepEdge() const
|
|
221
|
-
{
|
|
222
|
-
SVFStmt::KindToSVFStmtMapTy::const_iterator it = InEdgeKindToSetMap.find(SVFStmt::Gep);
|
|
223
|
-
if (it != InEdgeKindToSetMap.end())
|
|
224
|
-
{
|
|
225
|
-
for(auto gep : it->second)
|
|
226
|
-
{
|
|
227
|
-
if(SVFUtil::cast<GepStmt>(gep)->isVariantFieldGep())
|
|
228
|
-
return true;
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return false;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
public:
|
|
235
|
-
virtual const std::string toString() const;
|
|
236
|
-
|
|
237
|
-
/// Dump to console for debugging
|
|
238
|
-
void dump() const;
|
|
239
|
-
|
|
240
|
-
//@}
|
|
241
|
-
/// Overloading operator << for dumping SVFVar value
|
|
242
|
-
//@{
|
|
243
|
-
friend OutStream& operator<< (OutStream &o, const SVFVar &node)
|
|
244
|
-
{
|
|
245
|
-
o << node.toString();
|
|
246
|
-
return o;
|
|
247
|
-
}
|
|
248
|
-
//@}
|
|
249
|
-
};
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
/*
|
|
254
|
-
* Value (Pointer) variable
|
|
255
|
-
*/
|
|
256
|
-
class ValVar: public SVFVar
|
|
257
|
-
{
|
|
258
|
-
|
|
259
|
-
public:
|
|
260
|
-
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
261
|
-
//@{
|
|
262
|
-
static inline bool classof(const ValVar *)
|
|
263
|
-
{
|
|
264
|
-
return true;
|
|
265
|
-
}
|
|
266
|
-
static inline bool classof(const SVFVar *node)
|
|
267
|
-
{
|
|
268
|
-
return node->getNodeKind() == SVFVar::ValNode ||
|
|
269
|
-
node->getNodeKind() == SVFVar::GepValNode ||
|
|
270
|
-
node->getNodeKind() == SVFVar::RetNode ||
|
|
271
|
-
node->getNodeKind() == SVFVar::VarargNode ||
|
|
272
|
-
node->getNodeKind() == SVFVar::DummyValNode;
|
|
273
|
-
}
|
|
274
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
275
|
-
{
|
|
276
|
-
return node->getNodeKind() == SVFVar::ValNode ||
|
|
277
|
-
node->getNodeKind() == SVFVar::GepValNode ||
|
|
278
|
-
node->getNodeKind() == SVFVar::RetNode ||
|
|
279
|
-
node->getNodeKind() == SVFVar::VarargNode ||
|
|
280
|
-
node->getNodeKind() == SVFVar::DummyValNode;
|
|
281
|
-
}
|
|
282
|
-
//@}
|
|
283
|
-
|
|
284
|
-
/// Constructor
|
|
285
|
-
ValVar(const SVFValue* val, NodeID i, PNODEK ty = ValNode) :
|
|
286
|
-
SVFVar(val, i, ty)
|
|
287
|
-
{
|
|
288
|
-
}
|
|
289
|
-
/// Return name of a LLVM value
|
|
290
|
-
inline const std::string getValueName() const
|
|
291
|
-
{
|
|
292
|
-
if (value)
|
|
293
|
-
return value->getName();
|
|
294
|
-
return "";
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
virtual const std::string toString() const;
|
|
298
|
-
};
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
/*
|
|
302
|
-
* Memory Object variable
|
|
303
|
-
*/
|
|
304
|
-
class ObjVar: public SVFVar
|
|
305
|
-
{
|
|
306
|
-
|
|
307
|
-
protected:
|
|
308
|
-
const MemObj* mem; ///< memory object
|
|
309
|
-
/// Constructor
|
|
310
|
-
ObjVar(const SVFValue* val, NodeID i, const MemObj* m, PNODEK ty = ObjNode) :
|
|
311
|
-
SVFVar(val, i, ty), mem(m)
|
|
312
|
-
{
|
|
313
|
-
}
|
|
314
|
-
public:
|
|
315
|
-
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
316
|
-
//@{
|
|
317
|
-
static inline bool classof(const ObjVar *)
|
|
318
|
-
{
|
|
319
|
-
return true;
|
|
320
|
-
}
|
|
321
|
-
static inline bool classof(const SVFVar *node)
|
|
322
|
-
{
|
|
323
|
-
return node->getNodeKind() == SVFVar::ObjNode ||
|
|
324
|
-
node->getNodeKind() == SVFVar::GepObjNode ||
|
|
325
|
-
node->getNodeKind() == SVFVar::FIObjNode ||
|
|
326
|
-
node->getNodeKind() == SVFVar::DummyObjNode;
|
|
327
|
-
}
|
|
328
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
329
|
-
{
|
|
330
|
-
return node->getNodeKind() == SVFVar::ObjNode ||
|
|
331
|
-
node->getNodeKind() == SVFVar::GepObjNode ||
|
|
332
|
-
node->getNodeKind() == SVFVar::FIObjNode ||
|
|
333
|
-
node->getNodeKind() == SVFVar::DummyObjNode;
|
|
334
|
-
}
|
|
335
|
-
//@}
|
|
336
|
-
|
|
337
|
-
/// Return memory object
|
|
338
|
-
const MemObj* getMemObj() const
|
|
339
|
-
{
|
|
340
|
-
return mem;
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
/// Return name of a LLVM value
|
|
344
|
-
virtual const std::string getValueName() const
|
|
345
|
-
{
|
|
346
|
-
if (value)
|
|
347
|
-
return value->getName();
|
|
348
|
-
return "";
|
|
349
|
-
}
|
|
350
|
-
/// Return type of the value
|
|
351
|
-
inline virtual const SVFType* getType() const
|
|
352
|
-
{
|
|
353
|
-
return mem->getType();
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
virtual const std::string toString() const;
|
|
357
|
-
};
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
/*
|
|
361
|
-
* Gep Value (Pointer) variable, this variable can be dynamic generated for field sensitive analysis
|
|
362
|
-
* e.g. memcpy, temp gep value variable needs to be created
|
|
363
|
-
* Each Gep Value variable is connected to base value variable via gep edge
|
|
364
|
-
*/
|
|
365
|
-
class GepValVar: public ValVar
|
|
366
|
-
{
|
|
367
|
-
|
|
368
|
-
private:
|
|
369
|
-
LocationSet ls; // LocationSet
|
|
370
|
-
const SVFType* gepValType;
|
|
371
|
-
|
|
372
|
-
public:
|
|
373
|
-
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
374
|
-
//@{
|
|
375
|
-
static inline bool classof(const GepValVar *)
|
|
376
|
-
{
|
|
377
|
-
return true;
|
|
378
|
-
}
|
|
379
|
-
static inline bool classof(const ValVar * node)
|
|
380
|
-
{
|
|
381
|
-
return node->getNodeKind() == SVFVar::GepValNode;
|
|
382
|
-
}
|
|
383
|
-
static inline bool classof(const SVFVar *node)
|
|
384
|
-
{
|
|
385
|
-
return node->getNodeKind() == SVFVar::GepValNode;
|
|
386
|
-
}
|
|
387
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
388
|
-
{
|
|
389
|
-
return node->getNodeKind() == SVFVar::GepValNode;
|
|
390
|
-
}
|
|
391
|
-
//@}
|
|
392
|
-
|
|
393
|
-
/// Constructor
|
|
394
|
-
GepValVar(const SVFValue* val, NodeID i, const LocationSet& l, const SVFType* ty) :
|
|
395
|
-
ValVar(val, i, GepValNode), ls(l), gepValType(ty)
|
|
396
|
-
{
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
/// offset of the base value variable
|
|
400
|
-
inline s32_t getConstantFieldIdx() const
|
|
401
|
-
{
|
|
402
|
-
return ls.accumulateConstantFieldIdx();
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
/// Return name of a LLVM value
|
|
406
|
-
inline const std::string getValueName() const
|
|
407
|
-
{
|
|
408
|
-
if (value)
|
|
409
|
-
return value->getName() + "_" + std::to_string(getConstantFieldIdx());
|
|
410
|
-
return "offset_" + std::to_string(getConstantFieldIdx());
|
|
411
|
-
}
|
|
412
|
-
|
|
413
|
-
inline const SVFType* getType() const
|
|
414
|
-
{
|
|
415
|
-
return gepValType;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
virtual const std::string toString() const;
|
|
419
|
-
};
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
/*
|
|
423
|
-
* Gep Obj variable, this is dynamic generated for field sensitive analysis
|
|
424
|
-
* Each gep obj variable is one field of a MemObj (base)
|
|
425
|
-
*/
|
|
426
|
-
class GepObjVar: public ObjVar
|
|
427
|
-
{
|
|
428
|
-
private:
|
|
429
|
-
LocationSet ls;
|
|
430
|
-
NodeID base = 0;
|
|
431
|
-
|
|
432
|
-
public:
|
|
433
|
-
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
434
|
-
//@{
|
|
435
|
-
static inline bool classof(const GepObjVar *)
|
|
436
|
-
{
|
|
437
|
-
return true;
|
|
438
|
-
}
|
|
439
|
-
static inline bool classof(const ObjVar * node)
|
|
440
|
-
{
|
|
441
|
-
return node->getNodeKind() == SVFVar::GepObjNode;
|
|
442
|
-
}
|
|
443
|
-
static inline bool classof(const SVFVar *node)
|
|
444
|
-
{
|
|
445
|
-
return node->getNodeKind() == SVFVar::GepObjNode;
|
|
446
|
-
}
|
|
447
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
448
|
-
{
|
|
449
|
-
return node->getNodeKind() == SVFVar::GepObjNode;
|
|
450
|
-
}
|
|
451
|
-
//@}
|
|
452
|
-
|
|
453
|
-
/// Constructor
|
|
454
|
-
GepObjVar(const MemObj* mem, NodeID i, const LocationSet& l, PNODEK ty = GepObjNode) :
|
|
455
|
-
ObjVar(mem->getValue(), i, mem, ty), ls(l)
|
|
456
|
-
{
|
|
457
|
-
base = mem->getId();
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
/// offset of the mem object
|
|
461
|
-
inline const LocationSet& getLocationSet() const
|
|
462
|
-
{
|
|
463
|
-
return ls;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
/// offset of the mem object
|
|
467
|
-
inline s32_t getConstantFieldIdx() const
|
|
468
|
-
{
|
|
469
|
-
return ls.accumulateConstantFieldIdx();
|
|
470
|
-
}
|
|
471
|
-
|
|
472
|
-
/// Set the base object from which this GEP node came from.
|
|
473
|
-
inline void setBaseNode(NodeID base)
|
|
474
|
-
{
|
|
475
|
-
this->base = base;
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
/// Return the base object from which this GEP node came from.
|
|
479
|
-
inline NodeID getBaseNode(void) const
|
|
480
|
-
{
|
|
481
|
-
return base;
|
|
482
|
-
}
|
|
483
|
-
|
|
484
|
-
/// Return the type of this gep object
|
|
485
|
-
inline virtual const SVFType* getType() const
|
|
486
|
-
{
|
|
487
|
-
return SymbolTableInfo::SymbolInfo()->getFlatternedElemType(mem->getType(), ls.accumulateConstantFieldIdx());
|
|
488
|
-
}
|
|
489
|
-
|
|
490
|
-
/// Return name of a LLVM value
|
|
491
|
-
inline const std::string getValueName() const
|
|
492
|
-
{
|
|
493
|
-
if (value)
|
|
494
|
-
return value->getName() + "_" + std::to_string(ls.accumulateConstantFieldIdx());
|
|
495
|
-
return "offset_" + std::to_string(ls.accumulateConstantFieldIdx());
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
virtual const std::string toString() const;
|
|
499
|
-
};
|
|
500
|
-
|
|
501
|
-
/*
|
|
502
|
-
* Field-insensitive Gep Obj variable, this is dynamic generated for field sensitive analysis
|
|
503
|
-
* Each field-insensitive gep obj node represents all fields of a MemObj (base)
|
|
504
|
-
*/
|
|
505
|
-
class FIObjVar: public ObjVar
|
|
506
|
-
{
|
|
507
|
-
public:
|
|
508
|
-
|
|
509
|
-
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
510
|
-
//@{
|
|
511
|
-
static inline bool classof(const FIObjVar *)
|
|
512
|
-
{
|
|
513
|
-
return true;
|
|
514
|
-
}
|
|
515
|
-
static inline bool classof(const ObjVar * node)
|
|
516
|
-
{
|
|
517
|
-
return node->getNodeKind() == SVFVar::FIObjNode;
|
|
518
|
-
}
|
|
519
|
-
static inline bool classof(const SVFVar *node)
|
|
520
|
-
{
|
|
521
|
-
return node->getNodeKind() == SVFVar::FIObjNode;
|
|
522
|
-
}
|
|
523
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
524
|
-
{
|
|
525
|
-
return node->getNodeKind() == SVFVar::FIObjNode;
|
|
526
|
-
}
|
|
527
|
-
//@}
|
|
528
|
-
|
|
529
|
-
/// Constructor
|
|
530
|
-
FIObjVar(const SVFValue* val, NodeID i, const MemObj* mem, PNODEK ty = FIObjNode) :
|
|
531
|
-
ObjVar(val, i, mem, ty)
|
|
532
|
-
{
|
|
533
|
-
}
|
|
534
|
-
|
|
535
|
-
/// Return name of a LLVM value
|
|
536
|
-
inline const std::string getValueName() const
|
|
537
|
-
{
|
|
538
|
-
if (value)
|
|
539
|
-
return value->getName() + " (base object)";
|
|
540
|
-
return " (base object)";
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
virtual const std::string toString() const;
|
|
544
|
-
};
|
|
545
|
-
|
|
546
|
-
/*
|
|
547
|
-
* Unique Return node of a procedure
|
|
548
|
-
*/
|
|
549
|
-
class RetPN: public ValVar
|
|
550
|
-
{
|
|
551
|
-
|
|
552
|
-
public:
|
|
553
|
-
|
|
554
|
-
//@{ Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
555
|
-
static inline bool classof(const RetPN *)
|
|
556
|
-
{
|
|
557
|
-
return true;
|
|
558
|
-
}
|
|
559
|
-
static inline bool classof(const SVFVar *node)
|
|
560
|
-
{
|
|
561
|
-
return node->getNodeKind() == SVFVar::RetNode;
|
|
562
|
-
}
|
|
563
|
-
static inline bool classof(const ValVar *node)
|
|
564
|
-
{
|
|
565
|
-
return node->getNodeKind() == SVFVar::RetNode;
|
|
566
|
-
}
|
|
567
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
568
|
-
{
|
|
569
|
-
return node->getNodeKind() == SVFVar::RetNode;
|
|
570
|
-
}
|
|
571
|
-
//@}
|
|
572
|
-
|
|
573
|
-
/// Constructor
|
|
574
|
-
RetPN(const SVFFunction* val, NodeID i) :
|
|
575
|
-
ValVar(val, i, RetNode)
|
|
576
|
-
{
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
/// Return name of a LLVM value
|
|
580
|
-
const std::string getValueName() const
|
|
581
|
-
{
|
|
582
|
-
return value->getName() + "_ret";
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
virtual const std::string toString() const;
|
|
586
|
-
};
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
/*
|
|
590
|
-
* Unique vararg node of a procedure
|
|
591
|
-
*/
|
|
592
|
-
class VarArgPN: public ValVar
|
|
593
|
-
{
|
|
594
|
-
|
|
595
|
-
public:
|
|
596
|
-
|
|
597
|
-
//@{ Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
598
|
-
static inline bool classof(const VarArgPN *)
|
|
599
|
-
{
|
|
600
|
-
return true;
|
|
601
|
-
}
|
|
602
|
-
static inline bool classof(const SVFVar *node)
|
|
603
|
-
{
|
|
604
|
-
return node->getNodeKind() == SVFVar::VarargNode;
|
|
605
|
-
}
|
|
606
|
-
static inline bool classof(const ValVar *node)
|
|
607
|
-
{
|
|
608
|
-
return node->getNodeKind() == SVFVar::VarargNode;
|
|
609
|
-
}
|
|
610
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
611
|
-
{
|
|
612
|
-
return node->getNodeKind() == SVFVar::VarargNode;
|
|
613
|
-
}
|
|
614
|
-
//@}
|
|
615
|
-
|
|
616
|
-
/// Constructor
|
|
617
|
-
VarArgPN(const SVFFunction* val, NodeID i) :
|
|
618
|
-
ValVar(val, i, VarargNode)
|
|
619
|
-
{
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
/// Return name of a LLVM value
|
|
623
|
-
inline const std::string getValueName() const
|
|
624
|
-
{
|
|
625
|
-
return value->getName() + "_vararg";
|
|
626
|
-
}
|
|
627
|
-
|
|
628
|
-
virtual const std::string toString() const;
|
|
629
|
-
};
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
/*
|
|
635
|
-
* Dummy variable without any LLVM value
|
|
636
|
-
*/
|
|
637
|
-
class DummyValVar: public ValVar
|
|
638
|
-
{
|
|
639
|
-
|
|
640
|
-
public:
|
|
641
|
-
|
|
642
|
-
//@{ Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
643
|
-
static inline bool classof(const DummyValVar *)
|
|
644
|
-
{
|
|
645
|
-
return true;
|
|
646
|
-
}
|
|
647
|
-
static inline bool classof(const SVFVar *node)
|
|
648
|
-
{
|
|
649
|
-
return node->getNodeKind() == SVFVar::DummyValNode;
|
|
650
|
-
}
|
|
651
|
-
static inline bool classof(const ValVar *node)
|
|
652
|
-
{
|
|
653
|
-
return node->getNodeKind() == SVFVar::DummyValNode;
|
|
654
|
-
}
|
|
655
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
656
|
-
{
|
|
657
|
-
return node->getNodeKind() == SVFVar::DummyValNode;
|
|
658
|
-
}
|
|
659
|
-
//@}
|
|
660
|
-
|
|
661
|
-
/// Constructor
|
|
662
|
-
DummyValVar(NodeID i) : ValVar(nullptr, i, DummyValNode)
|
|
663
|
-
{
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
/// Return name of this node
|
|
668
|
-
inline const std::string getValueName() const
|
|
669
|
-
{
|
|
670
|
-
return "dummyVal";
|
|
671
|
-
}
|
|
672
|
-
|
|
673
|
-
virtual const std::string toString() const;
|
|
674
|
-
};
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
/*
|
|
678
|
-
* Dummy object variable
|
|
679
|
-
*/
|
|
680
|
-
class DummyObjVar: public ObjVar
|
|
681
|
-
{
|
|
682
|
-
|
|
683
|
-
public:
|
|
684
|
-
|
|
685
|
-
//@{ Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
686
|
-
static inline bool classof(const DummyObjVar *)
|
|
687
|
-
{
|
|
688
|
-
return true;
|
|
689
|
-
}
|
|
690
|
-
static inline bool classof(const SVFVar *node)
|
|
691
|
-
{
|
|
692
|
-
return node->getNodeKind() == SVFVar::DummyObjNode;
|
|
693
|
-
}
|
|
694
|
-
static inline bool classof(const ObjVar *node)
|
|
695
|
-
{
|
|
696
|
-
return node->getNodeKind() == SVFVar::DummyObjNode;
|
|
697
|
-
}
|
|
698
|
-
static inline bool classof(const GenericPAGNodeTy *node)
|
|
699
|
-
{
|
|
700
|
-
return node->getNodeKind() == SVFVar::DummyObjNode;
|
|
701
|
-
}
|
|
702
|
-
//@}
|
|
703
|
-
|
|
704
|
-
/// Constructor
|
|
705
|
-
DummyObjVar(NodeID i,const MemObj* m, PNODEK ty = DummyObjNode)
|
|
706
|
-
: ObjVar(nullptr, i, m, ty)
|
|
707
|
-
{
|
|
708
|
-
}
|
|
709
|
-
|
|
710
|
-
/// Return name of this node
|
|
711
|
-
inline const std::string getValueName() const
|
|
712
|
-
{
|
|
713
|
-
return "dummyObj";
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
virtual const std::string toString() const;
|
|
717
|
-
};
|
|
718
|
-
|
|
719
|
-
} // End namespace SVF
|
|
720
|
-
|
|
721
|
-
#endif /* INCLUDE_SVFIR_SVFVARIABLE_H_ */
|