svf-lib 1.0.2237 → 1.0.2239

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.
Files changed (165) hide show
  1. package/SVF-linux-aarch64/Release-build/bin/ae +0 -0
  2. package/SVF-linux-aarch64/Release-build/bin/cfl +0 -0
  3. package/SVF-linux-aarch64/Release-build/bin/dvf +0 -0
  4. package/SVF-linux-aarch64/Release-build/bin/llvm2svf +0 -0
  5. package/SVF-linux-aarch64/Release-build/bin/mta +0 -0
  6. package/SVF-linux-aarch64/Release-build/bin/saber +0 -0
  7. package/SVF-linux-aarch64/Release-build/bin/svf-ex +0 -0
  8. package/SVF-linux-aarch64/Release-build/bin/wpa +0 -0
  9. package/SVF-linux-aarch64/Release-build/include/AE/Core/AbstractState.h +406 -0
  10. package/SVF-linux-aarch64/Release-build/include/AE/Core/AbstractValue.h +157 -0
  11. package/SVF-linux-aarch64/Release-build/include/AE/Core/AddressValue.h +232 -0
  12. package/SVF-linux-aarch64/Release-build/include/AE/Core/ICFGWTO.h +82 -0
  13. package/SVF-linux-aarch64/Release-build/include/AE/Core/IntervalValue.h +1055 -0
  14. package/SVF-linux-aarch64/Release-build/include/AE/Core/NumericValue.h +1292 -0
  15. package/SVF-linux-aarch64/Release-build/include/AE/Core/RelExeState.h +226 -0
  16. package/SVF-linux-aarch64/Release-build/include/AE/Core/RelationSolver.h +91 -0
  17. package/SVF-linux-aarch64/Release-build/include/AE/Svfexe/AEDetector.h +323 -0
  18. package/SVF-linux-aarch64/Release-build/include/AE/Svfexe/AbsExtAPI.h +140 -0
  19. package/SVF-linux-aarch64/Release-build/include/AE/Svfexe/AbstractInterpretation.h +350 -0
  20. package/SVF-linux-aarch64/Release-build/include/CFL/CFGNormalizer.h +84 -0
  21. package/SVF-linux-aarch64/Release-build/include/CFL/CFGrammar.h +468 -0
  22. package/SVF-linux-aarch64/Release-build/include/CFL/CFLAlias.h +168 -0
  23. package/SVF-linux-aarch64/Release-build/include/CFL/CFLBase.h +118 -0
  24. package/SVF-linux-aarch64/Release-build/include/CFL/CFLGramGraphChecker.h +74 -0
  25. package/SVF-linux-aarch64/Release-build/include/CFL/CFLGraphBuilder.h +166 -0
  26. package/SVF-linux-aarch64/Release-build/include/CFL/CFLSVFGBuilder.h +58 -0
  27. package/SVF-linux-aarch64/Release-build/include/CFL/CFLSolver.h +374 -0
  28. package/SVF-linux-aarch64/Release-build/include/CFL/CFLStat.h +67 -0
  29. package/SVF-linux-aarch64/Release-build/include/CFL/CFLVF.h +68 -0
  30. package/SVF-linux-aarch64/Release-build/include/CFL/GrammarBuilder.h +100 -0
  31. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PAGGrammar.txt +15 -0
  32. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/PEGGrammar.txt +11 -0
  33. package/SVF-linux-aarch64/Release-build/include/CFL/grammar/VFGGrammar.txt +7 -0
  34. package/SVF-linux-aarch64/Release-build/include/DDA/ContextDDA.h +230 -0
  35. package/SVF-linux-aarch64/Release-build/include/DDA/DDAClient.h +163 -0
  36. package/SVF-linux-aarch64/Release-build/include/DDA/DDAPass.h +102 -0
  37. package/SVF-linux-aarch64/Release-build/include/DDA/DDAStat.h +121 -0
  38. package/SVF-linux-aarch64/Release-build/include/DDA/DDAVFSolver.h +794 -0
  39. package/SVF-linux-aarch64/Release-build/include/DDA/FlowDDA.h +178 -0
  40. package/SVF-linux-aarch64/Release-build/include/FastCluster/LICENSE.TXT +13 -0
  41. package/SVF-linux-aarch64/Release-build/include/FastCluster/fastcluster.h +80 -0
  42. package/SVF-linux-aarch64/Release-build/include/Graphs/BasicBlockG.h +318 -0
  43. package/SVF-linux-aarch64/Release-build/include/Graphs/CDG.h +482 -0
  44. package/SVF-linux-aarch64/Release-build/include/Graphs/CFLGraph.h +232 -0
  45. package/SVF-linux-aarch64/Release-build/include/Graphs/CHG.h +369 -0
  46. package/SVF-linux-aarch64/Release-build/include/Graphs/CallGraph.h +498 -0
  47. package/SVF-linux-aarch64/Release-build/include/Graphs/ConsG.h +402 -0
  48. package/SVF-linux-aarch64/Release-build/include/Graphs/ConsGEdge.h +355 -0
  49. package/SVF-linux-aarch64/Release-build/include/Graphs/ConsGNode.h +418 -0
  50. package/SVF-linux-aarch64/Release-build/include/Graphs/DOTGraphTraits.h +188 -0
  51. package/SVF-linux-aarch64/Release-build/include/Graphs/GenericGraph.h +628 -0
  52. package/SVF-linux-aarch64/Release-build/include/Graphs/GraphPrinter.h +111 -0
  53. package/SVF-linux-aarch64/Release-build/include/Graphs/GraphTraits.h +150 -0
  54. package/SVF-linux-aarch64/Release-build/include/Graphs/GraphWriter.h +380 -0
  55. package/SVF-linux-aarch64/Release-build/include/Graphs/ICFG.h +331 -0
  56. package/SVF-linux-aarch64/Release-build/include/Graphs/ICFGEdge.h +281 -0
  57. package/SVF-linux-aarch64/Release-build/include/Graphs/ICFGNode.h +669 -0
  58. package/SVF-linux-aarch64/Release-build/include/Graphs/ICFGStat.h +164 -0
  59. package/SVF-linux-aarch64/Release-build/include/Graphs/IRGraph.h +398 -0
  60. package/SVF-linux-aarch64/Release-build/include/Graphs/SCC.h +375 -0
  61. package/SVF-linux-aarch64/Release-build/include/Graphs/SVFG.h +491 -0
  62. package/SVF-linux-aarch64/Release-build/include/Graphs/SVFGEdge.h +237 -0
  63. package/SVF-linux-aarch64/Release-build/include/Graphs/SVFGNode.h +501 -0
  64. package/SVF-linux-aarch64/Release-build/include/Graphs/SVFGOPT.h +363 -0
  65. package/SVF-linux-aarch64/Release-build/include/Graphs/SVFGStat.h +273 -0
  66. package/SVF-linux-aarch64/Release-build/include/Graphs/ThreadCallGraph.h +400 -0
  67. package/SVF-linux-aarch64/Release-build/include/Graphs/VFG.h +664 -0
  68. package/SVF-linux-aarch64/Release-build/include/Graphs/VFGEdge.h +295 -0
  69. package/SVF-linux-aarch64/Release-build/include/Graphs/VFGNode.h +1266 -0
  70. package/SVF-linux-aarch64/Release-build/include/Graphs/WTO.h +872 -0
  71. package/SVF-linux-aarch64/Release-build/include/MSSA/MSSAMuChi.h +722 -0
  72. package/SVF-linux-aarch64/Release-build/include/MSSA/MemPartition.h +169 -0
  73. package/SVF-linux-aarch64/Release-build/include/MSSA/MemRegion.h +489 -0
  74. package/SVF-linux-aarch64/Release-build/include/MSSA/MemSSA.h +452 -0
  75. package/SVF-linux-aarch64/Release-build/include/MSSA/SVFGBuilder.h +98 -0
  76. package/SVF-linux-aarch64/Release-build/include/MTA/LockAnalysis.h +533 -0
  77. package/SVF-linux-aarch64/Release-build/include/MTA/MHP.h +546 -0
  78. package/SVF-linux-aarch64/Release-build/include/MTA/MTA.h +98 -0
  79. package/SVF-linux-aarch64/Release-build/include/MTA/MTAStat.h +73 -0
  80. package/SVF-linux-aarch64/Release-build/include/MTA/TCT.h +620 -0
  81. package/SVF-linux-aarch64/Release-build/include/MemoryModel/AbstractPointsToDS.h +316 -0
  82. package/SVF-linux-aarch64/Release-build/include/MemoryModel/AccessPath.h +194 -0
  83. package/SVF-linux-aarch64/Release-build/include/MemoryModel/ConditionalPT.h +878 -0
  84. package/SVF-linux-aarch64/Release-build/include/MemoryModel/MutablePointsToDS.h +1025 -0
  85. package/SVF-linux-aarch64/Release-build/include/MemoryModel/PersistentPointsToCache.h +463 -0
  86. package/SVF-linux-aarch64/Release-build/include/MemoryModel/PersistentPointsToDS.h +955 -0
  87. package/SVF-linux-aarch64/Release-build/include/MemoryModel/PointerAnalysis.h +429 -0
  88. package/SVF-linux-aarch64/Release-build/include/MemoryModel/PointerAnalysisImpl.h +602 -0
  89. package/SVF-linux-aarch64/Release-build/include/MemoryModel/PointsTo.h +255 -0
  90. package/SVF-linux-aarch64/Release-build/include/MemoryModel/SVFLoop.h +167 -0
  91. package/SVF-linux-aarch64/Release-build/include/SABER/DoubleFreeChecker.h +76 -0
  92. package/SVF-linux-aarch64/Release-build/include/SABER/FileChecker.h +80 -0
  93. package/SVF-linux-aarch64/Release-build/include/SABER/LeakChecker.h +122 -0
  94. package/SVF-linux-aarch64/Release-build/include/SABER/ProgSlice.h +327 -0
  95. package/SVF-linux-aarch64/Release-build/include/SABER/SaberCheckerAPI.h +151 -0
  96. package/SVF-linux-aarch64/Release-build/include/SABER/SaberCondAllocator.h +317 -0
  97. package/SVF-linux-aarch64/Release-build/include/SABER/SaberSVFGBuilder.h +114 -0
  98. package/SVF-linux-aarch64/Release-build/include/SABER/SrcSnkDDA.h +327 -0
  99. package/SVF-linux-aarch64/Release-build/include/SABER/SrcSnkSolver.h +186 -0
  100. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/BasicTypes.h +280 -0
  101. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/BreakConstantExpr.h +94 -0
  102. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/CHGBuilder.h +78 -0
  103. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/CppUtil.h +184 -0
  104. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/DCHG.h +477 -0
  105. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/GEPTypeBridgeIterator.h +183 -0
  106. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/ICFGBuilder.h +160 -0
  107. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/LLVMLoopAnalysis.h +60 -0
  108. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/LLVMModule.h +594 -0
  109. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/LLVMUtil.h +438 -0
  110. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/ObjTypeInference.h +130 -0
  111. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/SVFIRBuilder.h +520 -0
  112. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/SVFLLVMValue.h +387 -0
  113. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/SVFModule.h +186 -0
  114. package/SVF-linux-aarch64/Release-build/include/SVF-LLVM/SymbolTableBuilder.h +132 -0
  115. package/SVF-linux-aarch64/Release-build/include/SVFIR/ObjTypeInfo.h +224 -0
  116. package/SVF-linux-aarch64/Release-build/include/SVFIR/PAGBuilderFromFile.h +80 -0
  117. package/SVF-linux-aarch64/Release-build/include/SVFIR/SVFIR.h +856 -0
  118. package/SVF-linux-aarch64/Release-build/include/SVFIR/SVFStatements.h +1328 -0
  119. package/SVF-linux-aarch64/Release-build/include/SVFIR/SVFType.h +578 -0
  120. package/SVF-linux-aarch64/Release-build/include/SVFIR/SVFValue.h +338 -0
  121. package/SVF-linux-aarch64/Release-build/include/SVFIR/SVFVariables.h +2204 -0
  122. package/SVF-linux-aarch64/Release-build/include/Util/Annotator.h +180 -0
  123. package/SVF-linux-aarch64/Release-build/include/Util/BitVector.h +55 -0
  124. package/SVF-linux-aarch64/Release-build/include/Util/CDGBuilder.h +107 -0
  125. package/SVF-linux-aarch64/Release-build/include/Util/CallGraphBuilder.h +62 -0
  126. package/SVF-linux-aarch64/Release-build/include/Util/Casting.h +426 -0
  127. package/SVF-linux-aarch64/Release-build/include/Util/CommandLine.h +530 -0
  128. package/SVF-linux-aarch64/Release-build/include/Util/CoreBitVector.h +214 -0
  129. package/SVF-linux-aarch64/Release-build/include/Util/CxtStmt.h +502 -0
  130. package/SVF-linux-aarch64/Release-build/include/Util/DPItem.h +618 -0
  131. package/SVF-linux-aarch64/Release-build/include/Util/ExtAPI.h +117 -0
  132. package/SVF-linux-aarch64/Release-build/include/Util/GeneralType.h +127 -0
  133. package/SVF-linux-aarch64/Release-build/include/Util/GraphReachSolver.h +186 -0
  134. package/SVF-linux-aarch64/Release-build/include/Util/NodeIDAllocator.h +203 -0
  135. package/SVF-linux-aarch64/Release-build/include/Util/Options.h +272 -0
  136. package/SVF-linux-aarch64/Release-build/include/Util/PTAStat.h +83 -0
  137. package/SVF-linux-aarch64/Release-build/include/Util/SVFBugReport.h +427 -0
  138. package/SVF-linux-aarch64/Release-build/include/Util/SVFLoopAndDomInfo.h +169 -0
  139. package/SVF-linux-aarch64/Release-build/include/Util/SVFStat.h +103 -0
  140. package/SVF-linux-aarch64/Release-build/include/Util/SVFUtil.h +478 -0
  141. package/SVF-linux-aarch64/Release-build/include/Util/SparseBitVector.h +1252 -0
  142. package/SVF-linux-aarch64/Release-build/include/Util/ThreadAPI.h +189 -0
  143. package/SVF-linux-aarch64/Release-build/include/Util/WorkList.h +317 -0
  144. package/SVF-linux-aarch64/Release-build/include/Util/Z3Expr.h +325 -0
  145. package/SVF-linux-aarch64/Release-build/include/Util/cJSON.h +300 -0
  146. package/SVF-linux-aarch64/Release-build/include/Util/config.h +26 -0
  147. package/SVF-linux-aarch64/Release-build/include/Util/iterator.h +407 -0
  148. package/SVF-linux-aarch64/Release-build/include/Util/iterator_range.h +76 -0
  149. package/SVF-linux-aarch64/Release-build/include/WPA/Andersen.h +435 -0
  150. package/SVF-linux-aarch64/Release-build/include/WPA/AndersenPWC.h +160 -0
  151. package/SVF-linux-aarch64/Release-build/include/WPA/CSC.h +95 -0
  152. package/SVF-linux-aarch64/Release-build/include/WPA/FlowSensitive.h +323 -0
  153. package/SVF-linux-aarch64/Release-build/include/WPA/Steensgaard.h +131 -0
  154. package/SVF-linux-aarch64/Release-build/include/WPA/TypeAnalysis.h +90 -0
  155. package/SVF-linux-aarch64/Release-build/include/WPA/VersionedFlowSensitive.h +295 -0
  156. package/SVF-linux-aarch64/Release-build/include/WPA/WPAFSSolver.h +246 -0
  157. package/SVF-linux-aarch64/Release-build/include/WPA/WPAPass.h +116 -0
  158. package/SVF-linux-aarch64/Release-build/include/WPA/WPASolver.h +205 -0
  159. package/SVF-linux-aarch64/Release-build/include/WPA/WPAStat.h +222 -0
  160. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfig.cmake +58 -0
  161. package/SVF-linux-aarch64/Release-build/lib/cmake/SVF/SVFConfigVersion.cmake +43 -0
  162. package/SVF-linux-aarch64/Release-build/lib/extapi.bc +2449 -0
  163. package/SVF-linux-aarch64/Release-build/lib/libSvfCore.so +0 -0
  164. package/SVF-linux-aarch64/Release-build/lib/libSvfLLVM.so.16 +0 -0
  165. package/package.json +1 -1
@@ -0,0 +1,272 @@
1
+ //===- Options.h -- Command line options ------------------------//
2
+
3
+ #ifndef OPTIONS_H_
4
+ #define OPTIONS_H_
5
+
6
+ #include <sstream>
7
+ #include "FastCluster/fastcluster.h"
8
+ #include "Util/CommandLine.h"
9
+ #include "Util/PTAStat.h"
10
+ #include "MemoryModel/PointerAnalysisImpl.h"
11
+ #include "Util/NodeIDAllocator.h"
12
+ #include "MSSA/MemSSA.h"
13
+ #include "WPA/WPAPass.h"
14
+
15
+ namespace SVF
16
+ {
17
+
18
+ /// Carries around command line options.
19
+ class Options
20
+ {
21
+ public:
22
+ Options(void) = delete;
23
+
24
+ static const OptionMap<enum PTAStat::ClockType> ClockType;
25
+
26
+ /// If set, only return the clock when getClk is called as getClk(true).
27
+ /// Retrieving the clock is slow but it should be fine for a few calls.
28
+ /// This is good for benchmarking when we don't need to know how long processLoad
29
+ /// takes, for example (many calls), but want to know things like total solve time.
30
+ /// Should be used only to affect getClk, not CLOCK_IN_MS.
31
+ static const Option<bool> MarkedClocksOnly;
32
+
33
+ /// Allocation strategy to be used by the node ID allocator.
34
+ /// Currently dense, seq, or debug.
35
+ static const OptionMap<SVF::NodeIDAllocator::Strategy> NodeAllocStrat;
36
+
37
+ /// Maximum number of field derivations for an object.
38
+ static const Option<u32_t> MaxFieldLimit;
39
+
40
+ /// Whether to stage Andersen's with Steensgaard and cluster based on that data.
41
+ static const Option<bool> ClusterAnder;
42
+
43
+ /// Whether to cluster FS or VFS with the auxiliary Andersen's.
44
+ static const Option<bool> ClusterFs;
45
+
46
+ /// Use an explicitly plain mapping with flow-sensitive (not null).
47
+ static const Option<bool> PlainMappingFs;
48
+
49
+ /// Type of points-to set to use for all analyses.
50
+ static const OptionMap<PointsTo::Type> PtType;
51
+
52
+ /// Clustering method for ClusterFs/ClusterAnder.
53
+ /// TODO: we can separate it into two options, and make Clusterer::cluster take in a method
54
+ /// argument rather than plugging Options::ClusterMethod *inside* Clusterer::cluster
55
+ /// directly, but it seems we will always want single anyway, and this is for testing.
56
+ static const OptionMap<enum hclust_fast_methods> ClusterMethod;
57
+
58
+ /// Cluster partitions separately.
59
+ static const Option<bool> RegionedClustering;
60
+
61
+ /// Align identifiers in each region to a word.
62
+ static const Option<bool> RegionAlign;
63
+
64
+ /// Predict occurrences of points-to sets in the staged points-to set to
65
+ /// weigh more common points-to sets as more important.
66
+ static const Option<bool> PredictPtOcc;
67
+
68
+ /// PTData type.
69
+ static const OptionMap<BVDataPTAImpl::PTBackingType> ptDataBacking;
70
+
71
+ /// Time limit for the main phase (i.e., the actual solving) of FS analyses.
72
+ static const Option<u32_t> FsTimeLimit;
73
+
74
+ /// Time limit for the Andersen's analyses.
75
+ static const Option<u32_t> AnderTimeLimit;
76
+
77
+ /// Number of threads for the versioning phase.
78
+ static const Option<u32_t> VersioningThreads;
79
+
80
+ // ContextDDA.cpp
81
+ static const Option<u32_t> CxtBudget;
82
+
83
+ // DDAPass.cpp
84
+ static const Option<u32_t> MaxPathLen;
85
+ static const Option<u32_t> MaxContextLen;
86
+ static const Option<u32_t> MaxStepInWrapper;
87
+ static const Option<std::string> UserInputQuery;
88
+ static const Option<bool> InsenRecur;
89
+ static const Option<bool> InsenCycle;
90
+ static const Option<bool> PrintCPts;
91
+ static const Option<bool> PrintQueryPts;
92
+ static const Option<bool> WPANum;
93
+ static OptionMultiple<PointerAnalysis::PTATY> DDASelected;
94
+
95
+ // FlowDDA.cpp
96
+ static const Option<u32_t> FlowBudget;
97
+
98
+ // Offline constraint graph (OfflineConsG.cpp)
99
+ static const Option<bool> OCGDotGraph;
100
+
101
+ // Program Assignment Graph for pointer analysis (SVFIR.cpp)
102
+ static Option<bool> HandBlackHole;
103
+ static const Option<bool> FirstFieldEqBase;
104
+
105
+ // SVFG optimizer (SVFGOPT.cpp)
106
+ static const Option<bool> ContextInsensitive;
107
+ static const Option<bool> KeepAOFI;
108
+ static const Option<std::string> SelfCycle;
109
+
110
+ // Sparse value-flow graph (VFG.cpp)
111
+ static const Option<bool> DumpVFG;
112
+
113
+ // Base class of pointer analyses (PointerAnalysis.cpp)
114
+ static const Option<bool> TypePrint;
115
+ static const Option<bool> FuncPointerPrint;
116
+ static const Option<bool> PTSPrint;
117
+ static const Option<bool> PTSAllPrint;
118
+ static const Option<bool> PrintFieldWithBasePrefix;
119
+ static const Option<bool> PStat;
120
+ static const Option<u32_t> StatBudget;
121
+ static const Option<bool> PAGDotGraph;
122
+ static const Option<bool> ShowSVFIRValue;
123
+ static const Option<bool> DumpICFG;
124
+ static const Option<std::string> DumpJson;
125
+ static const Option<bool> ReadJson;
126
+ static const Option<bool> CallGraphDotGraph;
127
+ static const Option<bool> PAGPrint;
128
+ static const Option<u32_t> IndirectCallLimit;
129
+ static const Option<bool> UsePreCompFieldSensitive;
130
+ static const Option<bool> EnableAliasCheck;
131
+ static const Option<bool> EnableTypeCheck;
132
+ static const Option<bool> EnableThreadCallGraph;
133
+ static const Option<bool> ConnectVCallOnCHA;
134
+
135
+ // PointerAnalysisImpl.cpp
136
+ static const Option<bool> INCDFPTData;
137
+
138
+ // Memory region (MemRegion.cpp)
139
+ static const Option<bool> IgnoreDeadFun;
140
+
141
+ // Base class of pointer analyses (MemSSA.cpp)
142
+ static const Option<bool> DumpMSSA;
143
+ static const Option<std::string> MSSAFun;
144
+ // static const llvm::cl::opt<string> MSSAFun;
145
+ static const OptionMap<MemSSA::MemPartition> MemPar;
146
+
147
+ // SVFG builder (SVFGBuilder.cpp)
148
+ static const Option<bool> SVFGWithIndirectCall;
149
+ static Option<bool> OPTSVFG;
150
+
151
+ static const Option<std::string> WriteSVFG;
152
+ static const Option<std::string> ReadSVFG;
153
+
154
+ // LockAnalysis.cpp
155
+ static const Option<bool> IntraLock;
156
+ static const Option<bool> PrintLockSpan;
157
+
158
+ // MHP.cpp
159
+ static const Option<bool> PrintInterLev;
160
+ static const Option<bool> DoLockAnalysis;
161
+
162
+ //MTAStat.cpp
163
+ static const Option<bool> AllPairMHP;
164
+
165
+ // TCT.cpp
166
+ static const Option<bool> TCTDotGraph;
167
+
168
+ // LeakChecker.cpp
169
+ static const Option<bool> ValidateTests;
170
+
171
+ // Source-sink analyzer (SrcSnkDDA.cpp)
172
+ static const Option<bool> DumpSlice;
173
+ static const Option<u32_t> CxtLimit;
174
+
175
+ // CHG.cpp
176
+ static const Option<bool> DumpCHA;
177
+
178
+ // DCHG.cpp
179
+ static const Option<bool> PrintDCHG;
180
+
181
+ // LLVMModule.cpp
182
+ static const Option<std::string> Graphtxt;
183
+ static const Option<bool> SVFMain;
184
+
185
+ // SymbolTableInfo.cpp
186
+ static const Option<bool> LocMemModel;
187
+ static const Option<bool> ModelConsts;
188
+ static const Option<bool> ModelArrays;
189
+ static const Option<bool> CyclicFldIdx;
190
+ static const Option<bool> SymTabPrint;
191
+
192
+ // Conditions.cpp
193
+ static const Option<u32_t> MaxZ3Size;
194
+
195
+ // BoundedZ3Expr.cpp
196
+ static const Option<u32_t> MaxBVLen;
197
+
198
+ // SaberCondAllocator.cpp
199
+ static const Option<bool> PrintPathCond;
200
+
201
+ // SaberSVFGBuilder.cpp
202
+ static const Option<bool> CollectExtRetGlobals;
203
+
204
+ // SVFUtil.cpp
205
+ static const Option<bool> DisableWarn;
206
+
207
+ // Andersen.cpp
208
+ static const Option<bool> ConsCGDotGraph;
209
+ static const Option<bool> BriefConsCGDotGraph;
210
+ static const Option<bool> PrintCGGraph;
211
+ // static const Option<string> WriteAnder;
212
+ static const Option<std::string> WriteAnder;
213
+ // static const Option<string> ReadAnder;
214
+ static const Option<std::string> ReadAnder;
215
+ static const Option<bool> DiffPts;
216
+ static Option<bool> DetectPWC;
217
+ static const Option<bool> VtableInSVFIR;
218
+
219
+ // WPAPass.cpp
220
+ static const Option<std::string> ExtAPIPath;
221
+ static const Option<bool> AnderSVFG;
222
+ static const Option<bool> SABERFULLSVFG;
223
+ static const Option<bool> PrintAliases;
224
+ static OptionMultiple<PointerAnalysis::PTATY> PASelected;
225
+ static OptionMultiple<WPAPass::AliasCheckRule> AliasRule;
226
+
227
+ // DOTGraphTraits
228
+ static const Option<bool> ShowHiddenNode;
229
+
230
+ // CFL option
231
+ static const Option<std::string> GrammarFilename;
232
+ static const Option<std::string> CFLGraph;
233
+ static const Option<bool> PrintCFL;
234
+ static const Option<bool> FlexSymMap;
235
+ static const Option<bool> PEGTransfer;
236
+ static const Option<bool> CFLSVFG;
237
+ static const Option<bool> POCRAlias;
238
+ static const Option<bool> POCRHybrid;
239
+ static const Option<bool> Customized;
240
+
241
+ // Loop Analysis
242
+ static const Option<bool> LoopAnalysis;
243
+ static const Option<u32_t> LoopBound;
244
+
245
+ // Abstract Execution
246
+ static const Option<u32_t> WidenDelay;
247
+ /// the max time consumptions (seconds). Default: 4 hours 14400s
248
+ static const Option<u32_t> Timeout;
249
+ /// bug info output file, Default: output.db
250
+ static const Option<std::string> OutputName;
251
+ /// buffer overflow checker, Default: false
252
+ static const Option<bool> BufferOverflowCheck;
253
+ /// memory leak check, Default: false
254
+ static const Option<bool> MemoryLeakCheck;
255
+ /// file open close checker, Default: false
256
+ static const Option<bool> FileCheck;
257
+ /// double free checker, Default: false
258
+ static const Option<bool> DFreeCheck;
259
+ /// data race checker, Default: false
260
+ static const Option<bool> RaceCheck;
261
+ /// if the access index of gepstmt is unknown, skip it, Default: false
262
+ static const Option<bool> GepUnknownIdx;
263
+ static const Option<bool> RunUncallFuncs;
264
+
265
+ static const Option<bool> ICFGMergeAdjacentNodes;
266
+
267
+ // float precision for symbolic abstraction
268
+ static const Option<u32_t> AEPrecision;
269
+ };
270
+ } // namespace SVF
271
+
272
+ #endif // ifdef OPTIONS_H_
@@ -0,0 +1,83 @@
1
+ //===- PTAStat.h -- Base class for statistics---------------------------------//
2
+ //
3
+ // SVF: Static Value-Flow Analysis
4
+ //
5
+ // Copyright (C) <2013-2017> <Yulei Sui>
6
+ //
7
+
8
+ // This program is free software: you can redistribute it and/or modify
9
+ // it under the terms of the GNU Affero General Public License as published by
10
+ // the Free Software Foundation, either version 3 of the License, or
11
+ // (at your option) any later version.
12
+
13
+ // This program is distributed in the hope that it will be useful,
14
+ // but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ // GNU Affero General Public License for more details.
17
+
18
+ // You should have received a copy of the GNU Affero General Public License
19
+ // along with this program. If not, see <http://www.gnu.org/licenses/>.
20
+ //
21
+ //===----------------------------------------------------------------------===//
22
+
23
+ /*
24
+ * PTAStat.h
25
+ *
26
+ * Created on: Oct 12, 2013
27
+ * Author: Yulei Sui
28
+ */
29
+
30
+ #ifndef ANDERSENSTAT_H_
31
+ #define ANDERSENSTAT_H_
32
+
33
+ #include "SVFIR/SVFValue.h"
34
+ #include "MemoryModel/PointsTo.h"
35
+ #include "Util/SVFStat.h"
36
+ #include <iostream>
37
+ #include <map>
38
+ #include <string>
39
+
40
+ namespace SVF
41
+ {
42
+
43
+ class PointerAnalysis;
44
+
45
+ /*!
46
+ * Pointer Analysis Statistics
47
+ */
48
+ class PTAStat: public SVFStat
49
+ {
50
+ public:
51
+ PTAStat(PointerAnalysis* p);
52
+ virtual ~PTAStat() {}
53
+
54
+ NodeBS localVarInRecursion;
55
+
56
+ inline void setMemUsageBefore(u32_t vmrss, u32_t vmsize)
57
+ {
58
+ _vmrssUsageBefore = vmrss;
59
+ _vmsizeUsageBefore = vmsize;
60
+ }
61
+
62
+ inline void setMemUsageAfter(u32_t vmrss, u32_t vmsize)
63
+ {
64
+ _vmrssUsageAfter = vmrss;
65
+ _vmsizeUsageAfter = vmsize;
66
+ }
67
+
68
+ void performStat() override;
69
+
70
+ void callgraphStat() override;
71
+
72
+
73
+ protected:
74
+ PointerAnalysis* pta;
75
+ u32_t _vmrssUsageBefore;
76
+ u32_t _vmrssUsageAfter;
77
+ u32_t _vmsizeUsageBefore;
78
+ u32_t _vmsizeUsageAfter;
79
+ };
80
+
81
+ } // End namespace SVF
82
+
83
+ #endif /* ANDERSENSTAT_H_ */