svf-tools 1.0.758 → 1.0.760
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/CMakeLists.txt +7 -0
- package/SVF-doxygen/html/html/AccessPath_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/AddressValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/AndersenSCD_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/Andersen_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/Andersen_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CFBasicBlockG_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/CFBasicBlockG_8h_source.html +2 -2
- package/SVF-doxygen/html/html/CFGrammar_8cpp_source.html +11 -8
- package/SVF-doxygen/html/html/CFLAlias_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CFLAlias_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CHGBuilder_8cpp_source.html +17 -17
- package/SVF-doxygen/html/html/CHG_8cpp.html +2 -2
- package/SVF-doxygen/html/html/CHG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/CHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/CallGraphBuilder_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/CallGraphBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/CommandLine_8h_source.html +2 -1
- package/SVF-doxygen/html/html/ConsExeState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ConsExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ConsG_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ContextDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CoreBitVector_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/CxtStmt_8h_source.html +2 -2
- package/SVF-doxygen/html/html/DCHG_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/DCHG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/DDAClient_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/DDAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/DPItem_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ExtAPI_8cpp.html +0 -196
- package/SVF-doxygen/html/html/ExtAPI_8cpp_source.html +121 -786
- package/SVF-doxygen/html/html/ExtAPI_8h.html +2 -67
- package/SVF-doxygen/html/html/ExtAPI_8h_source.html +69 -654
- package/SVF-doxygen/html/html/FSMPTA_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/FSMPTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/FlowSensitive_8h_source.html +1 -1
- package/SVF-doxygen/html/html/GenericGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGBuilder_8cpp_source.html +11 -11
- package/SVF-doxygen/html/html/ICFGBuilder_8h_source.html +2 -2
- package/SVF-doxygen/html/html/ICFGEdge_8h_source.html +1 -1
- package/SVF-doxygen/html/html/ICFGNode_8h_source.html +4 -4
- package/SVF-doxygen/html/html/ICFG_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/ICFG_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IRGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/IntervalExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/IntervalValue_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8cpp_source.html +6 -6
- package/SVF-doxygen/html/html/LLVMLoopAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/LLVMModule_8cpp.html +3 -4
- package/SVF-doxygen/html/html/LLVMModule_8cpp_source.html +1408 -1289
- package/SVF-doxygen/html/html/LLVMModule_8h.html +1 -0
- package/SVF-doxygen/html/html/LLVMModule_8h_source.html +418 -400
- package/SVF-doxygen/html/html/LLVMUtil_8cpp_source.html +744 -616
- package/SVF-doxygen/html/html/LLVMUtil_8h.html +9 -1
- package/SVF-doxygen/html/html/LLVMUtil_8h_source.html +485 -472
- package/SVF-doxygen/html/html/LeakChecker_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/LockAnalysis_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/LockAnalysis_8h_source.html +2 -2
- package/SVF-doxygen/html/html/LockResultValidator_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/LockResultValidator_8h_source.html +5 -5
- package/SVF-doxygen/html/html/MHP_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/MHP_8h_source.html +3 -3
- package/SVF-doxygen/html/html/MSSAMuChi_8h_source.html +2 -2
- package/SVF-doxygen/html/html/MTAAnnotator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTAAnnotator_8h_source.html +4 -4
- package/SVF-doxygen/html/html/MTAResultValidator_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/MTAStat_8cpp_source.html +7 -7
- package/SVF-doxygen/html/html/MTA_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/MTA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemRegion_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/MemRegion_8h_source.html +1 -1
- package/SVF-doxygen/html/html/MemSSA_8cpp_source.html +20 -20
- package/SVF-doxygen/html/html/MemSSA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/NumericLiteral_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Options_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/PCG_8cpp_source.html +13 -13
- package/SVF-doxygen/html/html/PCG_8h_source.html +3 -3
- package/SVF-doxygen/html/html/PTACallGraph_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/PTACallGraph_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointerAnalysisImpl_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/PointerAnalysis_8cpp_source.html +12 -12
- package/SVF-doxygen/html/html/PointerAnalysis_8h_source.html +1 -1
- package/SVF-doxygen/html/html/PointsTo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/ProgSlice_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/ProgSlice_8h_source.html +1 -1
- package/SVF-doxygen/html/html/RelExeState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFBugReport_8cpp_source.html +362 -365
- package/SVF-doxygen/html/html/SVFBugReport_8h_source.html +24 -24
- package/SVF-doxygen/html/html/SVFFileSystem_8cpp_source.html +2087 -2084
- package/SVF-doxygen/html/html/SVFFileSystem_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFFileSystem_8h_source.html +60 -60
- package/SVF-doxygen/html/html/SVFGBuilder_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFGOPT_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFGReadWrite_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFG_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/SVFIR2ConsExeState_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIR2ItvExeState_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/SVFIRBuilder_8cpp_source.html +454 -527
- package/SVF-doxygen/html/html/SVFIRBuilder_8h.html +1 -1
- package/SVF-doxygen/html/html/SVFIRBuilder_8h_source.html +211 -233
- package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp.html +2 -0
- package/SVF-doxygen/html/html/SVFIRExtAPI_8cpp_source.html +286 -682
- package/SVF-doxygen/html/html/SVFIR_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/SVFIR_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFModule_8cpp_source.html +9 -9
- package/SVF-doxygen/html/html/SVFModule_8h.html +0 -1
- package/SVF-doxygen/html/html/SVFModule_8h_source.html +258 -260
- package/SVF-doxygen/html/html/SVFStat_8cpp_source.html +8 -8
- package/SVF-doxygen/html/html/SVFStatements_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SVFStatements_8h_source.html +2 -2
- package/SVF-doxygen/html/html/SVFType_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SVFUtil_8cpp_source.html +7 -6
- package/SVF-doxygen/html/html/SVFUtil_8h.html +4 -9
- package/SVF-doxygen/html/html/SVFUtil_8h_source.html +392 -405
- package/SVF-doxygen/html/html/SVFValue_8cpp_source.html +11 -10
- package/SVF-doxygen/html/html/SVFValue_8h_source.html +1038 -1030
- package/SVF-doxygen/html/html/SVFVariables_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCheckerAPI_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SaberCondAllocator_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/SaberCondAllocator_8h_source.html +6 -6
- package/SVF-doxygen/html/html/SaberSVFGBuilder_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SparseBitVector_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SrcSnkDDA_8h_source.html +1 -1
- package/SVF-doxygen/html/html/Steensgaard_8cpp_source.html +5 -5
- package/SVF-doxygen/html/html/Steensgaard_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymState_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymState_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableBuilder_8cpp_source.html +28 -28
- package/SVF-doxygen/html/html/SymbolTableBuilder_8h_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/SymbolTableInfo_8h_source.html +2 -2
- package/SVF-doxygen/html/html/TCT_8cpp_source.html +15 -15
- package/SVF-doxygen/html/html/TCT_8h_source.html +7 -7
- package/SVF-doxygen/html/html/ThreadAPI_8cpp_source.html +14 -14
- package/SVF-doxygen/html/html/ThreadAPI_8h_source.html +5 -5
- package/SVF-doxygen/html/html/ThreadCallGraph_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/TypeAnalysis_8cpp_source.html +3 -3
- package/SVF-doxygen/html/html/VFGNode_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WPAPass_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/WPAPass_8h_source.html +1 -1
- package/SVF-doxygen/html/html/WTO_8h_source.html +1 -1
- package/SVF-doxygen/html/html/annotated.html +1 -4
- package/SVF-doxygen/html/html/cJSON_8cpp.html +2 -1
- package/SVF-doxygen/html/html/cJSON_8cpp_source.html +2 -1
- package/SVF-doxygen/html/html/cfl_8cpp.html +2 -2
- package/SVF-doxygen/html/html/cfl_8cpp_source.html +2 -2
- package/SVF-doxygen/html/html/classOption.html +2 -1
- package/SVF-doxygen/html/html/classSVF_1_1AccessPath.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ActualINSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ActualOUTSVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrCGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddrStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AddressValue.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1AliasDDAClient.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Andersen.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1AndersenSCD.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BVDataPTAImpl.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BinaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BranchStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1BufferOverflowBug.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTO.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockGWTOCycle.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFBasicBlockNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CFLAlias.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1CHGBuilder.html +18 -18
- package/SVF-doxygen/html/html/classSVF_1_1CHGraph.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1CallCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallCHI.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallGraphBuilder.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1CallICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1CallMU.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CallSite.html +95 -95
- package/SVF-doxygen/html/html/classSVF_1_1CmpStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CmpVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ConsExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextCond.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ContextDDA.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CopyStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CoreBitVector.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtDPItem.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThread.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1CxtThreadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1DCHGraph.html +9 -9
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeBug.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1DoubleFreeChecker.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI-members.html +8 -77
- package/SVF-doxygen/html/html/classSVF_1_1ExtAPI.html +130 -1337
- package/SVF-doxygen/html/html/classSVF_1_1FIObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1FileNeverCloseBug.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1FilePartialCloseBug.html +35 -35
- package/SVF-doxygen/html/html/classSVF_1_1ForkJoinAnalysis.html +12 -12
- package/SVF-doxygen/html/html/classSVF_1_1FullNullPtrDereferenceBug.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1FunEntryICFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1FunExitICFGNode.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1FunptrDDAClient.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1GenericBug.html +9 -13
- package/SVF-doxygen/html/html/classSVF_1_1GenericGraphReader.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GepValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1GrammarBase.html +11 -8
- package/SVF-doxygen/html/html/classSVF_1_1ICFG.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ICFGBuilder.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1ICFGWriter.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1InterMSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1InterPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntervalExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntervalValue.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1IntraICFGNode.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1IntraPHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LLVMLoopAnalysis.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet-members.html +42 -40
- package/SVF-doxygen/html/html/classSVF_1_1LLVMModuleSet.html +1583 -1452
- package/SVF-doxygen/html/html/classSVF_1_1LeakChecker.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1LoadStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1LockAnalysis.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1LockResultValidator.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1MHP.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1MHPValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1MRGenerator.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1MSSAPHISVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAAnnotator.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1MTAResultValidator.html +6 -6
- package/SVF-doxygen/html/html/classSVF_1_1MTASVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MTAStat.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1MemObj.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1MemSSA.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1NeverFreeBug.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1NumericLiteral.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ObjVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PCG.html +14 -14
- package/SVF-doxygen/html/html/classSVF_1_1PHIVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PTACallGraphNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PartialLeakBug.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1PartialNullPtrDereferenceBug.html +10 -10
- package/SVF-doxygen/html/html/classSVF_1_1PhiStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointerAnalysis.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1PointsTo_1_1PointsToIterator.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ProgSlice.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RaceResultValidator.html +7 -7
- package/SVF-doxygen/html/html/classSVF_1_1RaceValidator.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1ReaderIDToObjMap.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1ReaderPtrPool.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RelExeState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetCFGEdge.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1RetICFGNode.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1RetPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFArgument.html +30 -30
- package/SVF-doxygen/html/html/classSVF_1_1SVFBasicBlock.html +73 -73
- package/SVF-doxygen/html/html/classSVF_1_1SVFBlackHoleValue.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1SVFBugEvent.html +50 -50
- package/SVF-doxygen/html/html/classSVF_1_1SVFBugReport.html +87 -87
- package/SVF-doxygen/html/html/classSVF_1_1SVFCallInst.html +67 -67
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstant.html +17 -17
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantData.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantFP.html +21 -21
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantInt.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1SVFConstantNullPtr.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction-members.html +15 -13
- package/SVF-doxygen/html/html/classSVF_1_1SVFFunction.html +222 -153
- package/SVF-doxygen/html/html/classSVF_1_1SVFG.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1SVFGOPT.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFGlobalValue.html +34 -34
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ConsExeState.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1SVFIR2ItvExeState.html +4 -4
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder-members.html +64 -73
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRBuilder.html +905 -1767
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRReader.html +1126 -1124
- package/SVF-doxygen/html/html/classSVF_1_1SVFIRWriter.html +547 -546
- package/SVF-doxygen/html/html/classSVF_1_1SVFInstruction.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1SVFLoopAndDomInfo.html +2 -2
- package/SVF-doxygen/html/html/classSVF_1_1SVFMetadataAsValue.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1SVFModule.html +173 -173
- package/SVF-doxygen/html/html/classSVF_1_1SVFModuleReader.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFModuleWriter.html +23 -23
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherType.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFOtherValue.html +11 -11
- package/SVF-doxygen/html/html/classSVF_1_1SVFStat.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1SVFStructType.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SVFValue.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1SVFVirtualCallInst.html +53 -53
- package/SVF-doxygen/html/html/classSVF_1_1SaberCondAllocator.html +13 -13
- package/SVF-doxygen/html/html/classSVF_1_1SaberSVFGBuilder.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SelectStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SparseBitVector.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1Steensgaard.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1StoreStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymState.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableBuilder.html +27 -27
- package/SVF-doxygen/html/html/classSVF_1_1SymbolTableInfoReader.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TCT.html +15 -15
- package/SVF-doxygen/html/html/classSVF_1_1TDForkPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1TDJoinPE.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadAPI.html +8 -8
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraph.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ThreadCallGraphBuilder.html +5 -5
- package/SVF-doxygen/html/html/classSVF_1_1TypeAnalysis.html +3 -3
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPStmt.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1UnaryOPVFGNode.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1ValVar.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1WPAPass.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__adaptor__base.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__facade__base_1_1ReferenceProxy.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1iter__range.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1mapped__iter.html +1 -1
- package/SVF-doxygen/html/html/classSVF_1_1pointer__iterator.html +1 -1
- package/SVF-doxygen/html/html/classes.html +335 -338
- package/SVF-doxygen/html/html/dda_8cpp.html +1 -1
- package/SVF-doxygen/html/html/dda_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/dir_3bbf4ce25bc1411b817b5643b794c8fb.html +2 -0
- package/SVF-doxygen/html/html/extapi_8c.html +1950 -0
- package/SVF-doxygen/html/html/extapi_8c_source.html +1488 -0
- package/SVF-doxygen/html/html/files.html +29 -28
- package/SVF-doxygen/html/html/functions_a.html +17 -27
- package/SVF-doxygen/html/html/functions_b.html +9 -12
- package/SVF-doxygen/html/html/functions_c.html +26 -70
- package/SVF-doxygen/html/html/functions_d.html +3 -7
- package/SVF-doxygen/html/html/functions_e.html +4 -121
- package/SVF-doxygen/html/html/functions_enum.html +0 -6
- package/SVF-doxygen/html/html/functions_eval.html +0 -1
- package/SVF-doxygen/html/html/functions_eval_c.html +1 -15
- package/SVF-doxygen/html/html/functions_eval_e.html +0 -96
- package/SVF-doxygen/html/html/functions_eval_g.html +1 -2
- package/SVF-doxygen/html/html/functions_eval_l.html +0 -1
- package/SVF-doxygen/html/html/functions_eval_m.html +0 -6
- package/SVF-doxygen/html/html/functions_eval_o.html +0 -3
- package/SVF-doxygen/html/html/functions_eval_r.html +0 -6
- package/SVF-doxygen/html/html/functions_eval_s.html +0 -1
- package/SVF-doxygen/html/html/functions_f.html +16 -19
- package/SVF-doxygen/html/html/functions_func.html +6 -18
- package/SVF-doxygen/html/html/functions_func_e.html +1 -13
- package/SVF-doxygen/html/html/functions_func_g.html +24 -91
- package/SVF-doxygen/html/html/functions_func_h.html +9 -12
- package/SVF-doxygen/html/html/functions_func_i.html +16 -28
- package/SVF-doxygen/html/html/functions_func_n.html +0 -3
- package/SVF-doxygen/html/html/functions_func_p.html +3 -12
- package/SVF-doxygen/html/html/functions_func_s.html +20 -83
- package/SVF-doxygen/html/html/functions_g.html +32 -100
- package/SVF-doxygen/html/html/functions_h.html +6 -9
- package/SVF-doxygen/html/html/functions_i.html +16 -28
- package/SVF-doxygen/html/html/functions_l.html +0 -1
- package/SVF-doxygen/html/html/functions_m.html +1 -7
- package/SVF-doxygen/html/html/functions_n.html +4 -7
- package/SVF-doxygen/html/html/functions_o.html +31 -44
- package/SVF-doxygen/html/html/functions_p.html +18 -29
- package/SVF-doxygen/html/html/functions_r.html +9 -16
- package/SVF-doxygen/html/html/functions_s.html +16 -84
- package/SVF-doxygen/html/html/functions_t.html +4 -10
- package/SVF-doxygen/html/html/functions_v.html +3 -3
- package/SVF-doxygen/html/html/functions_vars_a.html +3 -0
- package/SVF-doxygen/html/html/functions_vars_b.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_c.html +1 -23
- package/SVF-doxygen/html/html/functions_vars_d.html +1 -5
- package/SVF-doxygen/html/html/functions_vars_e.html +2 -8
- package/SVF-doxygen/html/html/functions_vars_f.html +0 -3
- package/SVF-doxygen/html/html/functions_vars_o.html +0 -9
- package/SVF-doxygen/html/html/functions_vars_r.html +1 -2
- package/SVF-doxygen/html/html/functions_vars_s.html +1 -5
- package/SVF-doxygen/html/html/functions_vars_t.html +0 -6
- package/SVF-doxygen/html/html/globals.html +22 -4
- package/SVF-doxygen/html/html/globals_a.html +3 -0
- package/SVF-doxygen/html/html/globals_b.html +3 -0
- package/SVF-doxygen/html/html/globals_defs.html +3 -9
- package/SVF-doxygen/html/html/globals_e.html +0 -3
- package/SVF-doxygen/html/html/globals_f.html +11 -2
- package/SVF-doxygen/html/html/globals_func.html +159 -15
- package/SVF-doxygen/html/html/globals_g.html +13 -4
- package/SVF-doxygen/html/html/globals_i.html +41 -2
- package/SVF-doxygen/html/html/globals_j.html +3 -6
- package/SVF-doxygen/html/html/globals_l.html +3 -0
- package/SVF-doxygen/html/html/globals_m.html +8 -2
- package/SVF-doxygen/html/html/globals_n.html +2 -1
- package/SVF-doxygen/html/html/globals_p.html +1 -4
- package/SVF-doxygen/html/html/globals_r.html +12 -6
- package/SVF-doxygen/html/html/globals_s.html +33 -0
- package/SVF-doxygen/html/html/globals_t.html +3 -0
- package/SVF-doxygen/html/html/hierarchy.html +526 -529
- package/SVF-doxygen/html/html/iterator_8h_source.html +1 -1
- package/SVF-doxygen/html/html/iterator__range_8h_source.html +1 -1
- package/SVF-doxygen/html/html/llvm2svf_8cpp.html +1 -1
- package/SVF-doxygen/html/html/llvm2svf_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/menudata.js +3 -0
- package/SVF-doxygen/html/html/mta_8cpp.html +1 -1
- package/SVF-doxygen/html/html/mta_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/namespaceSVF.html +152 -151
- package/SVF-doxygen/html/html/namespaceSVF_1_1LLVMUtil.html +1003 -776
- package/SVF-doxygen/html/html/namespaceSVF_1_1SVFUtil.html +298 -368
- package/SVF-doxygen/html/html/namespacemembers_func_g.html +11 -5
- package/SVF-doxygen/html/html/namespacemembers_func_i.html +11 -14
- package/SVF-doxygen/html/html/namespacemembers_func_r.html +6 -0
- package/SVF-doxygen/html/html/namespacemembers_g.html +11 -5
- package/SVF-doxygen/html/html/namespacemembers_i.html +8 -11
- package/SVF-doxygen/html/html/namespacemembers_r.html +6 -0
- package/SVF-doxygen/html/html/saber_8cpp.html +1 -1
- package/SVF-doxygen/html/html/saber_8cpp_source.html +1 -1
- package/SVF-doxygen/html/html/search/all_0.js +153 -147
- package/SVF-doxygen/html/html/search/all_1.js +476 -478
- package/SVF-doxygen/html/html/search/all_10.js +323 -327
- package/SVF-doxygen/html/html/search/all_11.js +212 -209
- package/SVF-doxygen/html/html/search/all_12.js +536 -547
- package/SVF-doxygen/html/html/search/all_13.js +188 -189
- package/SVF-doxygen/html/html/search/all_14.js +66 -66
- package/SVF-doxygen/html/html/search/all_15.js +170 -170
- package/SVF-doxygen/html/html/search/all_16.js +60 -60
- package/SVF-doxygen/html/html/search/all_17.js +1 -1
- package/SVF-doxygen/html/html/search/all_18.js +1 -1
- package/SVF-doxygen/html/html/search/all_19.js +10 -10
- package/SVF-doxygen/html/html/search/all_1a.js +169 -169
- package/SVF-doxygen/html/html/search/all_2.js +159 -159
- package/SVF-doxygen/html/html/search/all_3.js +597 -608
- package/SVF-doxygen/html/html/search/all_4.js +226 -227
- package/SVF-doxygen/html/html/search/all_5.js +116 -156
- package/SVF-doxygen/html/html/search/all_6.js +225 -223
- package/SVF-doxygen/html/html/search/all_7.js +996 -1012
- package/SVF-doxygen/html/html/search/all_8.js +191 -192
- package/SVF-doxygen/html/html/search/all_9.js +605 -597
- package/SVF-doxygen/html/html/search/all_a.js +46 -47
- package/SVF-doxygen/html/html/search/all_b.js +26 -26
- package/SVF-doxygen/html/html/search/all_c.js +114 -113
- package/SVF-doxygen/html/html/search/all_d.js +196 -196
- package/SVF-doxygen/html/html/search/all_e.js +205 -206
- package/SVF-doxygen/html/html/search/all_f.js +116 -122
- package/SVF-doxygen/html/html/search/classes_0.js +26 -26
- package/SVF-doxygen/html/html/search/classes_1.js +9 -9
- package/SVF-doxygen/html/html/search/classes_10.js +73 -73
- package/SVF-doxygen/html/html/search/classes_11.js +15 -15
- package/SVF-doxygen/html/html/search/classes_12.js +2 -2
- package/SVF-doxygen/html/html/search/classes_13.js +10 -10
- package/SVF-doxygen/html/html/search/classes_14.js +14 -14
- package/SVF-doxygen/html/html/search/classes_15.js +1 -1
- package/SVF-doxygen/html/html/search/classes_2.js +76 -76
- package/SVF-doxygen/html/html/search/classes_3.js +35 -35
- package/SVF-doxygen/html/html/search/classes_4.js +8 -10
- package/SVF-doxygen/html/html/search/classes_5.js +28 -28
- package/SVF-doxygen/html/html/search/classes_6.js +98 -98
- package/SVF-doxygen/html/html/search/classes_7.js +33 -33
- package/SVF-doxygen/html/html/search/classes_8.js +56 -56
- package/SVF-doxygen/html/html/search/classes_9.js +1 -1
- package/SVF-doxygen/html/html/search/classes_a.js +12 -12
- package/SVF-doxygen/html/html/search/classes_b.js +29 -29
- package/SVF-doxygen/html/html/search/classes_c.js +6 -6
- package/SVF-doxygen/html/html/search/classes_d.js +18 -19
- package/SVF-doxygen/html/html/search/classes_e.js +36 -36
- package/SVF-doxygen/html/html/search/classes_f.js +25 -25
- package/SVF-doxygen/html/html/search/defines_0.js +3 -3
- package/SVF-doxygen/html/html/search/defines_1.js +2 -2
- package/SVF-doxygen/html/html/search/defines_2.js +30 -30
- package/SVF-doxygen/html/html/search/defines_3.js +20 -20
- package/SVF-doxygen/html/html/search/defines_4.js +2 -3
- package/SVF-doxygen/html/html/search/defines_5.js +4 -4
- package/SVF-doxygen/html/html/search/defines_6.js +2 -2
- package/SVF-doxygen/html/html/search/defines_7.js +5 -5
- package/SVF-doxygen/html/html/search/defines_8.js +11 -13
- package/SVF-doxygen/html/html/search/defines_9.js +9 -9
- package/SVF-doxygen/html/html/search/defines_a.js +2 -2
- package/SVF-doxygen/html/html/search/defines_b.js +1 -1
- package/SVF-doxygen/html/html/search/defines_c.js +3 -2
- package/SVF-doxygen/html/html/search/defines_d.js +2 -2
- package/SVF-doxygen/html/html/search/defines_e.js +6 -6
- package/SVF-doxygen/html/html/search/defines_f.js +3 -3
- package/SVF-doxygen/html/html/search/enums_0.js +3 -3
- package/SVF-doxygen/html/html/search/enums_1.js +2 -2
- package/SVF-doxygen/html/html/search/enums_10.js +1 -1
- package/SVF-doxygen/html/html/search/enums_11.js +1 -1
- package/SVF-doxygen/html/html/search/enums_2.js +8 -8
- package/SVF-doxygen/html/html/search/enums_3.js +1 -1
- package/SVF-doxygen/html/html/search/enums_4.js +3 -4
- package/SVF-doxygen/html/html/search/enums_5.js +1 -1
- package/SVF-doxygen/html/html/search/enums_6.js +2 -2
- package/SVF-doxygen/html/html/search/enums_7.js +2 -2
- package/SVF-doxygen/html/html/search/enums_8.js +4 -4
- package/SVF-doxygen/html/html/search/enums_9.js +1 -1
- package/SVF-doxygen/html/html/search/enums_a.js +1 -2
- package/SVF-doxygen/html/html/search/enums_b.js +7 -7
- package/SVF-doxygen/html/html/search/enums_c.js +1 -1
- package/SVF-doxygen/html/html/search/enums_d.js +4 -4
- package/SVF-doxygen/html/html/search/enums_e.js +2 -2
- package/SVF-doxygen/html/html/search/enums_f.js +4 -4
- package/SVF-doxygen/html/html/search/enumvalues_0.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_1.js +14 -14
- package/SVF-doxygen/html/html/search/enumvalues_10.js +35 -35
- package/SVF-doxygen/html/html/search/enumvalues_11.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_12.js +10 -10
- package/SVF-doxygen/html/html/search/enumvalues_13.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_14.js +1 -1
- package/SVF-doxygen/html/html/search/enumvalues_15.js +3 -3
- package/SVF-doxygen/html/html/search/enumvalues_2.js +36 -40
- package/SVF-doxygen/html/html/search/enumvalues_3.js +13 -13
- package/SVF-doxygen/html/html/search/enumvalues_4.js +2 -34
- package/SVF-doxygen/html/html/search/enumvalues_5.js +48 -48
- package/SVF-doxygen/html/html/search/enumvalues_6.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_7.js +9 -9
- package/SVF-doxygen/html/html/search/enumvalues_8.js +23 -23
- package/SVF-doxygen/html/html/search/enumvalues_9.js +6 -6
- package/SVF-doxygen/html/html/search/enumvalues_a.js +15 -17
- package/SVF-doxygen/html/html/search/enumvalues_b.js +11 -11
- package/SVF-doxygen/html/html/search/enumvalues_c.js +5 -6
- package/SVF-doxygen/html/html/search/enumvalues_d.js +18 -18
- package/SVF-doxygen/html/html/search/enumvalues_e.js +9 -11
- package/SVF-doxygen/html/html/search/enumvalues_f.js +45 -45
- package/SVF-doxygen/html/html/search/files_0.js +13 -13
- package/SVF-doxygen/html/html/search/files_1.js +7 -7
- package/SVF-doxygen/html/html/search/files_10.js +8 -8
- package/SVF-doxygen/html/html/search/files_11.js +8 -8
- package/SVF-doxygen/html/html/search/files_12.js +2 -2
- package/SVF-doxygen/html/html/search/files_2.js +49 -49
- package/SVF-doxygen/html/html/search/files_3.js +14 -14
- package/SVF-doxygen/html/html/search/files_4.js +5 -4
- package/SVF-doxygen/html/html/search/files_5.js +13 -13
- package/SVF-doxygen/html/html/search/files_6.js +9 -9
- package/SVF-doxygen/html/html/search/files_7.js +14 -14
- package/SVF-doxygen/html/html/search/files_8.js +13 -13
- package/SVF-doxygen/html/html/search/files_9.js +18 -18
- package/SVF-doxygen/html/html/search/files_a.js +3 -3
- package/SVF-doxygen/html/html/search/files_b.js +2 -2
- package/SVF-doxygen/html/html/search/files_c.js +20 -20
- package/SVF-doxygen/html/html/search/files_d.js +4 -4
- package/SVF-doxygen/html/html/search/files_e.js +62 -62
- package/SVF-doxygen/html/html/search/files_f.js +8 -8
- package/SVF-doxygen/html/html/search/functions_0.js +6 -351
- package/SVF-doxygen/html/html/search/functions_1.js +348 -81
- package/SVF-doxygen/html/html/search/functions_10.js +139 -122
- package/SVF-doxygen/html/html/search/functions_11.js +126 -283
- package/SVF-doxygen/html/html/search/functions_12.js +273 -55
- package/SVF-doxygen/html/html/search/functions_13.js +56 -38
- package/SVF-doxygen/html/html/search/functions_14.js +38 -71
- package/SVF-doxygen/html/html/search/functions_15.js +71 -29
- package/SVF-doxygen/html/html/search/functions_16.js +29 -2
- package/SVF-doxygen/html/html/search/functions_17.js +2 -169
- package/SVF-doxygen/html/html/search/functions_18.html +30 -0
- package/SVF-doxygen/html/html/search/functions_18.js +172 -0
- package/SVF-doxygen/html/html/search/functions_2.js +82 -251
- package/SVF-doxygen/html/html/search/functions_3.js +251 -71
- package/SVF-doxygen/html/html/search/functions_4.js +71 -55
- package/SVF-doxygen/html/html/search/functions_5.js +51 -55
- package/SVF-doxygen/html/html/search/functions_6.js +58 -832
- package/SVF-doxygen/html/html/search/functions_7.js +816 -144
- package/SVF-doxygen/html/html/search/functions_8.js +143 -417
- package/SVF-doxygen/html/html/search/functions_9.js +425 -29
- package/SVF-doxygen/html/html/search/functions_a.js +30 -2
- package/SVF-doxygen/html/html/search/functions_b.js +2 -23
- package/SVF-doxygen/html/html/search/functions_c.js +24 -75
- package/SVF-doxygen/html/html/search/functions_d.js +77 -35
- package/SVF-doxygen/html/html/search/functions_e.js +34 -56
- package/SVF-doxygen/html/html/search/functions_f.js +56 -143
- package/SVF-doxygen/html/html/search/namespaces_0.js +1 -1
- package/SVF-doxygen/html/html/search/namespaces_1.js +7 -7
- package/SVF-doxygen/html/html/search/related_0.js +2 -2
- package/SVF-doxygen/html/html/search/related_1.js +1 -1
- package/SVF-doxygen/html/html/search/related_2.js +2 -2
- package/SVF-doxygen/html/html/search/related_3.js +2 -2
- package/SVF-doxygen/html/html/search/related_4.js +2 -2
- package/SVF-doxygen/html/html/search/related_5.js +1 -1
- package/SVF-doxygen/html/html/search/related_6.js +2 -2
- package/SVF-doxygen/html/html/search/related_7.js +4 -4
- package/SVF-doxygen/html/html/search/related_8.js +2 -2
- package/SVF-doxygen/html/html/search/related_9.js +4 -4
- package/SVF-doxygen/html/html/search/related_a.js +19 -19
- package/SVF-doxygen/html/html/search/related_b.js +4 -4
- package/SVF-doxygen/html/html/search/related_c.js +1 -1
- package/SVF-doxygen/html/html/search/related_d.js +11 -11
- package/SVF-doxygen/html/html/search/related_e.js +2 -2
- package/SVF-doxygen/html/html/search/related_f.js +2 -2
- package/SVF-doxygen/html/html/search/searchdata.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_0.js +18 -18
- package/SVF-doxygen/html/html/search/typedefs_1.js +25 -25
- package/SVF-doxygen/html/html/search/typedefs_10.js +60 -60
- package/SVF-doxygen/html/html/search/typedefs_11.js +13 -13
- package/SVF-doxygen/html/html/search/typedefs_12.js +11 -11
- package/SVF-doxygen/html/html/search/typedefs_13.js +35 -35
- package/SVF-doxygen/html/html/search/typedefs_14.js +8 -8
- package/SVF-doxygen/html/html/search/typedefs_2.js +126 -126
- package/SVF-doxygen/html/html/search/typedefs_3.js +39 -39
- package/SVF-doxygen/html/html/search/typedefs_4.js +16 -16
- package/SVF-doxygen/html/html/search/typedefs_5.js +41 -41
- package/SVF-doxygen/html/html/search/typedefs_6.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_7.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_8.js +1 -1
- package/SVF-doxygen/html/html/search/typedefs_9.js +6 -6
- package/SVF-doxygen/html/html/search/typedefs_a.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_b.js +29 -29
- package/SVF-doxygen/html/html/search/typedefs_c.js +40 -40
- package/SVF-doxygen/html/html/search/typedefs_d.js +15 -15
- package/SVF-doxygen/html/html/search/typedefs_e.js +52 -52
- package/SVF-doxygen/html/html/search/typedefs_f.js +14 -14
- package/SVF-doxygen/html/html/search/variables_0.js +147 -147
- package/SVF-doxygen/html/html/search/variables_1.js +75 -74
- package/SVF-doxygen/html/html/search/variables_10.js +97 -97
- package/SVF-doxygen/html/html/search/variables_11.js +46 -46
- package/SVF-doxygen/html/html/search/variables_12.js +92 -93
- package/SVF-doxygen/html/html/search/variables_13.js +75 -77
- package/SVF-doxygen/html/html/search/variables_14.js +14 -14
- package/SVF-doxygen/html/html/search/variables_15.js +48 -48
- package/SVF-doxygen/html/html/search/variables_16.js +9 -9
- package/SVF-doxygen/html/html/search/variables_17.js +1 -1
- package/SVF-doxygen/html/html/search/variables_18.js +2 -2
- package/SVF-doxygen/html/html/search/variables_2.js +34 -35
- package/SVF-doxygen/html/html/search/variables_3.js +141 -148
- package/SVF-doxygen/html/html/search/variables_4.js +55 -56
- package/SVF-doxygen/html/html/search/variables_5.js +38 -40
- package/SVF-doxygen/html/html/search/variables_6.js +66 -67
- package/SVF-doxygen/html/html/search/variables_7.js +33 -33
- package/SVF-doxygen/html/html/search/variables_8.js +7 -7
- package/SVF-doxygen/html/html/search/variables_9.js +77 -77
- package/SVF-doxygen/html/html/search/variables_a.js +4 -4
- package/SVF-doxygen/html/html/search/variables_b.js +10 -10
- package/SVF-doxygen/html/html/search/variables_c.js +45 -45
- package/SVF-doxygen/html/html/search/variables_d.js +56 -56
- package/SVF-doxygen/html/html/search/variables_e.js +123 -123
- package/SVF-doxygen/html/html/search/variables_f.js +30 -33
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01ConstraintGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1DOTGraphTraits_3_01IRGraph_01_5_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__iterable_3_01T_00_01void__t_3_01decltype_07std_1_1begin_07std_1_1dec794949348c8e1e00603fd8633b6dd1f3.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__map_3_01std_1_1unordered__map_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1deque_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1list_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__sequence__container_3_01std_1_1vector_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1is__set_3_01std_1_1unordered__set_3_01Ts_8_8_8_01_4_01_4.html +1 -1
- package/SVF-doxygen/html/html/structSVF_1_1SVFUtil_1_1make__void.html +2 -2
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CallSite_01_4.html +7 -7
- package/SVF-doxygen/html/html/structstd_1_1hash_3_01SVF_1_1CxtStmt_01_4.html +1 -1
- package/SVF-doxygen/html/html/svf-ex_8cpp.html +3 -3
- package/SVF-doxygen/html/html/svf-ex_8cpp_source.html +4 -4
- package/SVF-doxygen/html/html/svf-llvm_2tools_2MTA_2MTAResultValidator_8h_source.html +9 -9
- package/SVF-doxygen/html/html/svf_2include_2MTA_2MTAResultValidator_8h_source.html +9 -9
- package/SVF-doxygen/html/html/wpa_8cpp.html +1 -1
- package/SVF-doxygen/html/html/wpa_8cpp_source.html +1 -1
- package/build.sh +1 -1
- package/package.json +1 -1
- package/svf/include/SVFIR/SVFModule.h +0 -1
- package/svf/include/SVFIR/SVFValue.h +7 -1
- package/svf/include/Util/ExtAPI.h +11 -457
- package/svf/include/Util/SVFUtil.h +7 -22
- package/svf/lib/SVFIR/SVFFileSystem.cpp +3 -1
- package/svf/lib/SVFIR/SVFValue.cpp +2 -2
- package/svf/lib/Util/ExtAPI.cpp +36 -595
- package/svf/lib/Util/Options.cpp +1 -1
- package/svf/lib/Util/SVFBugReport.cpp +0 -2
- package/svf-llvm/include/SVF-LLVM/LLVMModule.h +17 -0
- package/svf-llvm/include/SVF-LLVM/LLVMUtil.h +14 -1
- package/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +5 -14
- package/svf-llvm/lib/LLVMModule.cpp +157 -43
- package/svf-llvm/lib/LLVMUtil.cpp +121 -0
- package/svf-llvm/lib/SVFIRBuilder.cpp +7 -76
- package/svf-llvm/lib/SVFIRExtAPI.cpp +161 -536
- package/svf-llvm/lib/extapi.c +1348 -0
- package/svf/include/Util/ExtAPI.json +0 -5853
package/svf/lib/Util/ExtAPI.cpp
CHANGED
|
@@ -28,99 +28,10 @@
|
|
|
28
28
|
*/
|
|
29
29
|
|
|
30
30
|
#include "Util/ExtAPI.h"
|
|
31
|
-
#include "SVFIR/SVFVariables.h"
|
|
32
|
-
#include "Util/SVFUtil.h"
|
|
33
|
-
#include "Util/cJSON.h"
|
|
34
|
-
#include <stdlib.h>
|
|
35
|
-
#include <string.h>
|
|
36
|
-
#include <sys/stat.h>
|
|
37
31
|
|
|
38
32
|
using namespace SVF;
|
|
39
33
|
|
|
40
34
|
ExtAPI* ExtAPI::extOp = nullptr;
|
|
41
|
-
cJSON* ExtAPI::root = nullptr;
|
|
42
|
-
|
|
43
|
-
// Get environment variables $SVF_DIR and "npm root" through popen() method
|
|
44
|
-
static std::string GetStdoutFromCommand(const std::string& command)
|
|
45
|
-
{
|
|
46
|
-
char buffer[128];
|
|
47
|
-
std::string result = "";
|
|
48
|
-
// Open pipe to file
|
|
49
|
-
FILE* pipe = popen(command.c_str(), "r");
|
|
50
|
-
if (!pipe)
|
|
51
|
-
{
|
|
52
|
-
return "popen failed!";
|
|
53
|
-
}
|
|
54
|
-
// read till end of process:
|
|
55
|
-
while (!feof(pipe))
|
|
56
|
-
{
|
|
57
|
-
// use buffer to read and add to result
|
|
58
|
-
if (fgets(buffer, 128, pipe) != NULL)
|
|
59
|
-
result += buffer;
|
|
60
|
-
}
|
|
61
|
-
pclose(pipe);
|
|
62
|
-
// remove "\n"
|
|
63
|
-
result.erase(remove(result.begin(), result.end(), '\n'), result.end());
|
|
64
|
-
return result;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// Get ExtAPI.json file
|
|
68
|
-
static std::string getJsonFile(const std::string& path)
|
|
69
|
-
{
|
|
70
|
-
std::string jsonFilePath = GetStdoutFromCommand(path);
|
|
71
|
-
if (path.compare("npm root") == 0)
|
|
72
|
-
{
|
|
73
|
-
int os_flag = 1;
|
|
74
|
-
// SVF installed via npm needs to determine the type of operating
|
|
75
|
-
// system, otherwise the ExtAPI.json path may not be found.
|
|
76
|
-
#ifdef linux
|
|
77
|
-
// Linux os
|
|
78
|
-
os_flag = 0;
|
|
79
|
-
jsonFilePath.append("/svf-lib/SVF-linux");
|
|
80
|
-
#endif
|
|
81
|
-
// Mac os
|
|
82
|
-
if (os_flag == 1)
|
|
83
|
-
{
|
|
84
|
-
jsonFilePath.append("/svf-lib/SVF-osx");
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (jsonFilePath.back() != '/') jsonFilePath.push_back('/');
|
|
88
|
-
jsonFilePath.append(EXTAPI_JSON_PATH);
|
|
89
|
-
return jsonFilePath;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
static cJSON* parseJson(const std::string& path, off_t fileSize)
|
|
93
|
-
{
|
|
94
|
-
FILE* file = fopen(path.c_str(), "r");
|
|
95
|
-
if (!file)
|
|
96
|
-
{
|
|
97
|
-
return nullptr;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// allocate memory size matched with file size
|
|
101
|
-
char* jsonStr = (char*)calloc(fileSize + 1, sizeof(char));
|
|
102
|
-
|
|
103
|
-
// read json string from file
|
|
104
|
-
u32_t size = fread(jsonStr, sizeof(char), fileSize, file);
|
|
105
|
-
if (size == 0)
|
|
106
|
-
{
|
|
107
|
-
SVFUtil::errs() << SVFUtil::errMsg("\t Wrong ExtAPI.json path!! ")
|
|
108
|
-
<< "The current ExtAPI.json path is: " << path << "\n";
|
|
109
|
-
assert(false && "Read ExtAPI.json file fails!");
|
|
110
|
-
return nullptr;
|
|
111
|
-
}
|
|
112
|
-
fclose(file);
|
|
113
|
-
|
|
114
|
-
// convert json string to json pointer variable
|
|
115
|
-
cJSON* root = cJSON_Parse(jsonStr);
|
|
116
|
-
if (!root)
|
|
117
|
-
{
|
|
118
|
-
free(jsonStr);
|
|
119
|
-
return nullptr;
|
|
120
|
-
}
|
|
121
|
-
free(jsonStr);
|
|
122
|
-
return root;
|
|
123
|
-
}
|
|
124
35
|
|
|
125
36
|
ExtAPI* ExtAPI::getExtAPI(const std::string& path)
|
|
126
37
|
{
|
|
@@ -128,46 +39,6 @@ ExtAPI* ExtAPI::getExtAPI(const std::string& path)
|
|
|
128
39
|
{
|
|
129
40
|
extOp = new ExtAPI;
|
|
130
41
|
}
|
|
131
|
-
if (root == nullptr)
|
|
132
|
-
{
|
|
133
|
-
struct stat statbuf;
|
|
134
|
-
|
|
135
|
-
// Four ways to get ExtAPI.json path
|
|
136
|
-
// 1. Explicit path provided
|
|
137
|
-
// 2. default path (get ExtAPI.json path from Util/config.h)
|
|
138
|
-
// 3. from $SVF_DIR
|
|
139
|
-
// 4. from "npm root"(If SVF is installed via npm)
|
|
140
|
-
|
|
141
|
-
std::string jsonFilePath = path;
|
|
142
|
-
if (!jsonFilePath.empty() && !stat(jsonFilePath.c_str(), &statbuf))
|
|
143
|
-
{
|
|
144
|
-
root = parseJson(jsonFilePath, statbuf.st_size);
|
|
145
|
-
return extOp;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
jsonFilePath = std::string(PROJECT_PATH) + '/' + EXTAPI_JSON_PATH;
|
|
149
|
-
if (!stat(jsonFilePath.c_str(), &statbuf))
|
|
150
|
-
{
|
|
151
|
-
root = parseJson(jsonFilePath, statbuf.st_size);
|
|
152
|
-
return extOp;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
jsonFilePath = getJsonFile("echo $SVF_DIR");
|
|
156
|
-
if (!stat(jsonFilePath.c_str(), &statbuf))
|
|
157
|
-
{
|
|
158
|
-
root = parseJson(jsonFilePath, statbuf.st_size);
|
|
159
|
-
return extOp;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
jsonFilePath = getJsonFile("npm root");
|
|
163
|
-
if (!stat(jsonFilePath.c_str(), &statbuf))
|
|
164
|
-
{
|
|
165
|
-
root = parseJson(jsonFilePath, statbuf.st_size);
|
|
166
|
-
return extOp;
|
|
167
|
-
}
|
|
168
|
-
SVFUtil::errs() << "No JsonFile found at " << jsonFilePath << " for getExtAPI(); set $SVF_DIR first!\n";
|
|
169
|
-
abort();
|
|
170
|
-
}
|
|
171
42
|
return extOp;
|
|
172
43
|
}
|
|
173
44
|
|
|
@@ -178,517 +49,87 @@ void ExtAPI::destory()
|
|
|
178
49
|
delete extOp;
|
|
179
50
|
extOp = nullptr;
|
|
180
51
|
}
|
|
181
|
-
if (root != nullptr)
|
|
182
|
-
{
|
|
183
|
-
cJSON_Delete(root);
|
|
184
|
-
root = nullptr;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
void ExtAPI::add_entry(const char* funName, const char* returnType,
|
|
189
|
-
std::vector<const char*> argTypes, extType type,
|
|
190
|
-
bool overwrite_app_function)
|
|
191
|
-
{
|
|
192
|
-
assert(root && "Parse the json before adding additional entries");
|
|
193
|
-
assert(get_type(funName) == EFT_NULL && "Do not add entries that already exist");
|
|
194
|
-
auto entry = cJSON_CreateObject();
|
|
195
|
-
|
|
196
|
-
// add the signature fields
|
|
197
|
-
auto returnTypeString = cJSON_CreateString(returnType);
|
|
198
|
-
cJSON_AddItemToObject(entry, "return", returnTypeString);
|
|
199
|
-
|
|
200
|
-
std::stringstream ss;
|
|
201
|
-
ss << "(";
|
|
202
|
-
for (auto str : argTypes)
|
|
203
|
-
ss << str << ",";
|
|
204
|
-
std::string formattedArgs = ss.str();
|
|
205
|
-
if (formattedArgs.back() == ',')
|
|
206
|
-
formattedArgs.back() = ')';
|
|
207
|
-
else
|
|
208
|
-
formattedArgs.append(")");
|
|
209
|
-
auto argsString = cJSON_CreateString(formattedArgs.c_str());
|
|
210
|
-
cJSON_AddItemToObject(entry, "argument", argsString);
|
|
211
|
-
|
|
212
|
-
// add the type field
|
|
213
|
-
auto typeString = cJSON_CreateString(extType_toString(type).c_str());
|
|
214
|
-
cJSON_AddItemToObject(entry, JSON_OPT_FUNCTIONTYPE, typeString);
|
|
215
|
-
|
|
216
|
-
// add the 'overwrite_app_function' field
|
|
217
|
-
auto overwriteBool = cJSON_CreateNumber(overwrite_app_function ? 1 : 0);
|
|
218
|
-
cJSON_AddItemToObject(entry, JSON_OPT_OVERWRITE, overwriteBool);
|
|
219
|
-
|
|
220
|
-
// add object to root
|
|
221
|
-
cJSON_AddItemToObject(root, funName, entry);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
// Get the corresponding name in ext_t, e.g. "EXT_ADDR" in {"addr", EXT_ADDR},
|
|
225
|
-
std::string ExtAPI::get_opName(const std::string& s)
|
|
226
|
-
{
|
|
227
|
-
u32_t end = 0;
|
|
228
|
-
while (end < s.size() && !isdigit(s[end]))
|
|
229
|
-
end++;
|
|
230
|
-
return s.substr(0, end);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
const std::string& ExtAPI::extType_toString(extType type)
|
|
234
|
-
{
|
|
235
|
-
auto it =
|
|
236
|
-
std::find_if(type_pair.begin(), type_pair.end(),
|
|
237
|
-
[&](const auto& pair)
|
|
238
|
-
{
|
|
239
|
-
return pair.second == type;
|
|
240
|
-
});
|
|
241
|
-
assert(it != type_pair.end());
|
|
242
|
-
return it->first;
|
|
243
52
|
}
|
|
244
53
|
|
|
245
|
-
|
|
246
|
-
u32_t ExtAPI::getArgPos(const std::string& s)
|
|
54
|
+
std::string ExtAPI::getExtFuncAnnotation(const SVFFunction* fun, const std::string& funcAnnotation)
|
|
247
55
|
{
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
while (end < s.size() && isdigit(s[end]))
|
|
255
|
-
end++;
|
|
256
|
-
std::string digitStr = s.substr(start, end - start);
|
|
257
|
-
u32_t argNum = atoi(digitStr.c_str());
|
|
258
|
-
return argNum;
|
|
56
|
+
assert(fun && "Null SVFFunction* pointer");
|
|
57
|
+
const std::vector<std::string>& annotations = fun->getAnnotations();
|
|
58
|
+
for (const std::string& annotation : annotations)
|
|
59
|
+
if (annotation.find(funcAnnotation) != std::string::npos)
|
|
60
|
+
return annotation;
|
|
61
|
+
return "";
|
|
259
62
|
}
|
|
260
63
|
|
|
261
|
-
|
|
262
|
-
// return value = -1 is an inst node
|
|
263
|
-
// return value = -2 is a Dummy node
|
|
264
|
-
// return value = -3 is an object node
|
|
265
|
-
// return value = -4 is a nullptr node
|
|
266
|
-
// return value = -5 is an offset
|
|
267
|
-
// return value = -6 is an illegal operand format
|
|
268
|
-
s32_t ExtAPI::getNodeIDType(const std::string& s)
|
|
64
|
+
bool ExtAPI::hasExtFuncAnnotation(const SVFFunction* fun, const std::string& funcAnnotation)
|
|
269
65
|
{
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
start++;
|
|
277
|
-
std::string argStr = s.substr(0, start);
|
|
278
|
-
if (argStr == "Arg")
|
|
279
|
-
{
|
|
280
|
-
u32_t end = start + 1;
|
|
281
|
-
while (end < s.size() && isdigit(s[end]))
|
|
282
|
-
end++;
|
|
283
|
-
std::string digitStr = s.substr(start, end - start);
|
|
284
|
-
argPos = atoi(digitStr.c_str());
|
|
285
|
-
return argPos;
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
static const Map<std::string, s32_t> argStrToBinOp =
|
|
289
|
-
{
|
|
290
|
-
{"Ret", -1},
|
|
291
|
-
{"Dummy", -2},
|
|
292
|
-
{"Obj", -3},
|
|
293
|
-
{"NullPtr", -4},
|
|
294
|
-
{"Add", BinaryOPStmt::Add},
|
|
295
|
-
{"Sub", BinaryOPStmt::Sub},
|
|
296
|
-
{"Mul", BinaryOPStmt::Mul},
|
|
297
|
-
{"SDiv", BinaryOPStmt::SDiv},
|
|
298
|
-
{"SRem", BinaryOPStmt::SRem},
|
|
299
|
-
{"Xor", BinaryOPStmt::Xor},
|
|
300
|
-
{"And", BinaryOPStmt::And},
|
|
301
|
-
{"Or", BinaryOPStmt::Or},
|
|
302
|
-
{"AShr", BinaryOPStmt::AShr},
|
|
303
|
-
{"Shl", BinaryOPStmt::Shl},
|
|
304
|
-
{"ICMP_EQ", CmpStmt::ICMP_EQ},
|
|
305
|
-
{"ICMP_NE", CmpStmt::ICMP_NE},
|
|
306
|
-
{"ICMP_UGT", CmpStmt::ICMP_UGT},
|
|
307
|
-
{"ICMP_SGT", CmpStmt::ICMP_SGT},
|
|
308
|
-
{"ICMP_UGE", CmpStmt::ICMP_UGE},
|
|
309
|
-
{"ICMP_SGE", CmpStmt::ICMP_SGE},
|
|
310
|
-
{"ICMP_ULT", CmpStmt::ICMP_ULT},
|
|
311
|
-
{"ICMP_SLT", CmpStmt::ICMP_SLT},
|
|
312
|
-
{"ICMP_ULE", CmpStmt::ICMP_ULE},
|
|
313
|
-
{"ICMP_SLE", CmpStmt::ICMP_SLE},
|
|
314
|
-
{"FNeg", UnaryOPStmt::FNeg},
|
|
315
|
-
};
|
|
316
|
-
|
|
317
|
-
auto it = argStrToBinOp.find(argStr);
|
|
318
|
-
if (it != argStrToBinOp.cend())
|
|
319
|
-
return it->second;
|
|
320
|
-
// offset
|
|
321
|
-
u32_t i = 0;
|
|
322
|
-
while (i < s.size() && isdigit(s[i]))
|
|
323
|
-
i++;
|
|
324
|
-
if (i == s.size())
|
|
325
|
-
return -5;
|
|
326
|
-
// illegal operand format
|
|
327
|
-
return -6;
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
// Get external function name, e.g "memcpy"
|
|
331
|
-
std::string ExtAPI::get_name(const SVFFunction* F)
|
|
332
|
-
{
|
|
333
|
-
assert(F);
|
|
334
|
-
std::string funName = F->getName();
|
|
335
|
-
if (F->isIntrinsic())
|
|
336
|
-
{
|
|
337
|
-
unsigned start = funName.find('.');
|
|
338
|
-
unsigned end = funName.substr(start + 1).find('.');
|
|
339
|
-
funName = "llvm." + funName.substr(start + 1, end);
|
|
340
|
-
}
|
|
341
|
-
return funName;
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
// Get specifications of external functions in ExtAPI.json file
|
|
345
|
-
cJSON* ExtAPI::get_FunJson(const std::string& funName)
|
|
346
|
-
{
|
|
347
|
-
assert(root && "JSON not loaded");
|
|
348
|
-
return cJSON_GetObjectItemCaseSensitive(root, funName.c_str());
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
ExtAPI::Operand ExtAPI::getBasicOperation(cJSON* obj)
|
|
352
|
-
{
|
|
353
|
-
Operand basicOp;
|
|
354
|
-
if (strstr(obj->string, "AddrStmt") != NULL)
|
|
355
|
-
basicOp.setType(ExtAPI::OperationType::Addr);
|
|
356
|
-
else if (strstr(obj->string, "CopyStmt") != NULL)
|
|
357
|
-
basicOp.setType(ExtAPI::OperationType::Copy);
|
|
358
|
-
else if (strstr(obj->string, "LoadStmt") != NULL)
|
|
359
|
-
basicOp.setType(ExtAPI::OperationType::Load);
|
|
360
|
-
else if (strstr(obj->string, "StoreStmt") != NULL)
|
|
361
|
-
basicOp.setType(ExtAPI::OperationType::Store);
|
|
362
|
-
else if (strstr(obj->string, "GepStmt") != NULL)
|
|
363
|
-
basicOp.setType(ExtAPI::OperationType::Gep);
|
|
364
|
-
else if (strstr(obj->string, "ReturnStmt") != NULL)
|
|
365
|
-
basicOp.setType(ExtAPI::OperationType::Return);
|
|
366
|
-
else if (strstr(obj->string, "Rb_tree_ops") != NULL)
|
|
367
|
-
basicOp.setType(ExtAPI::OperationType::Rb_tree_ops);
|
|
368
|
-
else if (strstr(obj->string, "memcpy_like") != NULL)
|
|
369
|
-
basicOp.setType(ExtAPI::OperationType::Memcpy_like);
|
|
370
|
-
else if (strstr(obj->string, "memset_like") != NULL)
|
|
371
|
-
basicOp.setType(ExtAPI::OperationType::Memset_like);
|
|
372
|
-
else
|
|
373
|
-
assert(false && "Unknown operation type");
|
|
374
|
-
|
|
375
|
-
cJSON* value = obj->child;
|
|
376
|
-
while (value)
|
|
377
|
-
{
|
|
378
|
-
if (strcmp(value->string, "src") == 0)
|
|
379
|
-
basicOp.setSrcValue(value->valuestring);
|
|
380
|
-
else if (strcmp(value->string, "dst") == 0)
|
|
381
|
-
basicOp.setDstValue(value->valuestring);
|
|
382
|
-
else if (strcmp(value->string, "offset") == 0 || strcmp(value->string, "size") == 0)
|
|
383
|
-
basicOp.setOffsetOrSizeStr(value->valuestring);
|
|
384
|
-
else
|
|
385
|
-
assert(false && "Unknown operation value");
|
|
386
|
-
value = value->next;
|
|
387
|
-
}
|
|
388
|
-
return basicOp;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
// Get all operations of an extern function
|
|
392
|
-
ExtAPI::ExtFunctionOps ExtAPI::getExtFunctionOps(const SVFFunction* extFunction)
|
|
393
|
-
{
|
|
394
|
-
ExtAPI::ExtFunctionOps extFunctionOps;
|
|
395
|
-
extFunctionOps.setExtFunName(extFunction->getName());
|
|
396
|
-
if (!is_sameSignature(extFunction))
|
|
397
|
-
return extFunctionOps;
|
|
398
|
-
|
|
399
|
-
auto it = extFunToOps.find(extFunction->getName());
|
|
400
|
-
if (it != extFunToOps.end())
|
|
401
|
-
return it->second;
|
|
402
|
-
|
|
403
|
-
extFunctionOps.setExtFunName(extFunction->getName());
|
|
404
|
-
cJSON* item = get_FunJson(extFunction->getName());
|
|
405
|
-
if (item != nullptr)
|
|
406
|
-
{
|
|
407
|
-
cJSON* obj = item->child;
|
|
408
|
-
// Get the first operation of the function
|
|
409
|
-
obj = obj->next->next->next->next;
|
|
410
|
-
while (obj)
|
|
411
|
-
{
|
|
412
|
-
ExtOperation operation;
|
|
413
|
-
if (obj->type == cJSON_Object || obj->type == cJSON_Array)
|
|
414
|
-
{
|
|
415
|
-
if (strstr(obj->string, "CallStmt") != NULL)
|
|
416
|
-
{
|
|
417
|
-
extFunctionOps.setCallStmtNum(extFunctionOps.getCallStmtNum() + 1);
|
|
418
|
-
operation.setCallOp(true);
|
|
419
|
-
cJSON* value = obj->child;
|
|
420
|
-
while (value)
|
|
421
|
-
{
|
|
422
|
-
if (strcmp(value->string, "callee_name") == 0)
|
|
423
|
-
operation.setCalleeName(value->valuestring);
|
|
424
|
-
else if (strcmp(value->string, "callee_return") == 0)
|
|
425
|
-
operation.setCalleeReturn(value->valuestring);
|
|
426
|
-
else if (strcmp(value->string, "callee_arguments") == 0)
|
|
427
|
-
operation.setCalleeArguments(value->valuestring);
|
|
428
|
-
else
|
|
429
|
-
operation.getCalleeOperands().push_back(getBasicOperation(value));
|
|
430
|
-
value = value->next;
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
else if (strstr(obj->string, "CondStmt") != NULL)
|
|
434
|
-
{
|
|
435
|
-
operation.setConOp(true);
|
|
436
|
-
obj = obj->child;
|
|
437
|
-
assert(strcmp(obj->string, "Condition") == 0 && "Unknown operation type");
|
|
438
|
-
operation.setConOp(obj->valuestring);
|
|
439
|
-
obj = obj->next;
|
|
440
|
-
assert(strcmp(obj->string, "TrueBranch") == 0 && "Unknown operation type");
|
|
441
|
-
cJSON* value = obj->child;
|
|
442
|
-
while (value)
|
|
443
|
-
{
|
|
444
|
-
operation.getTrueBranchOperands().push_back(getBasicOperation(value));
|
|
445
|
-
value = value->next;
|
|
446
|
-
}
|
|
447
|
-
obj = obj->next;
|
|
448
|
-
assert(strcmp(obj->string, "FalseBranch") == 0&& "Unknown operation type");
|
|
449
|
-
value = obj->child;
|
|
450
|
-
while (value)
|
|
451
|
-
{
|
|
452
|
-
operation.getFalseBranchOperands().push_back(getBasicOperation(value));
|
|
453
|
-
value = value->next;
|
|
454
|
-
}
|
|
455
|
-
}
|
|
456
|
-
else
|
|
457
|
-
operation.setBasicOp(getBasicOperation(obj));
|
|
458
|
-
}
|
|
459
|
-
obj = obj->next;
|
|
460
|
-
extFunctionOps.getOperations().push_back(operation);
|
|
461
|
-
}
|
|
462
|
-
}
|
|
463
|
-
extFunToOps[extFunction->getName()] = extFunctionOps;
|
|
464
|
-
return extFunctionOps;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
// Get arguments of the operation, e.g. ["A1R", "A0", "A2"]
|
|
468
|
-
std::vector<std::string> ExtAPI::get_opArgs(const cJSON* value)
|
|
469
|
-
{
|
|
470
|
-
std::vector<std::string> args;
|
|
471
|
-
while (value)
|
|
472
|
-
{
|
|
473
|
-
if (value->type == cJSON_String)
|
|
474
|
-
args.push_back(value->valuestring);
|
|
475
|
-
value = value->next;
|
|
476
|
-
}
|
|
477
|
-
return args;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
ExtAPI::extType ExtAPI::get_type(const std::string& funName)
|
|
481
|
-
{
|
|
482
|
-
cJSON* item = get_FunJson(funName);
|
|
483
|
-
std::string type = "";
|
|
484
|
-
if (item != nullptr)
|
|
485
|
-
{
|
|
486
|
-
// Get the first operation of the function
|
|
487
|
-
cJSON* obj = item->child->next->next;
|
|
488
|
-
if (strcmp(obj->string, JSON_OPT_FUNCTIONTYPE) == 0)
|
|
489
|
-
type = obj->valuestring;
|
|
490
|
-
else
|
|
491
|
-
assert(false && "The function operation format is illegal!");
|
|
492
|
-
}
|
|
493
|
-
std::map<std::string, extType>::const_iterator it = type_pair.find(type);
|
|
494
|
-
if (it == type_pair.end())
|
|
495
|
-
return EFT_NULL;
|
|
496
|
-
else
|
|
497
|
-
return it->second;
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
// Get property of the operation, e.g. "EFT_A1R_A0R"
|
|
501
|
-
ExtAPI::extType ExtAPI::get_type(const SVF::SVFFunction* F)
|
|
502
|
-
{
|
|
503
|
-
return get_type(get_name(F));
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
// Get priority of he function, return value
|
|
507
|
-
// 0: Apply user-defined functions
|
|
508
|
-
// 1: Apply function specification in ExtAPI.json
|
|
509
|
-
u32_t ExtAPI::isOverwrittenAppFunction(const SVF::SVFFunction* callee)
|
|
510
|
-
{
|
|
511
|
-
std::string funName = get_name(callee);
|
|
512
|
-
return isOverwrittenAppFunction(funName);
|
|
513
|
-
}
|
|
514
|
-
|
|
515
|
-
u32_t ExtAPI::isOverwrittenAppFunction(const std::string& funName)
|
|
516
|
-
{
|
|
517
|
-
cJSON* item = get_FunJson(funName);
|
|
518
|
-
if (item != nullptr)
|
|
519
|
-
{
|
|
520
|
-
cJSON* obj = item->child;
|
|
521
|
-
obj = obj->next->next->next;
|
|
522
|
-
if (strcmp(obj->string, JSON_OPT_OVERWRITE) == 0)
|
|
523
|
-
return obj->valueint;
|
|
524
|
-
else
|
|
525
|
-
assert(false && "The function operation format is illegal!");
|
|
526
|
-
}
|
|
527
|
-
return 0;
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
void ExtAPI::setOverWrittenAppFunction(const std::string& funcName, u32_t overwrite_app_function)
|
|
531
|
-
{
|
|
532
|
-
auto item = get_FunJson(funcName);
|
|
533
|
-
assert(item && "Do not set fields for ExtAPI funcs that don't exist!");
|
|
534
|
-
auto overwrite_obj = item->child->next->next->next;
|
|
535
|
-
assert(overwrite_obj);
|
|
536
|
-
assert(strcmp(overwrite_obj->string, JSON_OPT_OVERWRITE) == 0);
|
|
537
|
-
cJSON_SetIntValue(overwrite_obj, overwrite_app_function);
|
|
66
|
+
assert(fun && "Null SVFFunction* pointer");
|
|
67
|
+
const std::vector<std::string>& annotations = fun->getAnnotations();
|
|
68
|
+
for (const std::string& annotation : annotations)
|
|
69
|
+
if (annotation.find(funcAnnotation) != std::string::npos)
|
|
70
|
+
return true;
|
|
71
|
+
return false;
|
|
538
72
|
}
|
|
539
73
|
|
|
540
74
|
// Does (F) have a static var X (unavailable to us) that its return points to?
|
|
541
75
|
bool ExtAPI::has_static(const SVFFunction* F)
|
|
542
76
|
{
|
|
543
|
-
|
|
544
|
-
return t == EFT_STAT || t == EFT_STAT2;
|
|
77
|
+
return F && hasExtFuncAnnotation(F, "STATIC");
|
|
545
78
|
}
|
|
546
79
|
|
|
547
|
-
|
|
548
|
-
bool ExtAPI::has_static2(const SVFFunction* F)
|
|
80
|
+
bool ExtAPI::is_memcpy(const SVFFunction *F)
|
|
549
81
|
{
|
|
550
|
-
|
|
551
|
-
return t == EFT_STAT2;
|
|
82
|
+
return F && hasExtFuncAnnotation(F, "MEMCPY");
|
|
552
83
|
}
|
|
553
84
|
|
|
554
|
-
bool ExtAPI::
|
|
85
|
+
bool ExtAPI::is_memset(const SVFFunction *F)
|
|
555
86
|
{
|
|
556
|
-
|
|
557
|
-
return t == EFT_L_A0__A0R_A1 || t == EFT_L_A0__A0R_A1R || t == EFT_A1R_A0R || t == EFT_A3R_A1R_NS
|
|
558
|
-
|| t == EFT_STD_RB_TREE_INSERT_AND_REBALANCE || t == EFT_L_A0__A1_A0;
|
|
87
|
+
return F && hasExtFuncAnnotation(F, "MEMSET");
|
|
559
88
|
}
|
|
560
89
|
|
|
561
90
|
bool ExtAPI::is_alloc(const SVFFunction* F)
|
|
562
91
|
{
|
|
563
|
-
|
|
564
|
-
return t == EFT_ALLOC || t == EFT_NOSTRUCT_ALLOC;
|
|
92
|
+
return F && hasExtFuncAnnotation(F, "ALLOC_RET");
|
|
565
93
|
}
|
|
566
94
|
|
|
567
95
|
// Does (F) allocate a new object and assign it to one of its arguments?
|
|
568
96
|
bool ExtAPI::is_arg_alloc(const SVFFunction* F)
|
|
569
97
|
{
|
|
570
|
-
|
|
571
|
-
return t == EFT_A0R_NEW || t == EFT_A1R_NEW || t == EFT_A2R_NEW ||
|
|
572
|
-
t == EFT_A4R_NEW || t == EFT_A11R_NEW;
|
|
98
|
+
return F && hasExtFuncAnnotation(F, "ALLOC_ARG");
|
|
573
99
|
}
|
|
574
100
|
|
|
575
101
|
// Get the position of argument which holds the new object
|
|
576
102
|
s32_t ExtAPI::get_alloc_arg_pos(const SVFFunction* F)
|
|
577
103
|
{
|
|
578
|
-
|
|
579
|
-
|
|
104
|
+
std::string s = "ALLOC_ARG";
|
|
105
|
+
std::string allocArg = getExtFuncAnnotation(F, s);
|
|
106
|
+
assert(!allocArg.empty() && "Not an alloc call via argument or incorrect extern function annotation!");
|
|
107
|
+
|
|
108
|
+
std::string number;
|
|
109
|
+
for (char c : allocArg)
|
|
580
110
|
{
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
case EFT_A1R_NEW:
|
|
584
|
-
return 1;
|
|
585
|
-
case EFT_A2R_NEW:
|
|
586
|
-
return 2;
|
|
587
|
-
case EFT_A4R_NEW:
|
|
588
|
-
return 4;
|
|
589
|
-
case EFT_A11R_NEW:
|
|
590
|
-
return 11;
|
|
591
|
-
default:
|
|
592
|
-
assert(false && "Not an alloc call via argument.");
|
|
593
|
-
return -1;
|
|
111
|
+
if (isdigit(c))
|
|
112
|
+
number.push_back(c);
|
|
594
113
|
}
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
// Does (F) allocate only non-struct objects?
|
|
598
|
-
bool ExtAPI::no_struct_alloc(const SVFFunction* F)
|
|
599
|
-
{
|
|
600
|
-
ExtAPI::extType t = get_type(F);
|
|
601
|
-
return t == EFT_NOSTRUCT_ALLOC;
|
|
602
|
-
}
|
|
603
|
-
|
|
604
|
-
// Does (F) not free/release any memory?
|
|
605
|
-
bool ExtAPI::is_dealloc(const SVFFunction* F)
|
|
606
|
-
{
|
|
607
|
-
ExtAPI::extType t = get_type(F);
|
|
608
|
-
return t == EFT_FREE;
|
|
609
|
-
}
|
|
610
|
-
|
|
611
|
-
// Does (F) not do anything with the known pointers?
|
|
612
|
-
bool ExtAPI::is_noop(const SVFFunction* F)
|
|
613
|
-
{
|
|
614
|
-
ExtAPI::extType t = get_type(F);
|
|
615
|
-
return t == EFT_NOOP || t == EFT_FREE;
|
|
114
|
+
assert(!number.empty() && "Incorrect naming convention for svf external functions(ALLOC_ARG + number)?");
|
|
115
|
+
return std::stoi(number);
|
|
616
116
|
}
|
|
617
117
|
|
|
618
118
|
// Does (F) reallocate a new object?
|
|
619
119
|
bool ExtAPI::is_realloc(const SVFFunction* F)
|
|
620
120
|
{
|
|
621
|
-
|
|
622
|
-
return t == EFT_REALLOC;
|
|
121
|
+
return F && hasExtFuncAnnotation(F, "REALLOC_RET");
|
|
623
122
|
}
|
|
624
123
|
|
|
625
|
-
// Does (F) have the same return type(pointer or nonpointer) and same number of
|
|
626
|
-
// arguments
|
|
627
|
-
bool ExtAPI::is_sameSignature(const SVFFunction* F)
|
|
628
|
-
{
|
|
629
|
-
cJSON* item = get_FunJson(F->getName());
|
|
630
|
-
// If return type is pointer
|
|
631
|
-
bool isPointer = false;
|
|
632
|
-
// The number of arguments
|
|
633
|
-
u32_t argNum = 0;
|
|
634
|
-
if (item != nullptr)
|
|
635
|
-
{
|
|
636
|
-
// Get the "return" attribute
|
|
637
|
-
cJSON* obj = item->child;
|
|
638
|
-
if (strlen(obj->valuestring) == 0) // e.g. "return": ""
|
|
639
|
-
assert(false && "'return' should not be empty!");
|
|
640
|
-
// If "return": "..." includes "*", the return type of extern function is a pointer
|
|
641
|
-
if (strstr(obj->valuestring, "*") != NULL)
|
|
642
|
-
isPointer = true;
|
|
643
|
-
// Get the "arguments" attribute
|
|
644
|
-
obj = obj->next;
|
|
645
|
-
if (strlen(obj->valuestring) == 0) // e.g. "arguments": "",
|
|
646
|
-
assert(false && "'arguments' should not be empty!");
|
|
647
|
-
// If "arguments": "()", the number of arguments is 0, otherwise, number >= 1;
|
|
648
|
-
if (strcmp(obj->valuestring, "()") != 0)
|
|
649
|
-
{
|
|
650
|
-
argNum++;
|
|
651
|
-
for (u32_t i = 0; i < strlen(obj->valuestring); i++)
|
|
652
|
-
if (obj->valuestring[i] == ',') // Calculate the number of arguments based on the number of ","
|
|
653
|
-
argNum++;
|
|
654
|
-
}
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
if ( !F->isVarArg() && F->arg_size() != argNum) // The number of arguments is different
|
|
658
|
-
return false;
|
|
659
|
-
// Is the return type the same?
|
|
660
|
-
return F->getReturnType()->isPointerTy() == isPointer;
|
|
661
|
-
}
|
|
662
124
|
|
|
663
125
|
// Should (F) be considered "external" (either not defined in the program
|
|
664
126
|
// or a user-defined version of a known alloc or no-op)?
|
|
665
127
|
bool ExtAPI::is_ext(const SVFFunction* F)
|
|
666
128
|
{
|
|
667
129
|
assert(F && "Null SVFFunction* pointer");
|
|
668
|
-
bool res;
|
|
669
130
|
if (F->isDeclaration() || F->isIntrinsic())
|
|
670
|
-
|
|
671
|
-
res = 1;
|
|
672
|
-
}
|
|
131
|
+
return true;
|
|
673
132
|
else
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
{
|
|
678
|
-
u32_t overwrittenAppFunction = isOverwrittenAppFunction(F);
|
|
679
|
-
if (!is_sameSignature(F))
|
|
680
|
-
res = 0;
|
|
681
|
-
// overwrittenAppFunction = 1: Execute function specification in
|
|
682
|
-
// ExtAPI.json F is considered as external function
|
|
683
|
-
else if (overwrittenAppFunction == 1)
|
|
684
|
-
res = 1;
|
|
685
|
-
// overwrittenAppFunction = 0: Execute user-defined functions
|
|
686
|
-
// F is not considered as external function
|
|
687
|
-
else
|
|
688
|
-
res = 0;
|
|
689
|
-
}
|
|
690
|
-
else
|
|
691
|
-
res = 0;
|
|
692
|
-
}
|
|
693
|
-
return res;
|
|
694
|
-
}
|
|
133
|
+
return hasExtFuncAnnotation(F, "SVF");
|
|
134
|
+
return false;
|
|
135
|
+
}
|