svf-lib 1.0.2319 → 1.0.2321
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-linux-aarch64/Release-build/include/{Util → SVF/Util}/WorkList.h +0 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/Modules/FindZ3.cmake +93 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfig.cmake +106 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFTargets-release.cmake +101 -0
- package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFTargets.cmake +180 -0
- package/SVF-linux-aarch64/Release-build/lib/libSvfCore.so.3.1 +0 -0
- package/SVF-linux-aarch64/Release-build/lib/libSvfLLVM.so.3.1 +0 -0
- package/SVF-linux-aarch64/Release-build/lib/pkgconfig/SVF.pc +12 -0
- package/SVF-osx/Release-build/bin/ae +0 -0
- package/SVF-osx/Release-build/bin/cfl +0 -0
- package/SVF-osx/Release-build/bin/dvf +0 -0
- package/SVF-osx/Release-build/bin/llvm2svf +0 -0
- package/SVF-osx/Release-build/bin/mta +0 -0
- package/SVF-osx/Release-build/bin/saber +0 -0
- package/SVF-osx/Release-build/bin/svf-ex +0 -0
- package/SVF-osx/Release-build/bin/wpa +0 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/AbstractState.h +425 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/AbstractValue.h +157 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/AddressValue.h +225 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/ICFGWTO.h +135 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/IntervalValue.h +1055 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/NumericValue.h +1292 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/RelExeState.h +226 -0
- package/SVF-osx/Release-build/include/SVF/AE/Core/RelationSolver.h +91 -0
- package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AEDetector.h +439 -0
- package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AbsExtAPI.h +138 -0
- package/SVF-osx/Release-build/include/SVF/AE/Svfexe/AbstractInterpretation.h +384 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFGNormalizer.h +84 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFGrammar.h +468 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLAlias.h +168 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLBase.h +118 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLGramGraphChecker.h +74 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLGraphBuilder.h +168 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLSVFGBuilder.h +58 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLSolver.h +374 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLStat.h +67 -0
- package/SVF-osx/Release-build/include/SVF/CFL/CFLVF.h +68 -0
- package/SVF-osx/Release-build/include/SVF/CFL/GrammarBuilder.h +100 -0
- package/SVF-osx/Release-build/include/SVF/DDA/ContextDDA.h +230 -0
- package/SVF-osx/Release-build/include/SVF/DDA/DDAClient.h +163 -0
- package/SVF-osx/Release-build/include/SVF/DDA/DDAPass.h +102 -0
- package/SVF-osx/Release-build/include/SVF/DDA/DDAStat.h +121 -0
- package/SVF-osx/Release-build/include/SVF/DDA/DDAVFSolver.h +794 -0
- package/SVF-osx/Release-build/include/SVF/DDA/FlowDDA.h +178 -0
- package/SVF-osx/Release-build/include/SVF/FastCluster/fastcluster.h +80 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/BasicBlockG.h +318 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/CDG.h +482 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/CFLGraph.h +232 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/CHG.h +368 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/CallGraph.h +497 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ConsG.h +402 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ConsGEdge.h +355 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ConsGNode.h +418 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/DOTGraphTraits.h +188 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/GenericGraph.h +628 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/GraphPrinter.h +111 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/GraphTraits.h +150 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/GraphWriter.h +380 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ICFG.h +331 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ICFGEdge.h +281 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ICFGNode.h +669 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ICFGStat.h +164 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/IRGraph.h +398 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SCC.h +375 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFG.h +491 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFGEdge.h +237 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFGNode.h +501 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFGOPT.h +372 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/SVFGStat.h +273 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/ThreadCallGraph.h +399 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/VFG.h +726 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/VFGEdge.h +295 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/VFGNode.h +1266 -0
- package/SVF-osx/Release-build/include/SVF/Graphs/WTO.h +872 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/MSSAMuChi.h +722 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/MemPartition.h +169 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/MemRegion.h +489 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/MemSSA.h +452 -0
- package/SVF-osx/Release-build/include/SVF/MSSA/SVFGBuilder.h +104 -0
- package/SVF-osx/Release-build/include/SVF/MTA/LockAnalysis.h +533 -0
- package/SVF-osx/Release-build/include/SVF/MTA/MHP.h +546 -0
- package/SVF-osx/Release-build/include/SVF/MTA/MTA.h +97 -0
- package/SVF-osx/Release-build/include/SVF/MTA/MTAStat.h +73 -0
- package/SVF-osx/Release-build/include/SVF/MTA/TCT.h +620 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/AbstractPointsToDS.h +316 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/AccessPath.h +194 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/ConditionalPT.h +878 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/MutablePointsToDS.h +1025 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PersistentPointsToCache.h +463 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PersistentPointsToDS.h +955 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PointerAnalysis.h +428 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PointerAnalysisImpl.h +602 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/PointsTo.h +255 -0
- package/SVF-osx/Release-build/include/SVF/MemoryModel/SVFLoop.h +167 -0
- package/SVF-osx/Release-build/include/SVF/SABER/DoubleFreeChecker.h +76 -0
- package/SVF-osx/Release-build/include/SVF/SABER/FileChecker.h +80 -0
- package/SVF-osx/Release-build/include/SVF/SABER/LeakChecker.h +122 -0
- package/SVF-osx/Release-build/include/SVF/SABER/ProgSlice.h +327 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SaberCheckerAPI.h +151 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SaberCondAllocator.h +317 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SaberSVFGBuilder.h +114 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SrcSnkDDA.h +327 -0
- package/SVF-osx/Release-build/include/SVF/SABER/SrcSnkSolver.h +186 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/BasicTypes.h +280 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/BreakConstantExpr.h +93 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/CHGBuilder.h +78 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/CppUtil.h +184 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/DCHG.h +474 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/GEPTypeBridgeIterator.h +183 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/ICFGBuilder.h +160 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMLoopAnalysis.h +60 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMModule.h +527 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/LLVMUtil.h +433 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/ObjTypeInference.h +129 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/SVFIRBuilder.h +523 -0
- package/SVF-osx/Release-build/include/SVF/SVF-LLVM/SymbolTableBuilder.h +132 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/ObjTypeInfo.h +224 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/PAGBuilderFromFile.h +80 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFIR.h +856 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFStatements.h +1330 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFType.h +606 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFValue.h +338 -0
- package/SVF-osx/Release-build/include/SVF/SVFIR/SVFVariables.h +2212 -0
- package/SVF-osx/Release-build/include/SVF/Util/Annotator.h +180 -0
- package/SVF-osx/Release-build/include/SVF/Util/BitVector.h +55 -0
- package/SVF-osx/Release-build/include/SVF/Util/CDGBuilder.h +107 -0
- package/SVF-osx/Release-build/include/SVF/Util/CallGraphBuilder.h +61 -0
- package/SVF-osx/Release-build/include/SVF/Util/Casting.h +426 -0
- package/SVF-osx/Release-build/include/SVF/Util/CommandLine.h +530 -0
- package/SVF-osx/Release-build/include/SVF/Util/CoreBitVector.h +214 -0
- package/SVF-osx/Release-build/include/SVF/Util/CxtStmt.h +502 -0
- package/SVF-osx/Release-build/include/SVF/Util/DPItem.h +618 -0
- package/SVF-osx/Release-build/include/SVF/Util/ExtAPI.h +117 -0
- package/SVF-osx/Release-build/include/SVF/Util/GeneralType.h +127 -0
- package/SVF-osx/Release-build/include/SVF/Util/GraphReachSolver.h +186 -0
- package/SVF-osx/Release-build/include/SVF/Util/NodeIDAllocator.h +203 -0
- package/SVF-osx/Release-build/include/SVF/Util/Options.h +273 -0
- package/SVF-osx/Release-build/include/SVF/Util/PTAStat.h +83 -0
- package/SVF-osx/Release-build/include/SVF/Util/SVFBugReport.h +427 -0
- package/SVF-osx/Release-build/include/SVF/Util/SVFLoopAndDomInfo.h +169 -0
- package/SVF-osx/Release-build/include/SVF/Util/SVFStat.h +103 -0
- package/SVF-osx/Release-build/include/SVF/Util/SVFUtil.h +478 -0
- package/SVF-osx/Release-build/include/SVF/Util/SparseBitVector.h +1252 -0
- package/SVF-osx/Release-build/include/SVF/Util/ThreadAPI.h +188 -0
- package/SVF-osx/Release-build/include/SVF/Util/WorkList.h +317 -0
- package/SVF-osx/Release-build/include/SVF/Util/Z3Expr.h +325 -0
- package/SVF-osx/Release-build/include/SVF/Util/cJSON.h +300 -0
- package/SVF-osx/Release-build/include/SVF/Util/config.h +46 -0
- package/SVF-osx/Release-build/include/SVF/Util/iterator.h +407 -0
- package/SVF-osx/Release-build/include/SVF/Util/iterator_range.h +76 -0
- package/SVF-osx/Release-build/include/SVF/WPA/Andersen.h +434 -0
- package/SVF-osx/Release-build/include/SVF/WPA/AndersenPWC.h +160 -0
- package/SVF-osx/Release-build/include/SVF/WPA/CSC.h +95 -0
- package/SVF-osx/Release-build/include/SVF/WPA/FlowSensitive.h +322 -0
- package/SVF-osx/Release-build/include/SVF/WPA/Steensgaard.h +131 -0
- package/SVF-osx/Release-build/include/SVF/WPA/TypeAnalysis.h +90 -0
- package/SVF-osx/Release-build/include/SVF/WPA/VersionedFlowSensitive.h +295 -0
- package/SVF-osx/Release-build/include/SVF/WPA/WPAFSSolver.h +246 -0
- package/SVF-osx/Release-build/include/SVF/WPA/WPAPass.h +115 -0
- package/SVF-osx/Release-build/include/SVF/WPA/WPASolver.h +205 -0
- package/SVF-osx/Release-build/include/SVF/WPA/WPAStat.h +222 -0
- package/SVF-osx/Release-build/include/SVF/extapi.bc +2384 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/Modules/FindZ3.cmake +93 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/SVFConfig.cmake +106 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/SVFTargets-release.cmake +101 -0
- package/SVF-osx/Release-build/lib/cmake/SVF/SVFTargets.cmake +180 -0
- package/SVF-osx/Release-build/lib/libSvfCore.3.1.dylib +0 -0
- package/SVF-osx/Release-build/lib/libSvfLLVM.3.1.dylib +0 -0
- package/SVF-osx/Release-build/lib/pkgconfig/SVF.pc +12 -0
- package/package.json +1 -1
- package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PAGGrammar.txt +0 -15
- package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PEGGrammar.txt +0 -11
- package/SVF-linux-aarch64/Release-build/include/CFL/grammar/VFGGrammar.txt +0 -7
- package/SVF-linux-aarch64/Release-build/include/FastCluster/LICENSE.TXT +0 -13
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AbstractState.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AbstractValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/AddressValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/ICFGWTO.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/IntervalValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/NumericValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/RelExeState.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Core/RelationSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AEDetector.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AbsExtAPI.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{AE → SVF/AE}/Svfexe/AbstractInterpretation.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFGNormalizer.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFGrammar.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLAlias.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLBase.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLGramGraphChecker.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLGraphBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLSVFGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/CFLVF.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{CFL → SVF/CFL}/GrammarBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/ContextDDA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAClient.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAPass.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/DDAVFSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{DDA → SVF/DDA}/FlowDDA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{FastCluster → SVF/FastCluster}/fastcluster.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/BasicBlockG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CDG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CFLGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CHG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/CallGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsGEdge.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ConsGNode.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/DOTGraphTraits.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GenericGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphPrinter.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphTraits.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/GraphWriter.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGEdge.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGNode.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ICFGStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/IRGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SCC.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGEdge.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGNode.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGOPT.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/SVFGStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/ThreadCallGraph.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFGEdge.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/VFGNode.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Graphs → SVF/Graphs}/WTO.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MSSAMuChi.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemPartition.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemRegion.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/MemSSA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MSSA → SVF/MSSA}/SVFGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/LockAnalysis.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MHP.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MTA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/MTAStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MTA → SVF/MTA}/TCT.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/AbstractPointsToDS.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/AccessPath.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/ConditionalPT.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/MutablePointsToDS.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PersistentPointsToCache.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PersistentPointsToDS.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointerAnalysis.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointerAnalysisImpl.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/PointsTo.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{MemoryModel → SVF/MemoryModel}/SVFLoop.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/DoubleFreeChecker.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/FileChecker.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/LeakChecker.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/ProgSlice.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberCheckerAPI.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberCondAllocator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SaberSVFGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SrcSnkDDA.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SABER → SVF/SABER}/SrcSnkSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/BasicTypes.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/BreakConstantExpr.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/CHGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/CppUtil.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/DCHG.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/GEPTypeBridgeIterator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/ICFGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMLoopAnalysis.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMModule.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/LLVMUtil.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/ObjTypeInference.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/SVFIRBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVF-LLVM → SVF/SVF-LLVM}/SymbolTableBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/ObjTypeInfo.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/PAGBuilderFromFile.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFIR.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFStatements.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFType.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFValue.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{SVFIR → SVF/SVFIR}/SVFVariables.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Annotator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/BitVector.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CDGBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CallGraphBuilder.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Casting.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CommandLine.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CoreBitVector.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/CxtStmt.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/DPItem.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/ExtAPI.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/GeneralType.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/GraphReachSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/NodeIDAllocator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Options.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/PTAStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFBugReport.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFLoopAndDomInfo.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SVFUtil.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/SparseBitVector.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/ThreadAPI.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/Z3Expr.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/cJSON.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/iterator.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{Util → SVF/Util}/iterator_range.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/Andersen.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/AndersenPWC.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/CSC.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/FlowSensitive.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/Steensgaard.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/TypeAnalysis.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/VersionedFlowSensitive.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAFSSolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAPass.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPASolver.h +0 -0
- /package/SVF-linux-aarch64/Release-build/include/{WPA → SVF/WPA}/WPAStat.h +0 -0
- /package/SVF-linux-aarch64/Release-build/{lib → include/SVF}/extapi.bc +0 -0
|
@@ -0,0 +1,606 @@
|
|
|
1
|
+
//===- SVFBasicTypes.h -- Basic types used in SVF-----------------------------//
|
|
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 Affero 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 Affero General Public License for more details.
|
|
17
|
+
|
|
18
|
+
// You should have received a copy of the GNU Affero General Public License
|
|
19
|
+
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
+
//
|
|
21
|
+
//===----------------------------------------------------------------------===//
|
|
22
|
+
|
|
23
|
+
/*
|
|
24
|
+
* BasicTypes.h
|
|
25
|
+
*
|
|
26
|
+
* Created on: Apr 1, 2014
|
|
27
|
+
* Author: Yulei Sui
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#ifndef INCLUDE_SVFIR_SVFTYPE_H_
|
|
31
|
+
#define INCLUDE_SVFIR_SVFTYPE_H_
|
|
32
|
+
|
|
33
|
+
#include "Util/SparseBitVector.h"
|
|
34
|
+
#include "Util/GeneralType.h"
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
namespace SVF
|
|
38
|
+
{
|
|
39
|
+
class SVFType;
|
|
40
|
+
class SVFPointerType;
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
/*!
|
|
44
|
+
* Flattened type information of StructType, ArrayType and SingleValueType
|
|
45
|
+
*/
|
|
46
|
+
class StInfo
|
|
47
|
+
{
|
|
48
|
+
friend class SVFIRWriter;
|
|
49
|
+
friend class SVFIRReader;
|
|
50
|
+
|
|
51
|
+
private:
|
|
52
|
+
/// flattened field indices of a struct (ignoring arrays)
|
|
53
|
+
std::vector<u32_t> fldIdxVec;
|
|
54
|
+
/// flattened element indices including structs and arrays by considering
|
|
55
|
+
/// strides
|
|
56
|
+
std::vector<u32_t> elemIdxVec;
|
|
57
|
+
/// Types of all fields of a struct
|
|
58
|
+
Map<u32_t, const SVFType*> fldIdx2TypeMap;
|
|
59
|
+
/// All field infos after flattening a struct
|
|
60
|
+
std::vector<const SVFType*> finfo;
|
|
61
|
+
/// stride represents the number of repetitive elements if this StInfo
|
|
62
|
+
/// represent an ArrayType. stride is 1 by default.
|
|
63
|
+
u32_t stride;
|
|
64
|
+
/// number of elements after flattening (including array elements)
|
|
65
|
+
u32_t numOfFlattenElements;
|
|
66
|
+
/// number of fields after flattening (ignoring array elements)
|
|
67
|
+
u32_t numOfFlattenFields;
|
|
68
|
+
/// Type vector of fields
|
|
69
|
+
std::vector<const SVFType*> flattenElementTypes;
|
|
70
|
+
/// Max field limit
|
|
71
|
+
|
|
72
|
+
public:
|
|
73
|
+
StInfo() = delete;
|
|
74
|
+
StInfo(const StInfo& st) = delete;
|
|
75
|
+
void operator=(const StInfo&) = delete;
|
|
76
|
+
|
|
77
|
+
/// Constructor
|
|
78
|
+
explicit StInfo(u32_t s)
|
|
79
|
+
: stride(s), numOfFlattenElements(s), numOfFlattenFields(s)
|
|
80
|
+
{
|
|
81
|
+
}
|
|
82
|
+
/// Destructor
|
|
83
|
+
~StInfo() = default;
|
|
84
|
+
|
|
85
|
+
/// struct A { int id; int salary; };
|
|
86
|
+
/// struct B { char name[20]; struct A a;}
|
|
87
|
+
/// B b;
|
|
88
|
+
///
|
|
89
|
+
/// OriginalFieldType of b with field_idx 1 : Struct A
|
|
90
|
+
/// FlatternedFieldType of b with field_idx 1 : int
|
|
91
|
+
//{@
|
|
92
|
+
const SVFType* getOriginalElemType(u32_t fldIdx) const;
|
|
93
|
+
|
|
94
|
+
inline std::vector<u32_t>& getFlattenedFieldIdxVec()
|
|
95
|
+
{
|
|
96
|
+
return fldIdxVec;
|
|
97
|
+
}
|
|
98
|
+
inline std::vector<u32_t>& getFlattenedElemIdxVec()
|
|
99
|
+
{
|
|
100
|
+
return elemIdxVec;
|
|
101
|
+
}
|
|
102
|
+
inline std::vector<const SVFType*>& getFlattenElementTypes()
|
|
103
|
+
{
|
|
104
|
+
return flattenElementTypes;
|
|
105
|
+
}
|
|
106
|
+
inline std::vector<const SVFType*>& getFlattenFieldTypes()
|
|
107
|
+
{
|
|
108
|
+
return finfo;
|
|
109
|
+
}
|
|
110
|
+
inline const std::vector<u32_t>& getFlattenedFieldIdxVec() const
|
|
111
|
+
{
|
|
112
|
+
return fldIdxVec;
|
|
113
|
+
}
|
|
114
|
+
inline const std::vector<u32_t>& getFlattenedElemIdxVec() const
|
|
115
|
+
{
|
|
116
|
+
return elemIdxVec;
|
|
117
|
+
}
|
|
118
|
+
inline const std::vector<const SVFType*>& getFlattenElementTypes() const
|
|
119
|
+
{
|
|
120
|
+
return flattenElementTypes;
|
|
121
|
+
}
|
|
122
|
+
inline const std::vector<const SVFType*>& getFlattenFieldTypes() const
|
|
123
|
+
{
|
|
124
|
+
return finfo;
|
|
125
|
+
}
|
|
126
|
+
//@}
|
|
127
|
+
|
|
128
|
+
/// Add field index and element index and their corresponding type
|
|
129
|
+
void addFldWithType(u32_t fldIdx, const SVFType* type, u32_t elemIdx);
|
|
130
|
+
|
|
131
|
+
/// Set number of fields and elements of an aggregate
|
|
132
|
+
inline void setNumOfFieldsAndElems(u32_t nf, u32_t ne)
|
|
133
|
+
{
|
|
134
|
+
numOfFlattenFields = nf;
|
|
135
|
+
numOfFlattenElements = ne;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
/// Return number of elements after flattening (including array elements)
|
|
139
|
+
inline u32_t getNumOfFlattenElements() const
|
|
140
|
+
{
|
|
141
|
+
return numOfFlattenElements;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/// Return the number of fields after flattening (ignoring array elements)
|
|
145
|
+
inline u32_t getNumOfFlattenFields() const
|
|
146
|
+
{
|
|
147
|
+
return numOfFlattenFields;
|
|
148
|
+
}
|
|
149
|
+
/// Return the stride
|
|
150
|
+
inline u32_t getStride() const
|
|
151
|
+
{
|
|
152
|
+
return stride;
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
class SVFType
|
|
157
|
+
{
|
|
158
|
+
friend class SVFIRWriter;
|
|
159
|
+
friend class SVFIRReader;
|
|
160
|
+
friend class LLVMModuleSet;
|
|
161
|
+
|
|
162
|
+
public:
|
|
163
|
+
typedef s64_t GNodeK;
|
|
164
|
+
|
|
165
|
+
enum SVFTyKind
|
|
166
|
+
{
|
|
167
|
+
SVFTy,
|
|
168
|
+
SVFPointerTy,
|
|
169
|
+
SVFIntegerTy,
|
|
170
|
+
SVFFunctionTy,
|
|
171
|
+
SVFStructTy,
|
|
172
|
+
SVFArrayTy,
|
|
173
|
+
SVFOtherTy,
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
public:
|
|
177
|
+
|
|
178
|
+
inline static SVFType* getSVFPtrType()
|
|
179
|
+
{
|
|
180
|
+
assert(svfPtrTy && "ptr type not set?");
|
|
181
|
+
return svfPtrTy;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
inline static SVFType* getSVFInt8Type()
|
|
185
|
+
{
|
|
186
|
+
assert(svfI8Ty && "int8 type not set?");
|
|
187
|
+
return svfI8Ty;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
private:
|
|
191
|
+
|
|
192
|
+
static SVFType* svfPtrTy; ///< ptr type
|
|
193
|
+
static SVFType* svfI8Ty; ///< 8-bit int type
|
|
194
|
+
|
|
195
|
+
private:
|
|
196
|
+
GNodeK kind; ///< used for classof
|
|
197
|
+
StInfo* typeinfo; ///< SVF's TypeInfo
|
|
198
|
+
bool isSingleValTy; ///< The type represents a single value, not struct or
|
|
199
|
+
u32_t byteSize; ///< LLVM Byte Size
|
|
200
|
+
u32_t id;
|
|
201
|
+
///< array
|
|
202
|
+
|
|
203
|
+
protected:
|
|
204
|
+
SVFType(bool svt, SVFTyKind k, u32_t i = 0, u32_t Sz = 1)
|
|
205
|
+
: kind(k), typeinfo(nullptr),
|
|
206
|
+
isSingleValTy(svt), byteSize(Sz), id(i)
|
|
207
|
+
{
|
|
208
|
+
}
|
|
209
|
+
public:
|
|
210
|
+
SVFType(void) = delete;
|
|
211
|
+
virtual ~SVFType() {}
|
|
212
|
+
|
|
213
|
+
inline GNodeK getKind() const
|
|
214
|
+
{
|
|
215
|
+
return kind;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/// \note Use `os<<svfType` or `svfType.print(os)` when possible to avoid
|
|
219
|
+
/// string concatenation.
|
|
220
|
+
std::string toString() const;
|
|
221
|
+
|
|
222
|
+
virtual void print(std::ostream& os) const = 0;
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
u32_t getId() const
|
|
226
|
+
{
|
|
227
|
+
return id;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
inline void setTypeInfo(StInfo* ti)
|
|
231
|
+
{
|
|
232
|
+
typeinfo = ti;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
inline StInfo* getTypeInfo()
|
|
236
|
+
{
|
|
237
|
+
assert(typeinfo && "set the type info first");
|
|
238
|
+
return typeinfo;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
inline const StInfo* getTypeInfo() const
|
|
242
|
+
{
|
|
243
|
+
assert(typeinfo && "set the type info first");
|
|
244
|
+
return typeinfo;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/// if Type is not sized, byteSize is 0
|
|
248
|
+
/// if Type is sized, byteSize is the LLVM Byte Size.
|
|
249
|
+
inline u32_t getByteSize() const
|
|
250
|
+
{
|
|
251
|
+
return byteSize;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
inline bool isPointerTy() const
|
|
255
|
+
{
|
|
256
|
+
return kind == SVFPointerTy;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
inline bool isArrayTy() const
|
|
260
|
+
{
|
|
261
|
+
return kind == SVFArrayTy;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
inline bool isStructTy() const
|
|
265
|
+
{
|
|
266
|
+
return kind == SVFStructTy;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
inline bool isSingleValueType() const
|
|
270
|
+
{
|
|
271
|
+
return isSingleValTy;
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
std::ostream& operator<<(std::ostream& os, const SVFType& type);
|
|
276
|
+
|
|
277
|
+
class SVFPointerType : public SVFType
|
|
278
|
+
{
|
|
279
|
+
friend class SVFIRWriter;
|
|
280
|
+
friend class SVFIRReader;
|
|
281
|
+
|
|
282
|
+
public:
|
|
283
|
+
SVFPointerType(u32_t i, u32_t byteSize = 1)
|
|
284
|
+
: SVFType(true, SVFPointerTy, i, byteSize)
|
|
285
|
+
{
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
static inline bool classof(const SVFType* node)
|
|
289
|
+
{
|
|
290
|
+
return node->getKind() == SVFPointerTy;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
void print(std::ostream& os) const override;
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
class SVFIntegerType : public SVFType
|
|
297
|
+
{
|
|
298
|
+
friend class SVFIRWriter;
|
|
299
|
+
friend class SVFIRReader;
|
|
300
|
+
|
|
301
|
+
private:
|
|
302
|
+
short signAndWidth; ///< For printing
|
|
303
|
+
|
|
304
|
+
public:
|
|
305
|
+
SVFIntegerType(u32_t i, u32_t byteSize = 1) : SVFType(true, SVFIntegerTy, i, byteSize) {}
|
|
306
|
+
static inline bool classof(const SVFType* node)
|
|
307
|
+
{
|
|
308
|
+
return node->getKind() == SVFIntegerTy;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
void print(std::ostream& os) const override;
|
|
312
|
+
|
|
313
|
+
void setSignAndWidth(short sw)
|
|
314
|
+
{
|
|
315
|
+
signAndWidth = sw;
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
bool isSigned() const
|
|
319
|
+
{
|
|
320
|
+
return signAndWidth < 0;
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
class SVFFunctionType : public SVFType
|
|
325
|
+
{
|
|
326
|
+
friend class SVFIRWriter;
|
|
327
|
+
friend class SVFIRReader;
|
|
328
|
+
|
|
329
|
+
private:
|
|
330
|
+
const SVFType* retTy;
|
|
331
|
+
std::vector<const SVFType*> params;
|
|
332
|
+
bool varArg;
|
|
333
|
+
|
|
334
|
+
public:
|
|
335
|
+
SVFFunctionType(u32_t i, const SVFType* rt, const std::vector<const SVFType*>& p, bool isvararg)
|
|
336
|
+
: SVFType(false, SVFFunctionTy, i, 1), retTy(rt), params(p), varArg(isvararg)
|
|
337
|
+
{
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
static inline bool classof(const SVFType* node)
|
|
341
|
+
{
|
|
342
|
+
return node->getKind() == SVFFunctionTy;
|
|
343
|
+
}
|
|
344
|
+
const SVFType* getReturnType() const
|
|
345
|
+
{
|
|
346
|
+
return retTy;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
const std::vector<const SVFType*>& getParamTypes() const
|
|
350
|
+
{
|
|
351
|
+
return params;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
bool isVarArg() const
|
|
356
|
+
{
|
|
357
|
+
return varArg;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
void print(std::ostream& os) const override;
|
|
361
|
+
};
|
|
362
|
+
|
|
363
|
+
class SVFStructType : public SVFType
|
|
364
|
+
{
|
|
365
|
+
friend class SVFIRWriter;
|
|
366
|
+
friend class SVFIRReader;
|
|
367
|
+
|
|
368
|
+
private:
|
|
369
|
+
/// @brief Field for printing & debugging
|
|
370
|
+
std::string name;
|
|
371
|
+
std::vector<const SVFType*> fields;
|
|
372
|
+
|
|
373
|
+
public:
|
|
374
|
+
SVFStructType(u32_t i, std::vector<const SVFType *> &f, u32_t byteSize = 1) :
|
|
375
|
+
SVFType(false, SVFStructTy, i, byteSize), fields(f)
|
|
376
|
+
{
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
static inline bool classof(const SVFType* node)
|
|
380
|
+
{
|
|
381
|
+
return node->getKind() == SVFStructTy;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
void print(std::ostream& os) const override;
|
|
385
|
+
|
|
386
|
+
const std::string& getName()
|
|
387
|
+
{
|
|
388
|
+
return name;
|
|
389
|
+
}
|
|
390
|
+
void setName(const std::string& structName)
|
|
391
|
+
{
|
|
392
|
+
name = structName;
|
|
393
|
+
}
|
|
394
|
+
void setName(std::string&& structName)
|
|
395
|
+
{
|
|
396
|
+
name = std::move(structName);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
const std::vector<const SVFType*>& getFieldTypes() const
|
|
400
|
+
{
|
|
401
|
+
return fields;
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
class SVFArrayType : public SVFType
|
|
406
|
+
{
|
|
407
|
+
friend class SVFIRWriter;
|
|
408
|
+
friend class SVFIRReader;
|
|
409
|
+
|
|
410
|
+
private:
|
|
411
|
+
unsigned numOfElement; /// For printing & debugging
|
|
412
|
+
const SVFType* typeOfElement; /// For printing & debugging
|
|
413
|
+
|
|
414
|
+
public:
|
|
415
|
+
SVFArrayType(u32_t i, u32_t byteSize = 1)
|
|
416
|
+
: SVFType(false, SVFArrayTy, i, byteSize), numOfElement(0), typeOfElement(nullptr)
|
|
417
|
+
{
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
static inline bool classof(const SVFType* node)
|
|
421
|
+
{
|
|
422
|
+
return node->getKind() == SVFArrayTy;
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
void print(std::ostream& os) const override;
|
|
426
|
+
|
|
427
|
+
const SVFType* getTypeOfElement() const
|
|
428
|
+
{
|
|
429
|
+
return typeOfElement;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
void setTypeOfElement(const SVFType* elemType)
|
|
433
|
+
{
|
|
434
|
+
typeOfElement = elemType;
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
void setNumOfElement(unsigned elemNum)
|
|
438
|
+
{
|
|
439
|
+
numOfElement = elemNum;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
};
|
|
444
|
+
|
|
445
|
+
class SVFOtherType : public SVFType
|
|
446
|
+
{
|
|
447
|
+
friend class SVFIRWriter;
|
|
448
|
+
friend class SVFIRReader;
|
|
449
|
+
|
|
450
|
+
private:
|
|
451
|
+
std::string repr; /// Field representation for printing
|
|
452
|
+
|
|
453
|
+
public:
|
|
454
|
+
SVFOtherType(u32_t i, bool isSingleValueTy, u32_t byteSize = 1) : SVFType(isSingleValueTy, SVFOtherTy, i, byteSize) {}
|
|
455
|
+
|
|
456
|
+
static inline bool classof(const SVFType* node)
|
|
457
|
+
{
|
|
458
|
+
return node->getKind() == SVFOtherTy;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
const std::string& getRepr()
|
|
462
|
+
{
|
|
463
|
+
return repr;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
void setRepr(std::string&& r)
|
|
467
|
+
{
|
|
468
|
+
repr = std::move(r);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
void setRepr(const std::string& r)
|
|
472
|
+
{
|
|
473
|
+
repr = r;
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
void print(std::ostream& os) const override;
|
|
477
|
+
};
|
|
478
|
+
|
|
479
|
+
// TODO: be explicit that this is a pair of 32-bit unsigneds?
|
|
480
|
+
template <> struct Hash<NodePair>
|
|
481
|
+
{
|
|
482
|
+
size_t operator()(const NodePair& p) const
|
|
483
|
+
{
|
|
484
|
+
// Make sure our assumptions are sound: use u32_t
|
|
485
|
+
// and u64_t. If NodeID is not actually u32_t or size_t
|
|
486
|
+
// is not u64_t we should be fine since we get a
|
|
487
|
+
// consistent result.
|
|
488
|
+
uint32_t first = (uint32_t)(p.first);
|
|
489
|
+
uint32_t second = (uint32_t)(p.second);
|
|
490
|
+
return ((uint64_t)(first) << 32) | (uint64_t)(second);
|
|
491
|
+
}
|
|
492
|
+
};
|
|
493
|
+
|
|
494
|
+
#if !defined NDBUG && defined USE_SVF_DBOUT
|
|
495
|
+
// TODO: This comes from the following link
|
|
496
|
+
// https://github.com/llvm/llvm-project/blob/75e33f71c2dae584b13a7d1186ae0a038ba98838/llvm/include/llvm/Support/Debug.h#L64
|
|
497
|
+
// The original LLVM implementation makes use of type. But we can get that info,
|
|
498
|
+
// so we can't simulate the full behaviour for now.
|
|
499
|
+
# define SVF_DEBUG_WITH_TYPE(TYPE, X) \
|
|
500
|
+
do \
|
|
501
|
+
{ \
|
|
502
|
+
X; \
|
|
503
|
+
} while (false)
|
|
504
|
+
#else
|
|
505
|
+
# define SVF_DEBUG_WITH_TYPE(TYPE, X) \
|
|
506
|
+
do \
|
|
507
|
+
{ \
|
|
508
|
+
} while (false)
|
|
509
|
+
#endif
|
|
510
|
+
|
|
511
|
+
/// LLVM debug macros, define type of your DBUG model of each pass
|
|
512
|
+
#define DBOUT(TYPE, X) SVF_DEBUG_WITH_TYPE(TYPE, X)
|
|
513
|
+
#define DOSTAT(X) X
|
|
514
|
+
#define DOTIMESTAT(X) X
|
|
515
|
+
|
|
516
|
+
/// General debug flag is for each phase of a pass, it is often in a colorful
|
|
517
|
+
/// output format
|
|
518
|
+
#define DGENERAL "general"
|
|
519
|
+
|
|
520
|
+
#define DPAGBuild "pag"
|
|
521
|
+
#define DMemModel "mm"
|
|
522
|
+
#define DMemModelCE "mmce"
|
|
523
|
+
#define DCOMModel "comm"
|
|
524
|
+
#define DDDA "dda"
|
|
525
|
+
#define DDumpPT "dumppt"
|
|
526
|
+
#define DRefinePT "sbpt"
|
|
527
|
+
#define DCache "cache"
|
|
528
|
+
#define DWPA "wpa"
|
|
529
|
+
#define DMSSA "mssa"
|
|
530
|
+
#define DInstrument "ins"
|
|
531
|
+
#define DAndersen "ander"
|
|
532
|
+
#define DSaber "saber"
|
|
533
|
+
#define DMTA "mta"
|
|
534
|
+
#define DCHA "cha"
|
|
535
|
+
|
|
536
|
+
/*
|
|
537
|
+
* Number of clock ticks per second. A clock tick is the unit by which
|
|
538
|
+
* processor time is measured and is returned by 'clock'.
|
|
539
|
+
*/
|
|
540
|
+
#define TIMEINTERVAL 1000
|
|
541
|
+
#define CLOCK_IN_MS() (clock() / (CLOCKS_PER_SEC / TIMEINTERVAL))
|
|
542
|
+
|
|
543
|
+
/// Size of native integer that we'll use for bit vectors, in bits.
|
|
544
|
+
#define NATIVE_INT_SIZE (sizeof(unsigned long long) * CHAR_BIT)
|
|
545
|
+
|
|
546
|
+
enum ModRefInfo
|
|
547
|
+
{
|
|
548
|
+
ModRef,
|
|
549
|
+
Ref,
|
|
550
|
+
Mod,
|
|
551
|
+
NoModRef,
|
|
552
|
+
};
|
|
553
|
+
|
|
554
|
+
enum AliasResult
|
|
555
|
+
{
|
|
556
|
+
NoAlias,
|
|
557
|
+
MayAlias,
|
|
558
|
+
MustAlias,
|
|
559
|
+
PartialAlias,
|
|
560
|
+
};
|
|
561
|
+
|
|
562
|
+
} // End namespace SVF
|
|
563
|
+
|
|
564
|
+
template <> struct std::hash<SVF::NodePair>
|
|
565
|
+
{
|
|
566
|
+
size_t operator()(const SVF::NodePair& p) const
|
|
567
|
+
{
|
|
568
|
+
// Make sure our assumptions are sound: use u32_t
|
|
569
|
+
// and u64_t. If NodeID is not actually u32_t or size_t
|
|
570
|
+
// is not u64_t we should be fine since we get a
|
|
571
|
+
// consistent result.
|
|
572
|
+
uint32_t first = (uint32_t)(p.first);
|
|
573
|
+
uint32_t second = (uint32_t)(p.second);
|
|
574
|
+
return ((uint64_t)(first) << 32) | (uint64_t)(second);
|
|
575
|
+
}
|
|
576
|
+
};
|
|
577
|
+
|
|
578
|
+
/// Specialise hash for SparseBitVectors.
|
|
579
|
+
template <unsigned N> struct std::hash<SVF::SparseBitVector<N>>
|
|
580
|
+
{
|
|
581
|
+
size_t operator()(const SVF::SparseBitVector<N>& sbv) const
|
|
582
|
+
{
|
|
583
|
+
SVF::Hash<std::pair<std::pair<size_t, size_t>, size_t>> h;
|
|
584
|
+
return h(std::make_pair(std::make_pair(sbv.count(), sbv.find_first()),
|
|
585
|
+
sbv.find_last()));
|
|
586
|
+
}
|
|
587
|
+
};
|
|
588
|
+
|
|
589
|
+
template <typename T> struct std::hash<std::vector<T>>
|
|
590
|
+
{
|
|
591
|
+
size_t operator()(const std::vector<T>& v) const
|
|
592
|
+
{
|
|
593
|
+
// TODO: repetition with CBV.
|
|
594
|
+
size_t h = v.size();
|
|
595
|
+
|
|
596
|
+
SVF::Hash<T> hf;
|
|
597
|
+
for (const T& t : v)
|
|
598
|
+
{
|
|
599
|
+
h ^= hf(t) + 0x9e3779b9 + (h << 6) + (h >> 2);
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
return h;
|
|
603
|
+
}
|
|
604
|
+
};
|
|
605
|
+
|
|
606
|
+
#endif /* INCLUDE_SVFIR_SVFTYPE_H_ */
|