svf-lib 1.0.1820 → 1.0.1821
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-osx/Release-build/svf/libSvfCore.a +0 -0
- package/SVF-osx/Release-build/svf-llvm/libSvfLLVM.a +0 -0
- package/SVF-osx/svf/include/AbstractExecution/BoundedZ3Expr.h +2 -0
- package/SVF-osx/svf/include/AbstractExecution/CFBasicBlockGWTO.h +83 -0
- package/SVF-osx/svf/include/AbstractExecution/ConsExeState.h +8 -0
- package/SVF-osx/svf/include/AbstractExecution/ExeState.h +8 -0
- package/SVF-osx/svf/include/AbstractExecution/ICFGWTO.h +78 -0
- package/SVF-osx/svf/include/AbstractExecution/IntervalExeState.h +7 -0
- package/SVF-osx/svf/include/AbstractExecution/IntervalValue.h +3 -0
- package/SVF-osx/svf/include/AbstractExecution/NumericLiteral.h +2 -0
- package/SVF-osx/svf/include/AbstractExecution/RelExeState.h +1 -0
- package/SVF-osx/svf/include/AbstractExecution/RelationSolver.h +1 -0
- package/SVF-osx/svf/include/AbstractExecution/SVFIR2ConsExeState.h +1 -0
- package/SVF-osx/svf/include/AbstractExecution/SVFIR2ItvExeState.h +4 -0
- package/SVF-osx/svf/include/AbstractExecution/SingleAbsValue.h +2 -0
- package/SVF-osx/svf/include/AbstractExecution/SymState.h +4 -0
- package/SVF-osx/svf/include/CFL/CFGrammar.h +4 -0
- package/SVF-osx/svf/include/CFL/CFLAlias.h +1 -0
- package/SVF-osx/svf/include/CFL/CFLGraphBuilder.h +1 -0
- package/SVF-osx/svf/include/CFL/CFLStat.h +1 -0
- package/SVF-osx/svf/include/CFL/CFLVF.h +1 -0
- package/SVF-osx/svf/include/DDA/ContextDDA.h +1 -0
- package/SVF-osx/svf/include/DDA/DDAClient.h +5 -0
- package/SVF-osx/svf/include/DDA/DDAPass.h +3 -2
- package/SVF-osx/svf/include/DDA/DDAVFSolver.h +2 -2
- package/SVF-osx/svf/include/FastCluster/fastcluster.h +1 -0
- package/SVF-osx/svf/include/Graphs/CDG.h +3 -0
- package/SVF-osx/svf/include/Graphs/CFBasicBlockG.h +3 -0
- package/SVF-osx/svf/include/Graphs/CFLGraph.h +1 -0
- package/SVF-osx/svf/include/Graphs/CHG.h +4 -2
- package/SVF-osx/svf/include/Graphs/ConsGEdge.h +5 -0
- package/SVF-osx/svf/include/Graphs/ConsGNode.h +1 -0
- package/SVF-osx/svf/include/Graphs/DOTGraphTraits.h +1 -0
- package/SVF-osx/svf/include/Graphs/GenericGraph.h +1 -0
- package/SVF-osx/svf/include/Graphs/GraphPrinter.h +3 -0
- package/SVF-osx/svf/include/Graphs/GraphTraits.h +2 -2
- package/SVF-osx/svf/include/Graphs/ICFG.h +1 -0
- package/SVF-osx/svf/include/Graphs/ICFGNode.h +3 -0
- package/SVF-osx/svf/include/Graphs/ICFGStat.h +2 -0
- package/SVF-osx/svf/include/Graphs/IRGraph.h +1 -0
- package/SVF-osx/svf/include/Graphs/PTACallGraph.h +3 -0
- package/SVF-osx/svf/include/Graphs/SCC.h +354 -0
- package/SVF-osx/svf/include/Graphs/SVFG.h +2 -0
- package/SVF-osx/svf/include/Graphs/SVFGEdge.h +1 -0
- package/SVF-osx/svf/include/Graphs/SVFGNode.h +7 -0
- package/SVF-osx/svf/include/Graphs/SVFGOPT.h +3 -0
- package/SVF-osx/svf/include/Graphs/SVFGStat.h +3 -1
- package/SVF-osx/svf/include/Graphs/ThreadCallGraph.h +3 -0
- package/SVF-osx/svf/include/Graphs/VFG.h +2 -0
- package/SVF-osx/svf/include/Graphs/VFGEdge.h +3 -0
- package/SVF-osx/svf/include/Graphs/VFGNode.h +8 -0
- package/SVF-osx/svf/include/Graphs/WTO.h +859 -0
- package/SVF-osx/svf/include/MSSA/MSSAMuChi.h +4 -0
- package/SVF-osx/svf/include/MSSA/MemPartition.h +1 -0
- package/SVF-osx/svf/include/MSSA/MemRegion.h +4 -3
- package/SVF-osx/svf/include/MSSA/MemSSA.h +1 -0
- package/SVF-osx/svf/include/MTA/FSMPTA.h +6 -0
- package/SVF-osx/svf/include/MTA/LockAnalysis.h +5 -0
- package/SVF-osx/svf/include/MTA/MHP.h +3 -0
- package/SVF-osx/svf/include/MTA/MTA.h +1 -0
- package/SVF-osx/svf/include/MTA/MTAResultValidator.h +2 -0
- package/SVF-osx/svf/include/MTA/TCT.h +3 -2
- package/SVF-osx/svf/include/MemoryModel/AbstractPointsToDS.h +2 -0
- package/SVF-osx/svf/include/MemoryModel/AccessPath.h +5 -0
- package/SVF-osx/svf/include/MemoryModel/ConditionalPT.h +5 -0
- package/SVF-osx/svf/include/MemoryModel/PersistentPointsToDS.h +1 -0
- package/SVF-osx/svf/include/MemoryModel/PointerAnalysis.h +6 -5
- package/SVF-osx/svf/include/MemoryModel/PointerAnalysisImpl.h +1 -0
- package/SVF-osx/svf/include/MemoryModel/PointsTo.h +1 -0
- package/SVF-osx/svf/include/SABER/DoubleFreeChecker.h +1 -0
- package/SVF-osx/svf/include/SABER/ProgSlice.h +1 -0
- package/SVF-osx/svf/include/SABER/SaberCondAllocator.h +4 -0
- package/SVF-osx/svf/include/SABER/SaberSVFGBuilder.h +1 -0
- package/SVF-osx/svf/include/SVFIR/SVFIR.h +2 -0
- package/SVF-osx/svf/include/SVFIR/SVFStatements.h +2 -0
- package/SVF-osx/svf/include/SVFIR/SVFType.h +2 -0
- package/SVF-osx/svf/include/SVFIR/SVFValue.h +3 -0
- package/SVF-osx/svf/include/SVFIR/SVFVariables.h +5 -0
- package/SVF-osx/svf/include/SVFIR/SymbolTableInfo.h +5 -0
- package/SVF-osx/svf/include/Util/CDGBuilder.h +8 -0
- package/SVF-osx/svf/include/Util/CallGraphBuilder.h +2 -0
- package/SVF-osx/svf/include/Util/Casting.h +2 -1
- package/SVF-osx/svf/include/Util/CommandLine.h +1 -0
- package/SVF-osx/svf/include/Util/CxtStmt.h +4 -0
- package/SVF-osx/svf/include/Util/DPItem.h +2 -0
- package/SVF-osx/svf/include/Util/NodeIDAllocator.h +2 -2
- package/SVF-osx/svf/include/Util/PTAStat.h +1 -0
- package/SVF-osx/svf/include/Util/SVFBugReport.h +1 -0
- package/SVF-osx/svf/include/Util/SVFStat.h +1 -0
- package/SVF-osx/svf/include/Util/SVFUtil.h +1 -0
- package/SVF-osx/svf/include/Util/ThreadAPI.h +1 -0
- package/SVF-osx/svf/include/Util/WorkList.h +1 -0
- package/SVF-osx/svf/include/Util/Z3Expr.h +4 -0
- package/SVF-osx/svf/include/Util/iterator.h +2 -2
- package/SVF-osx/svf/include/WPA/Andersen.h +6 -0
- package/SVF-osx/svf/include/WPA/AndersenPWC.h +3 -0
- package/SVF-osx/svf/include/WPA/CSC.h +3 -3
- package/SVF-osx/svf/include/WPA/WPAFSSolver.h +5 -0
- package/SVF-osx/svf/include/WPA/WPAPass.h +2 -0
- package/SVF-osx/svf/include/WPA/WPASolver.h +2 -0
- package/SVF-osx/svf/include/WPA/WPAStat.h +1 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/BreakConstantExpr.h +1 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/DCHG.h +1 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/GEPTypeBridgeIterator.h +3 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMModule.h +1 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMUtil.h +1 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +1 -0
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +1 -0
- package/package.json +1 -1
|
@@ -192,8 +192,8 @@ public:
|
|
|
192
192
|
|
|
193
193
|
// From all the candidates, returns the best mapping for pointsToSets (points-to set -> # occurrences).
|
|
194
194
|
static inline std::pair<hclust_fast_methods, std::vector<NodeID>> determineBestMapping(
|
|
195
|
-
|
|
196
|
-
|
|
195
|
+
const std::vector<std::pair<hclust_fast_methods, std::vector<NodeID>>> &candidates,
|
|
196
|
+
Map<PointsTo, unsigned> pointsToSets, const std::string &evalSubtitle, double &evalTime);
|
|
197
197
|
|
|
198
198
|
};
|
|
199
199
|
};
|
|
@@ -93,6 +93,7 @@ public:
|
|
|
93
93
|
/// release z3 solver
|
|
94
94
|
static void releaseSolver();
|
|
95
95
|
|
|
96
|
+
|
|
96
97
|
/// null expression
|
|
97
98
|
static z3::expr nullExpr()
|
|
98
99
|
{
|
|
@@ -272,6 +273,7 @@ public:
|
|
|
272
273
|
/// output Z3 expression as a string
|
|
273
274
|
static std::string dumpStr(const Z3Expr &z3Expr);
|
|
274
275
|
|
|
276
|
+
|
|
275
277
|
/// get the number of subexpression of a Z3 expression
|
|
276
278
|
static u32_t getExprSize(const Z3Expr &z3Expr);
|
|
277
279
|
|
|
@@ -281,6 +283,7 @@ public:
|
|
|
281
283
|
return getContext().bool_val(true);
|
|
282
284
|
}
|
|
283
285
|
|
|
286
|
+
|
|
284
287
|
/// Return the unique false condition
|
|
285
288
|
static inline Z3Expr getFalseCond()
|
|
286
289
|
{
|
|
@@ -312,3 +315,4 @@ struct std::hash<SVF::Z3Expr>
|
|
|
312
315
|
};
|
|
313
316
|
|
|
314
317
|
#endif //Z3_EXAMPLE_Z3EXPR_H
|
|
318
|
+
|
|
@@ -352,7 +352,7 @@ struct pointee_iter
|
|
|
352
352
|
template <typename RangeT, typename WrappedIteratorT =
|
|
353
353
|
decltype(std::begin(std::declval<RangeT>()))>
|
|
354
354
|
iter_range<pointee_iter<WrappedIteratorT>>
|
|
355
|
-
|
|
355
|
+
make_pointee_range(RangeT &&Range)
|
|
356
356
|
{
|
|
357
357
|
using PointeeIteratorT = pointee_iter<WrappedIteratorT>;
|
|
358
358
|
return make_range(PointeeIteratorT(std::begin(std::forward<RangeT>(Range))),
|
|
@@ -388,7 +388,7 @@ public:
|
|
|
388
388
|
template <typename RangeT, typename WrappedIteratorT =
|
|
389
389
|
decltype(std::begin(std::declval<RangeT>()))>
|
|
390
390
|
iter_range<pointer_iterator<WrappedIteratorT>>
|
|
391
|
-
|
|
391
|
+
make_pointer_range(RangeT &&Range)
|
|
392
392
|
{
|
|
393
393
|
using PointerIteratorT = pointer_iterator<WrappedIteratorT>;
|
|
394
394
|
return make_range(PointerIteratorT(std::begin(std::forward<RangeT>(Range))),
|
|
@@ -156,6 +156,7 @@ protected:
|
|
|
156
156
|
class Andersen: public AndersenBase
|
|
157
157
|
{
|
|
158
158
|
|
|
159
|
+
|
|
159
160
|
public:
|
|
160
161
|
typedef SCCDetection<ConstraintGraph*> CGSCC;
|
|
161
162
|
typedef OrderedMap<CallSite, NodeID> CallSite2DummyValPN;
|
|
@@ -231,6 +232,7 @@ public:
|
|
|
231
232
|
return getPTDataTy()->unionPts(id,ptd);
|
|
232
233
|
}
|
|
233
234
|
|
|
235
|
+
|
|
234
236
|
void dumpTopLevelPtsTo();
|
|
235
237
|
|
|
236
238
|
void setDetectPWC(bool flag)
|
|
@@ -339,6 +341,8 @@ protected:
|
|
|
339
341
|
/// SCC detection
|
|
340
342
|
virtual NodeStack& SCCDetect();
|
|
341
343
|
|
|
344
|
+
|
|
345
|
+
|
|
342
346
|
/// Sanitize pts for field insensitive objects
|
|
343
347
|
void sanitizePts()
|
|
344
348
|
{
|
|
@@ -372,6 +376,8 @@ protected:
|
|
|
372
376
|
virtual void cluster(void) const;
|
|
373
377
|
};
|
|
374
378
|
|
|
379
|
+
|
|
380
|
+
|
|
375
381
|
/**
|
|
376
382
|
* Wave propagation with diff points-to set.
|
|
377
383
|
*/
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
#ifndef PROJECT_ANDERSENSFR_H
|
|
31
31
|
#define PROJECT_ANDERSENSFR_H
|
|
32
32
|
|
|
33
|
+
|
|
33
34
|
#include "WPA/Andersen.h"
|
|
34
35
|
#include "WPA/CSC.h"
|
|
35
36
|
#include "MemoryModel/PointsTo.h"
|
|
@@ -93,6 +94,8 @@ protected:
|
|
|
93
94
|
|
|
94
95
|
};
|
|
95
96
|
|
|
97
|
+
|
|
98
|
+
|
|
96
99
|
/*!
|
|
97
100
|
* Selective Cycle Detection with Stride-based Field Representation
|
|
98
101
|
*/
|
|
@@ -30,13 +30,13 @@
|
|
|
30
30
|
#ifndef PROJECT_CSC_H
|
|
31
31
|
#define PROJECT_CSC_H
|
|
32
32
|
|
|
33
|
-
#include "Util/SCC.h"
|
|
34
|
-
#include "SVFIR/SVFValue.h" // for NodeBS
|
|
35
33
|
#include "Graphs/ConsG.h"
|
|
34
|
+
#include "Graphs/SCC.h"
|
|
35
|
+
#include "SVFIR/SVFValue.h" // for NodeBS
|
|
36
36
|
#include "Util/WorkList.h"
|
|
37
37
|
#include <limits.h>
|
|
38
|
-
#include <stack>
|
|
39
38
|
#include <map>
|
|
39
|
+
#include <stack>
|
|
40
40
|
|
|
41
41
|
namespace SVF
|
|
42
42
|
{
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
*
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
+
|
|
35
36
|
#ifndef WPAFSSOLVER_H_
|
|
36
37
|
#define WPAFSSOLVER_H_
|
|
37
38
|
|
|
@@ -97,6 +98,8 @@ protected:
|
|
|
97
98
|
}
|
|
98
99
|
};
|
|
99
100
|
|
|
101
|
+
|
|
102
|
+
|
|
100
103
|
/*!
|
|
101
104
|
* Solver based on SCC cycles.
|
|
102
105
|
*/
|
|
@@ -168,6 +171,8 @@ protected:
|
|
|
168
171
|
NodeID curSCCID; ///< index of current SCC.
|
|
169
172
|
};
|
|
170
173
|
|
|
174
|
+
|
|
175
|
+
|
|
171
176
|
/*!
|
|
172
177
|
* Only solve nodes which need to be analyzed.
|
|
173
178
|
*/
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
//
|
|
21
21
|
//===----------------------------------------------------------------------===//
|
|
22
22
|
|
|
23
|
+
|
|
23
24
|
/*
|
|
24
25
|
* WPASolver.h
|
|
25
26
|
*
|
|
@@ -171,6 +172,7 @@ protected:
|
|
|
171
172
|
/// print out statistics for i-th iteration
|
|
172
173
|
u32_t iterationForPrintStat;
|
|
173
174
|
|
|
175
|
+
|
|
174
176
|
/// Get node on the graph
|
|
175
177
|
inline GNODE* Node(NodeID id)
|
|
176
178
|
{
|
|
@@ -447,6 +447,7 @@ private:
|
|
|
447
447
|
return nullptr;
|
|
448
448
|
}
|
|
449
449
|
|
|
450
|
+
|
|
450
451
|
/// Creates an edge between from t1 to t2.
|
|
451
452
|
DCHEdge* addEdge(const DIType* t1, const DIType* t2, DCHEdge::GEdgeKind et);
|
|
452
453
|
/// Returns the edge between t1 and t2 if it exists, returns nullptr otherwise.
|
|
@@ -100,6 +100,7 @@ public:
|
|
|
100
100
|
return const_cast<Value*>(&**OpIt);
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
|
|
103
104
|
generic_bridge_gep_type_iterator& operator++()
|
|
104
105
|
{
|
|
105
106
|
if ( CurTy.getInt() )
|
|
@@ -132,6 +133,7 @@ public:
|
|
|
132
133
|
return *this;
|
|
133
134
|
}
|
|
134
135
|
|
|
136
|
+
|
|
135
137
|
generic_bridge_gep_type_iterator operator++(int)
|
|
136
138
|
{
|
|
137
139
|
generic_bridge_gep_type_iterator tmp = *this;
|
|
@@ -141,6 +143,7 @@ public:
|
|
|
141
143
|
|
|
142
144
|
};
|
|
143
145
|
|
|
146
|
+
|
|
144
147
|
typedef generic_bridge_gep_type_iterator<> bridge_gep_iterator;
|
|
145
148
|
|
|
146
149
|
inline bridge_gep_iterator bridge_gep_begin(const User* GEP)
|