svf-lib 1.0.1373 → 1.0.1375
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/Release-build/{lib/libSvf.a → svf-llvm/libSvfLLVM.a} +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/AbstractValue.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/AddressValue.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/ExeState.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/IntervalExeState.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/IntervalValue.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/NumericLiteral.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/RelExeState.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/RelationSolver.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/SVFIR2ItvExeState.h +0 -0
- package/SVF-linux/{include → svf/include}/AbstractExecution/WTO.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFGNormalizer.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLAlias.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLBase.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLData.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLDataBuilder.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLGramGraphChecker.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLGrammar.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLGrammar.txt +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLGrammarDev.txt +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLGraphBuilder.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLSolver.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLStat.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/CFLVF.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/GrammarBuilder.h +0 -0
- package/SVF-linux/{include → svf/include}/CFL/PEGGrammar.txt +0 -0
- package/SVF-linux/{include → svf/include}/CFL/VFG.txt +0 -0
- package/SVF-linux/{include → svf/include}/CUDD/cudd.h +0 -0
- package/SVF-linux/{include → svf/include}/CUDD/cuddInt.h +0 -0
- package/SVF-linux/{include → svf/include}/CUDD/epd.h +0 -0
- package/SVF-linux/{include → svf/include}/CUDD/mtr.h +0 -0
- package/SVF-linux/{include → svf/include}/CUDD/mtrInt.h +0 -0
- package/SVF-linux/{include → svf/include}/CUDD/st.h +0 -0
- package/SVF-linux/{include → svf/include}/CUDD/util.h +0 -0
- package/SVF-linux/{include → svf/include}/DDA/ContextDDA.h +0 -0
- package/SVF-linux/{include → svf/include}/DDA/DDAClient.h +0 -0
- package/SVF-linux/{include → svf/include}/DDA/DDAPass.h +0 -0
- package/SVF-linux/{include → svf/include}/DDA/DDAStat.h +0 -0
- package/SVF-linux/{include → svf/include}/DDA/DDAVFSolver.h +0 -0
- package/SVF-linux/{include → svf/include}/DDA/FlowDDA.h +0 -0
- package/SVF-linux/{include → svf/include}/FastCluster/LICENSE.TXT +0 -0
- package/SVF-linux/{include → svf/include}/FastCluster/fastcluster.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/CFLGraph.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/CHG.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ConsG.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ConsGEdge.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ConsGNode.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/DOTGraphTraits.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ExternalPAG.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/GenericGraph.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/GraphPrinter.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/GraphTraits.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/GraphWriter.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ICFG.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ICFGEdge.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ICFGNode.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ICFGStat.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/IRGraph.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/OfflineConsG.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/PAG.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/PAGEdge.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/PAGNode.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/PTACallGraph.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/SVFG.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/SVFGEdge.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/SVFGNode.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/SVFGOPT.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/SVFGStat.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/ThreadCallGraph.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/VFG.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/VFGEdge.h +0 -0
- package/SVF-linux/{include → svf/include}/Graphs/VFGNode.h +0 -0
- package/SVF-linux/{include → svf/include}/MSSA/MSSAMuChi.h +0 -0
- package/SVF-linux/{include → svf/include}/MSSA/MemPartition.h +0 -0
- package/SVF-linux/{include → svf/include}/MSSA/MemRegion.h +0 -0
- package/SVF-linux/{include → svf/include}/MSSA/MemSSA.h +0 -0
- package/SVF-linux/{include → svf/include}/MSSA/SVFGBuilder.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/FSMPTA.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/LockAnalysis.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/LockResultValidator.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/MHP.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/MTA.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/MTAAnnotator.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/MTAResultValidator.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/MTAStat.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/PCG.h +0 -0
- package/SVF-linux/{include → svf/include}/MTA/TCT.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/AbstractPointsToDS.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/ConditionalPT.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/LocationSet.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/MemModel.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/MutablePointsToDS.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PAGBuilderFromFile.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PTAStat.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PTAType.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PersistentPointsToCache.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PersistentPointsToDS.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PointerAnalysis.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PointerAnalysisImpl.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PointsTo.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PointsToDFDS.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/PointsToDS.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/SVFIR.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/SVFLoop.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/SVFStatements.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/SVFSymbols.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/SVFVariables.h +0 -0
- package/SVF-linux/{include → svf/include}/MemoryModel/SymbolTableInfo.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/DoubleFreeChecker.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/FileChecker.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/LeakChecker.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/PathCondAllocator.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/ProgSlice.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/SaberAnnotator.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/SaberCheckerAPI.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/SaberCondAllocator.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/SaberSVFGBuilder.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/SrcSnkDDA.h +0 -0
- package/SVF-linux/{include → svf/include}/SABER/SrcSnkSolver.h +0 -0
- package/SVF-linux/{include → svf/include}/SVFIR/PAGBuilderFromFile.h +0 -0
- package/SVF-linux/{include → svf/include}/SVFIR/SVFIR.h +0 -0
- package/SVF-linux/{include → svf/include}/SVFIR/SVFModule.h +0 -0
- package/SVF-linux/{include → svf/include}/SVFIR/SVFStatements.h +0 -0
- package/{SVF-osx → SVF-linux/svf}/include/SVFIR/SVFType.h +0 -0
- package/SVF-linux/{include → svf/include}/SVFIR/SVFValue.h +0 -0
- package/SVF-linux/{include → svf/include}/SVFIR/SVFVariables.h +0 -0
- package/SVF-linux/{include → svf/include}/SVFIR/SymbolTableInfo.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/Annotator.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/BDDExpr.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/BasicTypes.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/BitVector.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/CFLSolver.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/CallGraphBuilder.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/Casting.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/CommandLine.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/Conditions.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/CoreBitVector.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/CppUtil.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/CxtStmt.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/DPItem.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/ExeState.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/ExtAPI.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/ExtAPI.json +0 -0
- package/SVF-linux/{include → svf/include}/Util/GraphReachSolver.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/IRAnnotator.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/NodeIDAllocator.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/Options.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/PTAStat.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/PathCondAllocator.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/PathDPItem.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/SCC.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/SVFBasicTypes.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/SVFInstruction.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/SVFModule.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/SVFStat.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/SVFUtil.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/SparseBitVector.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/SymState.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/ThreadAPI.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/TypeBasedHeapCloning.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/WorkList.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/Z3Expr.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/cJSON.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/config.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/iterator.h +0 -0
- package/SVF-linux/{include → svf/include}/Util/iterator_range.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/Andersen.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/AndersenPWC.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/AndersenSFR.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/CSC.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/FlowSensitive.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/FlowSensitiveTBHC.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/Steensgaard.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/TypeAnalysis.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/TypeBasedHeapCloning.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/VersionedFlowSensitive.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/WPAFSSolver.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/WPAPass.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/WPASolver.h +0 -0
- package/SVF-linux/{include → svf/include}/WPA/WPAStat.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/AbstractValue.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/AddressValue.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/ExeState.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/IntervalExeState.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/IntervalValue.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/NumericLiteral.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/RelExeState.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/RelationSolver.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/SVFIR2ItvExeState.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/AbstractExecution/WTO.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFGNormalizer.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLAlias.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLBase.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLData.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLDataBuilder.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLGramGraphChecker.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLGrammar.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLGrammar.txt +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLGraphBuilder.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLSolver.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLStat.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/CFLVF.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/GrammarBuilder.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/PEGGrammar.txt +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/CFL/VFG.txt +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/DDA/ContextDDA.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/DDA/DDAClient.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/DDA/DDAPass.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/DDA/DDAStat.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/DDA/DDAVFSolver.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/DDA/FlowDDA.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/FastCluster/LICENSE.TXT +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/FastCluster/fastcluster.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/CFLGraph.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/CHG.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/ConsG.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/ConsGEdge.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/ConsGNode.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/DOTGraphTraits.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/GenericGraph.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/GraphPrinter.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/GraphTraits.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/GraphWriter.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/ICFG.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/ICFGEdge.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/ICFGNode.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/ICFGStat.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/IRGraph.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/PTACallGraph.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/SVFG.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/SVFGEdge.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/SVFGNode.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/SVFGOPT.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/SVFGStat.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/ThreadCallGraph.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/VFG.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/VFGEdge.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Graphs/VFGNode.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MSSA/MSSAMuChi.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MSSA/MemPartition.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MSSA/MemRegion.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MSSA/MemSSA.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MSSA/SVFGBuilder.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MTA/FSMPTA.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MTA/LockAnalysis.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MTA/MHP.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MTA/MTA.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MTA/MTAResultValidator.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MTA/MTAStat.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MTA/PCG.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MTA/TCT.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/AbstractPointsToDS.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/ConditionalPT.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/LocationSet.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/MutablePointsToDS.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/PersistentPointsToCache.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/PersistentPointsToDS.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/PointerAnalysis.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/PointerAnalysisImpl.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/PointsTo.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/MemoryModel/SVFLoop.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/DoubleFreeChecker.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/FileChecker.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/LeakChecker.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/ProgSlice.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/SaberCheckerAPI.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/SaberCondAllocator.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/SaberSVFGBuilder.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/SrcSnkDDA.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SABER/SrcSnkSolver.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SVFIR/PAGBuilderFromFile.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SVFIR/SVFIR.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SVFIR/SVFModule.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SVFIR/SVFStatements.h +0 -0
- package/SVF-linux/{include → svf/include/include}/SVFIR/SVFType.h +12 -14
- package/{SVF-osx → SVF-linux/svf/include}/include/SVFIR/SVFValue.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SVFIR/SVFVariables.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/SVFIR/SymbolTableInfo.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/Annotator.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/BitVector.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/CallGraphBuilder.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/Casting.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/CommandLine.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/CoreBitVector.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/CppUtil.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/CxtStmt.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/DPItem.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/ExtAPI.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/ExtAPI.json +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/GraphReachSolver.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/NodeIDAllocator.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/Options.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/PTAStat.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/SCC.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/SVFStat.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/SVFUtil.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/SparseBitVector.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/ThreadAPI.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/WorkList.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/Z3Expr.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/cJSON.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/iterator.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/Util/iterator_range.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/Andersen.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/AndersenPWC.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/CSC.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/FlowSensitive.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/Steensgaard.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/TypeAnalysis.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/VersionedFlowSensitive.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/WPAFSSolver.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/WPAPass.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/WPASolver.h +0 -0
- package/{SVF-osx → SVF-linux/svf/include}/include/WPA/WPAStat.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/BasicTypes.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/BreakConstantExpr.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/CHGBuilder.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/CPPUtil.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/DCHG.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/GEPTypeBridgeIterator.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/ICFGBuilder.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/IRAnnotator.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/LLVMLoopAnalysis.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/LLVMModule.h +0 -0
- package/SVF-linux/{include → svf-llvm/include}/SVF-LLVM/LLVMUtil.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/BasicTypes.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/BreakConstantExpr.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/CHGBuilder.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/DCHG.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/GEPTypeBridgeIterator.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/ICFGBuilder.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/LLVMLoopAnalysis.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/LLVMModule.h +0 -0
- package/{SVF-osx/include → SVF-linux/svf-llvm/include/SVF-LLVM}/SVF-LLVM/LLVMUtil.h +0 -0
- package/SVF-linux/{include → svf-llvm/include/SVF-LLVM}/SVF-LLVM/SVFIRBuilder.h +0 -0
- package/SVF-linux/{include → svf-llvm/include/SVF-LLVM}/SVF-LLVM/SymbolTableBuilder.h +0 -0
- package/{SVF-osx → SVF-linux/svf-llvm}/include/SVF-LLVM/SVFIRBuilder.h +0 -0
- package/{SVF-osx → SVF-linux/svf-llvm}/include/SVF-LLVM/SymbolTableBuilder.h +0 -0
- package/SVF-osx/Release-build/{lib/libSvf.a → svf-llvm/libSvfLLVM.a} +0 -0
- package/SVF-osx/svf/include/AbstractExecution/AbstractValue.h +79 -0
- package/SVF-osx/svf/include/AbstractExecution/AddressValue.h +210 -0
- package/SVF-osx/svf/include/AbstractExecution/ExeState.h +223 -0
- package/SVF-osx/svf/include/AbstractExecution/IntervalExeState.h +425 -0
- package/SVF-osx/svf/include/AbstractExecution/IntervalValue.h +868 -0
- package/SVF-osx/svf/include/AbstractExecution/NumericLiteral.h +406 -0
- package/SVF-osx/svf/include/AbstractExecution/RelExeState.h +225 -0
- package/SVF-osx/svf/include/AbstractExecution/RelationSolver.h +68 -0
- package/SVF-osx/svf/include/AbstractExecution/SVFIR2ItvExeState.h +186 -0
- package/SVF-osx/svf/include/AbstractExecution/WTO.h +845 -0
- package/SVF-osx/svf/include/CFL/CFGNormalizer.h +84 -0
- package/SVF-osx/svf/include/CFL/CFLAlias.h +176 -0
- package/SVF-osx/svf/include/CFL/CFLBase.h +115 -0
- package/SVF-osx/svf/include/CFL/CFLData.h +316 -0
- package/SVF-osx/svf/include/CFL/CFLDataBuilder.h +91 -0
- package/SVF-osx/svf/include/CFL/CFLGramGraphChecker.h +74 -0
- package/SVF-osx/svf/include/CFL/CFLGrammar.h +468 -0
- package/SVF-osx/svf/include/CFL/CFLGrammar.txt +15 -0
- package/SVF-osx/{include → svf/include}/CFL/CFLGrammarDev.txt +0 -0
- package/SVF-osx/svf/include/CFL/CFLGraphBuilder.h +193 -0
- package/SVF-osx/svf/include/CFL/CFLSolver.h +136 -0
- package/SVF-osx/svf/include/CFL/CFLStat.h +67 -0
- package/SVF-osx/svf/include/CFL/CFLVF.h +65 -0
- package/SVF-osx/svf/include/CFL/GrammarBuilder.h +100 -0
- package/SVF-osx/svf/include/CFL/PEGGrammar.txt +11 -0
- package/SVF-osx/svf/include/CFL/VFG.txt +7 -0
- package/SVF-osx/{include → svf/include}/CUDD/cudd.h +0 -0
- package/SVF-osx/{include → svf/include}/CUDD/cuddInt.h +0 -0
- package/SVF-osx/{include → svf/include}/CUDD/epd.h +0 -0
- package/SVF-osx/{include → svf/include}/CUDD/mtr.h +0 -0
- package/SVF-osx/{include → svf/include}/CUDD/mtrInt.h +0 -0
- package/SVF-osx/{include → svf/include}/CUDD/st.h +0 -0
- package/SVF-osx/{include → svf/include}/CUDD/util.h +0 -0
- package/SVF-osx/svf/include/DDA/ContextDDA.h +230 -0
- package/SVF-osx/svf/include/DDA/DDAClient.h +168 -0
- package/SVF-osx/svf/include/DDA/DDAPass.h +99 -0
- package/SVF-osx/svf/include/DDA/DDAStat.h +138 -0
- package/SVF-osx/svf/include/DDA/DDAVFSolver.h +789 -0
- package/SVF-osx/svf/include/DDA/FlowDDA.h +178 -0
- package/SVF-osx/svf/include/FastCluster/LICENSE.TXT +13 -0
- package/SVF-osx/svf/include/FastCluster/fastcluster.h +80 -0
- package/SVF-osx/svf/include/Graphs/CFLGraph.h +215 -0
- package/SVF-osx/svf/include/Graphs/CHG.h +351 -0
- package/SVF-osx/svf/include/Graphs/ConsG.h +408 -0
- package/SVF-osx/svf/include/Graphs/ConsGEdge.h +353 -0
- package/SVF-osx/svf/include/Graphs/ConsGNode.h +391 -0
- package/SVF-osx/svf/include/Graphs/DOTGraphTraits.h +188 -0
- package/SVF-osx/{include → svf/include}/Graphs/ExternalPAG.h +0 -0
- package/SVF-osx/svf/include/Graphs/GenericGraph.h +620 -0
- package/SVF-osx/svf/include/Graphs/GraphPrinter.h +111 -0
- package/SVF-osx/svf/include/Graphs/GraphTraits.h +150 -0
- package/SVF-osx/svf/include/Graphs/GraphWriter.h +380 -0
- package/SVF-osx/svf/include/Graphs/ICFG.h +331 -0
- package/SVF-osx/svf/include/Graphs/ICFGEdge.h +264 -0
- package/SVF-osx/svf/include/Graphs/ICFGNode.h +523 -0
- package/SVF-osx/svf/include/Graphs/ICFGStat.h +164 -0
- package/SVF-osx/svf/include/Graphs/IRGraph.h +243 -0
- package/SVF-osx/{include → svf/include}/Graphs/OfflineConsG.h +0 -0
- package/SVF-osx/{include → svf/include}/Graphs/PAG.h +0 -0
- package/SVF-osx/{include → svf/include}/Graphs/PAGEdge.h +0 -0
- package/SVF-osx/{include → svf/include}/Graphs/PAGNode.h +0 -0
- package/SVF-osx/svf/include/Graphs/PTACallGraph.h +471 -0
- package/SVF-osx/svf/include/Graphs/SVFG.h +490 -0
- package/SVF-osx/svf/include/Graphs/SVFGEdge.h +237 -0
- package/SVF-osx/svf/include/Graphs/SVFGNode.h +513 -0
- package/SVF-osx/svf/include/Graphs/SVFGOPT.h +362 -0
- package/SVF-osx/svf/include/Graphs/SVFGStat.h +273 -0
- package/SVF-osx/svf/include/Graphs/ThreadCallGraph.h +422 -0
- package/SVF-osx/svf/include/Graphs/VFG.h +664 -0
- package/SVF-osx/svf/include/Graphs/VFGEdge.h +295 -0
- package/SVF-osx/svf/include/Graphs/VFGNode.h +1197 -0
- package/SVF-osx/svf/include/MSSA/MSSAMuChi.h +722 -0
- package/SVF-osx/svf/include/MSSA/MemPartition.h +169 -0
- package/SVF-osx/svf/include/MSSA/MemRegion.h +491 -0
- package/SVF-osx/svf/include/MSSA/MemSSA.h +452 -0
- package/SVF-osx/svf/include/MSSA/SVFGBuilder.h +98 -0
- package/SVF-osx/svf/include/MTA/FSMPTA.h +270 -0
- package/SVF-osx/svf/include/MTA/LockAnalysis.h +517 -0
- package/SVF-osx/{include → svf/include}/MTA/LockResultValidator.h +0 -0
- package/SVF-osx/svf/include/MTA/MHP.h +565 -0
- package/SVF-osx/svf/include/MTA/MTA.h +101 -0
- package/SVF-osx/{include → svf/include}/MTA/MTAAnnotator.h +0 -0
- package/SVF-osx/svf/include/MTA/MTAResultValidator.h +448 -0
- package/SVF-osx/svf/include/MTA/MTAStat.h +74 -0
- package/SVF-osx/svf/include/MTA/PCG.h +229 -0
- package/SVF-osx/svf/include/MTA/TCT.h +599 -0
- package/SVF-osx/svf/include/MemoryModel/AbstractPointsToDS.h +316 -0
- package/SVF-osx/svf/include/MemoryModel/ConditionalPT.h +878 -0
- package/SVF-osx/svf/include/MemoryModel/LocationSet.h +148 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/MemModel.h +0 -0
- package/SVF-osx/svf/include/MemoryModel/MutablePointsToDS.h +1025 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/PAGBuilderFromFile.h +0 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/PTAStat.h +0 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/PTAType.h +0 -0
- package/SVF-osx/svf/include/MemoryModel/PersistentPointsToCache.h +463 -0
- package/SVF-osx/svf/include/MemoryModel/PersistentPointsToDS.h +955 -0
- package/SVF-osx/svf/include/MemoryModel/PointerAnalysis.h +452 -0
- package/SVF-osx/svf/include/MemoryModel/PointerAnalysisImpl.h +590 -0
- package/SVF-osx/svf/include/MemoryModel/PointsTo.h +255 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/PointsToDFDS.h +0 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/PointsToDS.h +0 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/SVFIR.h +0 -0
- package/SVF-osx/svf/include/MemoryModel/SVFLoop.h +164 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/SVFStatements.h +0 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/SVFSymbols.h +0 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/SVFVariables.h +0 -0
- package/SVF-osx/{include → svf/include}/MemoryModel/SymbolTableInfo.h +0 -0
- package/SVF-osx/svf/include/SABER/DoubleFreeChecker.h +76 -0
- package/SVF-osx/svf/include/SABER/FileChecker.h +82 -0
- package/SVF-osx/svf/include/SABER/LeakChecker.h +124 -0
- package/SVF-osx/{include → svf/include}/SABER/PathCondAllocator.h +0 -0
- package/SVF-osx/svf/include/SABER/ProgSlice.h +313 -0
- package/SVF-osx/{include → svf/include}/SABER/SaberAnnotator.h +0 -0
- package/SVF-osx/svf/include/SABER/SaberCheckerAPI.h +166 -0
- package/SVF-osx/svf/include/SABER/SaberCondAllocator.h +310 -0
- package/SVF-osx/svf/include/SABER/SaberSVFGBuilder.h +104 -0
- package/SVF-osx/svf/include/SABER/SrcSnkDDA.h +321 -0
- package/SVF-osx/svf/include/SABER/SrcSnkSolver.h +186 -0
- package/SVF-osx/svf/include/SVFIR/PAGBuilderFromFile.h +80 -0
- package/SVF-osx/svf/include/SVFIR/SVFIR.h +659 -0
- package/SVF-osx/svf/include/SVFIR/SVFModule.h +233 -0
- package/SVF-osx/svf/include/SVFIR/SVFStatements.h +1136 -0
- package/SVF-osx/svf/include/SVFIR/SVFType.h +527 -0
- package/SVF-osx/svf/include/SVFIR/SVFValue.h +1120 -0
- package/SVF-osx/svf/include/SVFIR/SVFVariables.h +721 -0
- package/SVF-osx/svf/include/SVFIR/SymbolTableInfo.h +597 -0
- package/SVF-osx/svf/include/Util/Annotator.h +180 -0
- package/SVF-osx/{include → svf/include}/Util/BDDExpr.h +0 -0
- package/SVF-osx/{include → svf/include}/Util/BasicTypes.h +0 -0
- package/SVF-osx/svf/include/Util/BitVector.h +55 -0
- package/SVF-osx/{include → svf/include}/Util/CFLSolver.h +0 -0
- package/SVF-osx/svf/include/Util/CallGraphBuilder.h +74 -0
- package/SVF-osx/svf/include/Util/Casting.h +426 -0
- package/SVF-osx/svf/include/Util/CommandLine.h +530 -0
- package/SVF-osx/{include → svf/include}/Util/Conditions.h +0 -0
- package/SVF-osx/svf/include/Util/CoreBitVector.h +214 -0
- package/SVF-osx/svf/include/Util/CppUtil.h +81 -0
- package/SVF-osx/svf/include/Util/CxtStmt.h +501 -0
- package/SVF-osx/svf/include/Util/DPItem.h +618 -0
- package/SVF-osx/{include → svf/include}/Util/ExeState.h +0 -0
- package/SVF-osx/svf/include/Util/ExtAPI.h +339 -0
- package/SVF-osx/svf/include/Util/ExtAPI.json +5707 -0
- package/SVF-osx/svf/include/Util/GraphReachSolver.h +186 -0
- package/SVF-osx/{include → svf/include}/Util/IRAnnotator.h +0 -0
- package/SVF-osx/svf/include/Util/NodeIDAllocator.h +194 -0
- package/SVF-osx/svf/include/Util/Options.h +266 -0
- package/SVF-osx/svf/include/Util/PTAStat.h +65 -0
- package/SVF-osx/{include → svf/include}/Util/PathCondAllocator.h +0 -0
- package/SVF-osx/{include → svf/include}/Util/PathDPItem.h +0 -0
- package/SVF-osx/svf/include/Util/SCC.h +354 -0
- package/SVF-osx/{include → svf/include}/Util/SVFBasicTypes.h +0 -0
- package/SVF-osx/{include → svf/include}/Util/SVFInstruction.h +0 -0
- package/SVF-osx/{include → svf/include}/Util/SVFModule.h +0 -0
- package/SVF-osx/svf/include/Util/SVFStat.h +100 -0
- package/SVF-osx/svf/include/Util/SVFUtil.h +660 -0
- package/SVF-osx/svf/include/Util/SparseBitVector.h +1202 -0
- package/SVF-osx/{include → svf/include}/Util/SymState.h +0 -0
- package/SVF-osx/svf/include/Util/ThreadAPI.h +330 -0
- package/SVF-osx/{include → svf/include}/Util/TypeBasedHeapCloning.h +0 -0
- package/SVF-osx/svf/include/Util/WorkList.h +317 -0
- package/SVF-osx/svf/include/Util/Z3Expr.h +318 -0
- package/SVF-osx/svf/include/Util/cJSON.h +300 -0
- package/SVF-osx/{include → svf/include}/Util/config.h +0 -0
- package/SVF-osx/svf/include/Util/iterator.h +407 -0
- package/SVF-osx/svf/include/Util/iterator_range.h +76 -0
- package/SVF-osx/svf/include/WPA/Andersen.h +416 -0
- package/SVF-osx/svf/include/WPA/AndersenPWC.h +160 -0
- package/SVF-osx/{include → svf/include}/WPA/AndersenSFR.h +0 -0
- package/SVF-osx/svf/include/WPA/CSC.h +95 -0
- package/SVF-osx/svf/include/WPA/FlowSensitive.h +317 -0
- package/SVF-osx/{include → svf/include}/WPA/FlowSensitiveTBHC.h +0 -0
- package/SVF-osx/svf/include/WPA/Steensgaard.h +126 -0
- package/SVF-osx/svf/include/WPA/TypeAnalysis.h +83 -0
- package/SVF-osx/{include → svf/include}/WPA/TypeBasedHeapCloning.h +0 -0
- package/SVF-osx/svf/include/WPA/VersionedFlowSensitive.h +287 -0
- package/SVF-osx/svf/include/WPA/WPAFSSolver.h +254 -0
- package/SVF-osx/svf/include/WPA/WPAPass.h +119 -0
- package/SVF-osx/svf/include/WPA/WPASolver.h +205 -0
- package/SVF-osx/svf/include/WPA/WPAStat.h +222 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/BasicTypes.h +250 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/BreakConstantExpr.h +94 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/CHGBuilder.h +73 -0
- package/SVF-osx/{include → svf-llvm/include}/SVF-LLVM/CPPUtil.h +0 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/DCHG.h +484 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/GEPTypeBridgeIterator.h +183 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/ICFGBuilder.h +106 -0
- package/SVF-osx/{include → svf-llvm/include}/SVF-LLVM/IRAnnotator.h +0 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMLoopAnalysis.h +61 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMModule.h +360 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMUtil.h +466 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +417 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +110 -0
- package/package.json +1 -1
- package/SVF-linux/Release-build/lib/CUDD/libCudd.a +0 -0
- package/SVF-osx/Release-build/lib/CUDD/libCudd.a +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
//===- BreakConstantGEPs.h - Change constant GEPs into GEP instructions --- --//
|
|
2
|
+
//
|
|
3
|
+
// The SAFECode Compiler
|
|
4
|
+
//
|
|
5
|
+
// This file was developed by the LLVM research group and is distributed under
|
|
6
|
+
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
|
7
|
+
//
|
|
8
|
+
//===----------------------------------------------------------------------===//
|
|
9
|
+
//
|
|
10
|
+
// This pass changes all GEP constant expressions into GEP instructions. This
|
|
11
|
+
// permits the rest of SAFECode to put run-time checks on them if necessary.
|
|
12
|
+
//
|
|
13
|
+
//===----------------------------------------------------------------------===//
|
|
14
|
+
|
|
15
|
+
#ifndef BREAKCONSTANTGEPS_H
|
|
16
|
+
#define BREAKCONSTANTGEPS_H
|
|
17
|
+
|
|
18
|
+
#include "SVFIR/SVFValue.h"
|
|
19
|
+
|
|
20
|
+
namespace SVF
|
|
21
|
+
{
|
|
22
|
+
|
|
23
|
+
//
|
|
24
|
+
// Pass: BreakConstantGEPs
|
|
25
|
+
//
|
|
26
|
+
// Description:
|
|
27
|
+
// This pass modifies a function so that it uses GEP instructions instead of
|
|
28
|
+
// GEP constant expressions.
|
|
29
|
+
//
|
|
30
|
+
class BreakConstantGEPs : public ModulePass
|
|
31
|
+
{
|
|
32
|
+
private:
|
|
33
|
+
// Private methods
|
|
34
|
+
|
|
35
|
+
// Private variables
|
|
36
|
+
|
|
37
|
+
public:
|
|
38
|
+
static char ID;
|
|
39
|
+
BreakConstantGEPs() : ModulePass(ID) {}
|
|
40
|
+
llvm::StringRef getPassName() const
|
|
41
|
+
{
|
|
42
|
+
return "Remove Constant GEP Expressions";
|
|
43
|
+
}
|
|
44
|
+
virtual bool runOnModule (Module & M);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
//
|
|
49
|
+
// Pass: MergeFunctionRets
|
|
50
|
+
//
|
|
51
|
+
// Description:
|
|
52
|
+
// This pass modifies a function so that each function only have one unified exit basic block
|
|
53
|
+
//
|
|
54
|
+
class MergeFunctionRets : public ModulePass
|
|
55
|
+
{
|
|
56
|
+
private:
|
|
57
|
+
// Private methods
|
|
58
|
+
|
|
59
|
+
// Private variables
|
|
60
|
+
|
|
61
|
+
public:
|
|
62
|
+
static char ID;
|
|
63
|
+
MergeFunctionRets() : ModulePass(ID) {}
|
|
64
|
+
llvm::StringRef getPassName() const
|
|
65
|
+
{
|
|
66
|
+
return "unify function exit into one dummy exit basic block";
|
|
67
|
+
}
|
|
68
|
+
virtual bool runOnModule (Module & M)
|
|
69
|
+
{
|
|
70
|
+
UnifyFunctionExit(M);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
inline void UnifyFunctionExit(Module& module)
|
|
74
|
+
{
|
|
75
|
+
for (Module::const_iterator iter = module.begin(), eiter = module.end();
|
|
76
|
+
iter != eiter; ++iter)
|
|
77
|
+
{
|
|
78
|
+
const Function& fun = *iter;
|
|
79
|
+
if(fun.isDeclaration())
|
|
80
|
+
continue;
|
|
81
|
+
getUnifyExit(fun)->runOnFunction(const_cast<Function&>(fun));
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/// Get Unified Exit basic block node
|
|
85
|
+
inline UnifyFunctionExitNodes* getUnifyExit(const Function& fn)
|
|
86
|
+
{
|
|
87
|
+
assert(!fn.isDeclaration() && "external function does not have DF");
|
|
88
|
+
return &getAnalysis<UnifyFunctionExitNodes>(const_cast<Function&>(fn));
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
} // End namespace SVF
|
|
93
|
+
|
|
94
|
+
#endif
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
//===----- CHGBuiler.h -- Class hierarchy 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
|
+
* CHGBuiler.h
|
|
25
|
+
*
|
|
26
|
+
* Created on: Jun 4, 2021
|
|
27
|
+
* Author: Yulei Sui
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
#include "Graphs/CHG.h"
|
|
31
|
+
#include "SVF-LLVM/BasicTypes.h"
|
|
32
|
+
|
|
33
|
+
namespace SVF
|
|
34
|
+
{
|
|
35
|
+
|
|
36
|
+
class CHGBuilder
|
|
37
|
+
{
|
|
38
|
+
|
|
39
|
+
private:
|
|
40
|
+
CHGraph* chg;
|
|
41
|
+
|
|
42
|
+
public:
|
|
43
|
+
typedef CHGraph::CHNodeSetTy CHNodeSetTy;
|
|
44
|
+
typedef CHGraph::WorkList WorkList;
|
|
45
|
+
|
|
46
|
+
CHGBuilder(CHGraph* c): chg(c)
|
|
47
|
+
{
|
|
48
|
+
|
|
49
|
+
}
|
|
50
|
+
void buildCHG();
|
|
51
|
+
void buildCHGNodes(const GlobalValue *V);
|
|
52
|
+
void buildCHGNodes(const Function* F);
|
|
53
|
+
void buildCHGEdges(const Function* F);
|
|
54
|
+
void buildInternalMaps();
|
|
55
|
+
void readInheritanceMetadataFromModule(const Module &M);
|
|
56
|
+
|
|
57
|
+
CHNode *createNode(const std::string name);
|
|
58
|
+
|
|
59
|
+
void connectInheritEdgeViaCall(const Function* caller, const CallBase* cs);
|
|
60
|
+
void connectInheritEdgeViaStore(const Function* caller, const StoreInst* store);
|
|
61
|
+
|
|
62
|
+
void buildClassNameToAncestorsDescendantsMap();
|
|
63
|
+
const CHGraph::CHNodeSetTy& getInstancesAndDescendants(const std::string className);
|
|
64
|
+
|
|
65
|
+
void analyzeVTables(const Module &M);
|
|
66
|
+
void buildVirtualFunctionToIDMap();
|
|
67
|
+
void buildCSToCHAVtblsAndVfnsMap();
|
|
68
|
+
const CHNodeSetTy& getCSClasses(const CallBase* cs);
|
|
69
|
+
void addFuncToFuncVector(CHNode::FuncVector &v, const Function *f);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
} // End namespace SVF
|
|
73
|
+
|
|
File without changes
|
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
//===----- DCHG.h -- CHG using DWARF debug info ---------------------------//
|
|
2
|
+
// This is based upon the original CHA.h (now CHG.h).
|
|
3
|
+
|
|
4
|
+
/*
|
|
5
|
+
* DCHG.h
|
|
6
|
+
*
|
|
7
|
+
* Created on: Aug 23, 2019
|
|
8
|
+
* Author: Mohamad Barbar
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
// TODO: add a flag such that getCanonicalType returns its arg so
|
|
12
|
+
// that the impl. does not "node collapsing" based on teq.
|
|
13
|
+
|
|
14
|
+
#ifndef DCHG_H_
|
|
15
|
+
#define DCHG_H_
|
|
16
|
+
|
|
17
|
+
#include "Graphs/GenericGraph.h"
|
|
18
|
+
#include "Graphs/CHG.h"
|
|
19
|
+
#include "Util/CppUtil.h"
|
|
20
|
+
#include "SVF-LLVM/BasicTypes.h"
|
|
21
|
+
#include "SVFIR/SVFModule.h"
|
|
22
|
+
#include "Util/SVFUtil.h"
|
|
23
|
+
#include "Util/WorkList.h"
|
|
24
|
+
|
|
25
|
+
namespace SVF
|
|
26
|
+
{
|
|
27
|
+
|
|
28
|
+
class SVFModule;
|
|
29
|
+
class DCHNode;
|
|
30
|
+
|
|
31
|
+
class DCHEdge : public GenericEdge<DCHNode>
|
|
32
|
+
{
|
|
33
|
+
public:
|
|
34
|
+
enum
|
|
35
|
+
{
|
|
36
|
+
INHERITANCE, // inheritance relation
|
|
37
|
+
INSTANCE, // template-instance relation
|
|
38
|
+
FIRST_FIELD, // src -ff-> dst => dst is first field of src
|
|
39
|
+
STD_DEF // Edges defined by the standard like (int -std-> char)
|
|
40
|
+
// We also make the char --> void edge a STD_DEF edge.
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
typedef GenericNode<DCHNode, DCHEdge>::GEdgeSetTy DCHEdgeSetTy;
|
|
44
|
+
|
|
45
|
+
DCHEdge(DCHNode *src, DCHNode *dst, GEdgeFlag k = 0)
|
|
46
|
+
: GenericEdge<DCHNode>(src, dst, k), offset(0)
|
|
47
|
+
{
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
u32_t getConstantFieldIdx(void) const
|
|
51
|
+
{
|
|
52
|
+
return offset;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
void setOffset(u32_t offset)
|
|
56
|
+
{
|
|
57
|
+
this->offset = offset;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
private:
|
|
61
|
+
u32_t offset;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
class DCHNode : public GenericNode<DCHNode, DCHEdge>
|
|
65
|
+
{
|
|
66
|
+
public:
|
|
67
|
+
typedef enum
|
|
68
|
+
{
|
|
69
|
+
PURE_ABSTRACT = 0x1, // pure virtual abstract class
|
|
70
|
+
MULTI_INHERITANCE = 0x2, // multi inheritance class
|
|
71
|
+
TEMPLATE = 0x04, // template class
|
|
72
|
+
SCALAR = 0x08 // non-class scalar type
|
|
73
|
+
} CLASSATTR;
|
|
74
|
+
|
|
75
|
+
typedef std::vector<const Function*> FuncVector;
|
|
76
|
+
|
|
77
|
+
DCHNode(const DIType *diType, NodeID i = 0, GNodeK k = 0)
|
|
78
|
+
: GenericNode<DCHNode, DCHEdge>(i, k), vtable(nullptr), flags(0)
|
|
79
|
+
{
|
|
80
|
+
this->diType = diType;
|
|
81
|
+
if (diType == nullptr)
|
|
82
|
+
{
|
|
83
|
+
typeName = "null-void";
|
|
84
|
+
}
|
|
85
|
+
else if (diType->getRawName() != nullptr)
|
|
86
|
+
{
|
|
87
|
+
typeName = diType->getName().str();
|
|
88
|
+
}
|
|
89
|
+
else
|
|
90
|
+
{
|
|
91
|
+
typeName = "unnamed!";
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
~DCHNode() { }
|
|
96
|
+
|
|
97
|
+
const DIType *getType(void) const
|
|
98
|
+
{
|
|
99
|
+
return diType;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
std::string getName() const
|
|
103
|
+
{
|
|
104
|
+
return typeName;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/// Flags
|
|
108
|
+
//@{
|
|
109
|
+
inline void setFlag(CLASSATTR mask)
|
|
110
|
+
{
|
|
111
|
+
flags |= mask;
|
|
112
|
+
}
|
|
113
|
+
inline bool hasFlag(CLASSATTR mask) const
|
|
114
|
+
{
|
|
115
|
+
return (flags & mask) == mask;
|
|
116
|
+
}
|
|
117
|
+
//@}
|
|
118
|
+
|
|
119
|
+
/// Attribute
|
|
120
|
+
//@{
|
|
121
|
+
inline void setPureAbstract()
|
|
122
|
+
{
|
|
123
|
+
setFlag(PURE_ABSTRACT);
|
|
124
|
+
}
|
|
125
|
+
inline void setMultiInheritance()
|
|
126
|
+
{
|
|
127
|
+
setFlag(MULTI_INHERITANCE);
|
|
128
|
+
}
|
|
129
|
+
inline void setTemplate()
|
|
130
|
+
{
|
|
131
|
+
setFlag(TEMPLATE);
|
|
132
|
+
}
|
|
133
|
+
inline void setScalar()
|
|
134
|
+
{
|
|
135
|
+
setFlag(SCALAR);
|
|
136
|
+
}
|
|
137
|
+
inline bool isPureAbstract() const
|
|
138
|
+
{
|
|
139
|
+
return hasFlag(PURE_ABSTRACT);
|
|
140
|
+
}
|
|
141
|
+
inline bool isMultiInheritance() const
|
|
142
|
+
{
|
|
143
|
+
return hasFlag(MULTI_INHERITANCE);
|
|
144
|
+
}
|
|
145
|
+
inline bool isTemplate() const
|
|
146
|
+
{
|
|
147
|
+
return hasFlag(TEMPLATE);
|
|
148
|
+
}
|
|
149
|
+
inline bool isScalar() const
|
|
150
|
+
{
|
|
151
|
+
return hasFlag(SCALAR);
|
|
152
|
+
}
|
|
153
|
+
//@}
|
|
154
|
+
|
|
155
|
+
void addTypedef(const DIDerivedType *diTypedef)
|
|
156
|
+
{
|
|
157
|
+
typedefs.insert(diTypedef);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const Set<const DIDerivedType *> &getTypedefs(void) const
|
|
161
|
+
{
|
|
162
|
+
return typedefs;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
void setVTable(const SVFGlobalValue *vtbl)
|
|
166
|
+
{
|
|
167
|
+
vtable = vtbl;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
const SVFGlobalValue *getVTable() const
|
|
171
|
+
{
|
|
172
|
+
return vtable;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/// Returns the vector of virtual function vectors.
|
|
176
|
+
const std::vector<std::vector<const Function* >> &getVfnVectors(void) const
|
|
177
|
+
{
|
|
178
|
+
return vfnVectors;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/// Return the nth virtual function vector in the vtable.
|
|
182
|
+
std::vector<const Function* > &getVfnVector(unsigned n)
|
|
183
|
+
{
|
|
184
|
+
if (vfnVectors.size() < n + 1)
|
|
185
|
+
{
|
|
186
|
+
vfnVectors.resize(n + 1);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return vfnVectors[n];
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
private:
|
|
193
|
+
/// Type of this node.
|
|
194
|
+
const DIType *diType;
|
|
195
|
+
/// Typedefs which map to this type.
|
|
196
|
+
Set<const DIDerivedType *> typedefs;
|
|
197
|
+
const SVFGlobalValue* vtable;
|
|
198
|
+
std::string typeName;
|
|
199
|
+
size_t flags;
|
|
200
|
+
/// The virtual functions which this class actually defines/overrides.
|
|
201
|
+
std::vector<const Function* > primaryVTable;
|
|
202
|
+
/// If a vtable is split into more than one vfn vector for multiple inheritance,
|
|
203
|
+
/// 0 would be the primary base + this classes virtual functions, 1 would be
|
|
204
|
+
/// the second parent, 2 would be third parent, etc.
|
|
205
|
+
std::vector<std::vector<const Function*>> vfnVectors;
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
/// Dwarf based CHG.
|
|
209
|
+
class DCHGraph : public CommonCHGraph, public GenericGraph<DCHNode, DCHEdge>
|
|
210
|
+
{
|
|
211
|
+
public:
|
|
212
|
+
/// Returns the DIType beneath the qualifiers. Does not strip away "DW_TAG_members".
|
|
213
|
+
static const DIType *stripQualifiers(const DIType *);
|
|
214
|
+
|
|
215
|
+
/// Returns the DIType beneath all qualifiers and arrays.
|
|
216
|
+
static const DIType *stripArray(const DIType *);
|
|
217
|
+
|
|
218
|
+
/// Returns true if t1 and t2 are equivalent, ignoring qualifiers.
|
|
219
|
+
/// For equality...
|
|
220
|
+
/// Tags always need to be equal.
|
|
221
|
+
/// DIBasicType: shallow pointer equality.
|
|
222
|
+
/// DIDerivedType: base types (teq).
|
|
223
|
+
/// DICompositeType: shallow pointer equality.
|
|
224
|
+
/// DISubroutineType: shallow pointer equality.
|
|
225
|
+
static bool teq(const DIType *t1, const DIType *t2);
|
|
226
|
+
|
|
227
|
+
/// Returns a human-readable version of the DIType.
|
|
228
|
+
static std::string diTypeToStr(const DIType *);
|
|
229
|
+
|
|
230
|
+
// Returns whether t is an array, a struct, a class, a union, or neither.
|
|
231
|
+
static bool isAgg(const DIType *t);
|
|
232
|
+
|
|
233
|
+
public:
|
|
234
|
+
DCHGraph(const SVFModule *svfMod)
|
|
235
|
+
: svfModule(svfMod), numTypes(0) // vfID(0), buildingCHGTime(0) {
|
|
236
|
+
{
|
|
237
|
+
this->kind = DI;
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
virtual ~DCHGraph() { };
|
|
241
|
+
|
|
242
|
+
/// Builds the CHG from DWARF debug information. extend determines
|
|
243
|
+
/// whether to extend the CHG with first field edges.
|
|
244
|
+
virtual void buildCHG(bool extend);
|
|
245
|
+
|
|
246
|
+
void dump(const std::string& filename)
|
|
247
|
+
{
|
|
248
|
+
GraphPrinter::WriteGraphToFile(SVFUtil::outs(), filename, this);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
void print(void);
|
|
252
|
+
|
|
253
|
+
virtual bool csHasVFnsBasedonCHA(CallSite cs) override
|
|
254
|
+
{
|
|
255
|
+
return csHasVtblsBasedonCHA(cs);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
virtual const VFunSet &getCSVFsBasedonCHA(CallSite cs) override;
|
|
259
|
+
|
|
260
|
+
virtual bool csHasVtblsBasedonCHA(CallBase* cs)
|
|
261
|
+
{
|
|
262
|
+
assert(false && "not supported");
|
|
263
|
+
const DIType *type = getCanonicalType(getCSStaticType(cs));
|
|
264
|
+
if (!hasNode(type))
|
|
265
|
+
{
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
return getNode(type)->getVTable() != nullptr;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
virtual bool csHasVtblsBasedonCHA(CallSite cs) override
|
|
273
|
+
{
|
|
274
|
+
assert(false && "not supported!");
|
|
275
|
+
abort();
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
virtual const VTableSet &getCSVtblsBasedonCHA(CallSite cs) override;
|
|
279
|
+
virtual void getVFnsFromVtbls(CallSite cs, const VTableSet &vtbls, VFunSet &virtualFunctions) override;
|
|
280
|
+
|
|
281
|
+
/// Returns true if a is a transitive base of b. firstField determines
|
|
282
|
+
/// whether to consider first-field edges.
|
|
283
|
+
virtual bool isBase(const DIType *a, const DIType *b, bool firstField);
|
|
284
|
+
|
|
285
|
+
/// Returns true if f is a field of b (fields from getFieldTypes).
|
|
286
|
+
virtual bool isFieldOf(const DIType *f, const DIType *b);
|
|
287
|
+
|
|
288
|
+
static inline bool classof(const CommonCHGraph *chg)
|
|
289
|
+
{
|
|
290
|
+
return chg->getKind() == DI;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
/// Returns the type representing all qualifier-variations of t.
|
|
294
|
+
/// This should only matter in the case of DerivedTypes where
|
|
295
|
+
/// qualifiers and have qualified base types cause a mess.
|
|
296
|
+
const DIType *getCanonicalType(const DIType *t);
|
|
297
|
+
|
|
298
|
+
/// Returns the type of field number idx (flattened) in base.
|
|
299
|
+
const DIType *getFieldType(const DIType *base, unsigned idx)
|
|
300
|
+
{
|
|
301
|
+
base = getCanonicalType(base);
|
|
302
|
+
if (base == nullptr)
|
|
303
|
+
{
|
|
304
|
+
// Conservative; the base object is untyped, sadly.
|
|
305
|
+
return nullptr;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// For TBHC this is conservative because the union type is lower in the DCHG
|
|
309
|
+
// than its fields. TODO: make more precise.
|
|
310
|
+
if (base->getTag() == dwarf::DW_TAG_union_type)
|
|
311
|
+
{
|
|
312
|
+
return base;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (base->getTag() == dwarf::DW_TAG_array_type)
|
|
316
|
+
{
|
|
317
|
+
const DICompositeType *cbase = SVFUtil::dyn_cast<DICompositeType>(base);
|
|
318
|
+
assert(cbase && "DCHG: bad DIComposite case");
|
|
319
|
+
return cbase->getBaseType();
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
if (!(base->getTag() == dwarf::DW_TAG_class_type
|
|
323
|
+
|| base->getTag() == dwarf::DW_TAG_structure_type))
|
|
324
|
+
{
|
|
325
|
+
return nullptr;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
assert(fieldTypes.find(base) != fieldTypes.end() && "DCHG: base not flattened!");
|
|
329
|
+
std::vector<const DIType *> &fields = fieldTypes[base];
|
|
330
|
+
assert(fields.size() > idx && "DCHG: idx into struct larger than # fields!");
|
|
331
|
+
return getCanonicalType(fields[idx]);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/// Returns a vector of the types of all fields in base.
|
|
335
|
+
const std::vector<const DIType *> &getFieldTypes(const DIType *base)
|
|
336
|
+
{
|
|
337
|
+
base = getCanonicalType(base);
|
|
338
|
+
assert(fieldTypes.find(base) != fieldTypes.end() && "DCHG: base not flattened!");
|
|
339
|
+
return fieldTypes[base];
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
// Returns the number of fields in base (length of getFieldTypes).
|
|
343
|
+
unsigned getNumFields(const DIType *base)
|
|
344
|
+
{
|
|
345
|
+
base = getCanonicalType(base);
|
|
346
|
+
assert(fieldTypes.find(base) != fieldTypes.end() && "DCHG: base not flattened!");
|
|
347
|
+
return fieldTypes[base].size();
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
/// Returns all the aggregates contained (transitively) in base.
|
|
351
|
+
const Set<const DIType *> &getAggs(const DIType *base)
|
|
352
|
+
{
|
|
353
|
+
base = getCanonicalType(base);
|
|
354
|
+
assert(containingAggs.find(base) != containingAggs.end() && "DCHG: aggregates not gathered for base!");
|
|
355
|
+
return containingAggs[base];
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
bool isFirstField(const DIType *f, const DIType *b);
|
|
359
|
+
|
|
360
|
+
protected:
|
|
361
|
+
/// SVF Module this CHG is built from.
|
|
362
|
+
const SVFModule *svfModule;
|
|
363
|
+
/// Whether this CHG is an extended CHG (first-field). Set by buildCHG.
|
|
364
|
+
bool extended = false;
|
|
365
|
+
/// Maps DITypes to their nodes.
|
|
366
|
+
Map<const DIType *, DCHNode *> diTypeToNodeMap;
|
|
367
|
+
/// Maps VTables to the DIType associated with them.
|
|
368
|
+
Map<const SVFGlobalValue *, const DIType *> vtblToTypeMap;
|
|
369
|
+
/// Maps types to all children (i.e. CHA).
|
|
370
|
+
Map<const DIType *, NodeBS> chaMap;
|
|
371
|
+
/// Maps types to all children but also considering first field.
|
|
372
|
+
Map<const DIType *, NodeBS> chaFFMap;
|
|
373
|
+
/// Maps types to a set with their vtable and all their children's.
|
|
374
|
+
Map<const DIType *, VTableSet> vtblCHAMap;
|
|
375
|
+
/// Maps callsites to a set of potential virtual functions based on CHA.
|
|
376
|
+
Map<CallSite, VFunSet> csCHAMap;
|
|
377
|
+
/// Maps types to their canonical type (many-to-one).
|
|
378
|
+
Map<const DIType *, const DIType *> canonicalTypeMap;
|
|
379
|
+
/// Set of all possible canonical types (i.e. values of canonicalTypeMap).
|
|
380
|
+
Set<const DIType *> canonicalTypes;
|
|
381
|
+
/// Maps types to their flattened fields' types.
|
|
382
|
+
Map<const DIType *, std::vector<const DIType *>> fieldTypes;
|
|
383
|
+
/// Maps aggregate types to all the aggregate types it transitively contains.
|
|
384
|
+
Map<const DIType *, Set<const DIType *>> containingAggs;
|
|
385
|
+
|
|
386
|
+
private:
|
|
387
|
+
/// Construction helper to process DIBasicTypes.
|
|
388
|
+
void handleDIBasicType(const DIBasicType *basicType);
|
|
389
|
+
/// Construction helper to process DICompositeTypes.
|
|
390
|
+
void handleDICompositeType(const DICompositeType *compositeType);
|
|
391
|
+
/// Construction helper to process DIDerivedTypes.
|
|
392
|
+
void handleDIDerivedType(const DIDerivedType *derivedType);
|
|
393
|
+
/// Construction helper to process DISubroutineTypes.
|
|
394
|
+
void handleDISubroutineType(const DISubroutineType *subroutineType);
|
|
395
|
+
|
|
396
|
+
/// Finds all defined virtual functions and attaches them to nodes.
|
|
397
|
+
void buildVTables(const SVFModule &module);
|
|
398
|
+
|
|
399
|
+
/// Returns a set of all children of type (CHA). Also gradually builds chaMap.
|
|
400
|
+
const NodeBS &cha(const DIType *type, bool firstField);
|
|
401
|
+
|
|
402
|
+
/// Attaches the typedef(s) to the base node.
|
|
403
|
+
void handleTypedef(const DIType *typedefType);
|
|
404
|
+
|
|
405
|
+
/// Populates fieldTypes for type and all its elements.
|
|
406
|
+
void flatten(const DICompositeType *type);
|
|
407
|
+
|
|
408
|
+
/// Populates containingAggs for type and all its elements.
|
|
409
|
+
void gatherAggs(const DICompositeType *type);
|
|
410
|
+
|
|
411
|
+
/// Creates a node from type, or returns it if it exists.
|
|
412
|
+
DCHNode *getOrCreateNode(const DIType *type);
|
|
413
|
+
|
|
414
|
+
/// Retrieves the metadata associated with a *virtual* callsite.
|
|
415
|
+
const DIType *getCSStaticType(CallBase* cs) const
|
|
416
|
+
{
|
|
417
|
+
MDNode *md = cs->getMetadata(cppUtil::ctir::derefMDName);
|
|
418
|
+
assert(md != nullptr && "Missing type metadata at virtual callsite");
|
|
419
|
+
DIType *diType = SVFUtil::dyn_cast<DIType>(md);
|
|
420
|
+
assert(diType != nullptr && "Incorrect metadata type at virtual callsite");
|
|
421
|
+
return diType;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
const DIType *getCSStaticType(CallSite cs) const
|
|
425
|
+
{
|
|
426
|
+
assert(false && "not supported!");
|
|
427
|
+
abort();
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/// Checks if a node exists for type.
|
|
431
|
+
bool hasNode(const DIType *type)
|
|
432
|
+
{
|
|
433
|
+
type = getCanonicalType(type);
|
|
434
|
+
return diTypeToNodeMap.find(type) != diTypeToNodeMap.end();
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
/// Returns the node for type (nullptr if it doesn't exist).
|
|
438
|
+
DCHNode *getNode(const DIType *type)
|
|
439
|
+
{
|
|
440
|
+
type = getCanonicalType(type);
|
|
441
|
+
if (hasNode(type))
|
|
442
|
+
{
|
|
443
|
+
return diTypeToNodeMap.at(type);
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
return nullptr;
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
|
|
450
|
+
/// Creates an edge between from t1 to t2.
|
|
451
|
+
DCHEdge *addEdge(const DIType *t1, const DIType *t2, DCHEdge::GEdgeKind et);
|
|
452
|
+
/// Returns the edge between t1 and t2 if it exists, returns nullptr otherwise.
|
|
453
|
+
DCHEdge *hasEdge(const DIType *t1, const DIType *t2, DCHEdge::GEdgeKind et);
|
|
454
|
+
|
|
455
|
+
/// Number of types (nodes) in the graph.
|
|
456
|
+
NodeID numTypes;
|
|
457
|
+
};
|
|
458
|
+
|
|
459
|
+
} // End namespace SVF
|
|
460
|
+
|
|
461
|
+
namespace SVF
|
|
462
|
+
{
|
|
463
|
+
/* !
|
|
464
|
+
* GenericGraphTraits specializations for generic graph algorithms.
|
|
465
|
+
* Provide graph traits for traversing from a constraint node using standard graph traversals.
|
|
466
|
+
*/
|
|
467
|
+
template<> struct GenericGraphTraits<SVF::DCHNode*> : public GenericGraphTraits<SVF::GenericNode<SVF::DCHNode,SVF::DCHEdge>* >
|
|
468
|
+
{
|
|
469
|
+
};
|
|
470
|
+
|
|
471
|
+
/// Inverse GenericGraphTraits specializations for call graph node, it is used for inverse traversal.
|
|
472
|
+
template<>
|
|
473
|
+
struct GenericGraphTraits<Inverse<SVF::DCHNode*> > : public GenericGraphTraits<Inverse<SVF::GenericNode<SVF::DCHNode,SVF::DCHEdge>* > >
|
|
474
|
+
{
|
|
475
|
+
};
|
|
476
|
+
|
|
477
|
+
template<> struct GenericGraphTraits<SVF::DCHGraph*> : public GenericGraphTraits<SVF::GenericGraph<SVF::DCHNode,SVF::DCHEdge>* >
|
|
478
|
+
{
|
|
479
|
+
typedef SVF::DCHNode *NodeRef;
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
} // End namespace llvm
|
|
483
|
+
|
|
484
|
+
#endif /* DCHG_H_ */
|