svf-lib 1.0.1817 → 1.0.1819
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SVF-linux/Release-build/svf/libSvfCore.a +0 -0
- package/SVF-linux/svf/include/MemoryModel/PointerAnalysis.h +0 -9
- package/SVF-linux/svf/include/Util/SVFStat.h +3 -0
- 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 +0 -2
- package/SVF-osx/svf/include/AbstractExecution/ConsExeState.h +0 -8
- package/SVF-osx/svf/include/AbstractExecution/ExeState.h +0 -8
- package/SVF-osx/svf/include/AbstractExecution/IntervalExeState.h +0 -7
- package/SVF-osx/svf/include/AbstractExecution/IntervalValue.h +0 -3
- package/SVF-osx/svf/include/AbstractExecution/NumericLiteral.h +0 -2
- package/SVF-osx/svf/include/AbstractExecution/RelExeState.h +0 -1
- package/SVF-osx/svf/include/AbstractExecution/RelationSolver.h +0 -1
- package/SVF-osx/svf/include/AbstractExecution/SVFIR2ConsExeState.h +0 -1
- package/SVF-osx/svf/include/AbstractExecution/SVFIR2ItvExeState.h +0 -4
- package/SVF-osx/svf/include/AbstractExecution/SingleAbsValue.h +0 -2
- package/SVF-osx/svf/include/AbstractExecution/SymState.h +0 -4
- package/SVF-osx/svf/include/AbstractExecution/WTO.h +0 -5
- package/SVF-osx/svf/include/CFL/CFGrammar.h +0 -4
- package/SVF-osx/svf/include/CFL/CFLAlias.h +0 -1
- package/SVF-osx/svf/include/CFL/CFLGraphBuilder.h +0 -1
- package/SVF-osx/svf/include/CFL/CFLStat.h +0 -1
- package/SVF-osx/svf/include/CFL/CFLVF.h +0 -1
- package/SVF-osx/svf/include/DDA/ContextDDA.h +0 -1
- package/SVF-osx/svf/include/DDA/DDAClient.h +0 -5
- package/SVF-osx/svf/include/DDA/DDAPass.h +0 -1
- package/SVF-osx/svf/include/FastCluster/fastcluster.h +0 -1
- package/SVF-osx/svf/include/Graphs/CDG.h +0 -3
- package/SVF-osx/svf/include/Graphs/CFBasicBlockG.h +0 -3
- package/SVF-osx/svf/include/Graphs/CFLGraph.h +0 -1
- package/SVF-osx/svf/include/Graphs/CHG.h +2 -4
- package/SVF-osx/svf/include/Graphs/ConsGEdge.h +0 -5
- package/SVF-osx/svf/include/Graphs/ConsGNode.h +0 -1
- package/SVF-osx/svf/include/Graphs/DOTGraphTraits.h +0 -1
- package/SVF-osx/svf/include/Graphs/GenericGraph.h +0 -1
- package/SVF-osx/svf/include/Graphs/GraphPrinter.h +0 -3
- package/SVF-osx/svf/include/Graphs/GraphTraits.h +2 -2
- package/SVF-osx/svf/include/Graphs/ICFG.h +0 -1
- package/SVF-osx/svf/include/Graphs/ICFGNode.h +0 -3
- package/SVF-osx/svf/include/Graphs/ICFGStat.h +0 -2
- package/SVF-osx/svf/include/Graphs/IRGraph.h +0 -1
- package/SVF-osx/svf/include/Graphs/PTACallGraph.h +0 -3
- package/SVF-osx/svf/include/Graphs/SVFG.h +0 -2
- package/SVF-osx/svf/include/Graphs/SVFGEdge.h +0 -1
- package/SVF-osx/svf/include/Graphs/SVFGNode.h +0 -7
- package/SVF-osx/svf/include/Graphs/SVFGOPT.h +0 -3
- package/SVF-osx/svf/include/Graphs/SVFGStat.h +0 -2
- package/SVF-osx/svf/include/Graphs/ThreadCallGraph.h +0 -3
- package/SVF-osx/svf/include/Graphs/VFG.h +0 -2
- package/SVF-osx/svf/include/Graphs/VFGEdge.h +0 -3
- package/SVF-osx/svf/include/Graphs/VFGNode.h +0 -8
- package/SVF-osx/svf/include/MSSA/MSSAMuChi.h +0 -4
- package/SVF-osx/svf/include/MSSA/MemPartition.h +0 -1
- package/SVF-osx/svf/include/MSSA/MemRegion.h +0 -1
- package/SVF-osx/svf/include/MSSA/MemSSA.h +0 -1
- package/SVF-osx/svf/include/MTA/FSMPTA.h +0 -6
- package/SVF-osx/svf/include/MTA/LockAnalysis.h +0 -5
- package/SVF-osx/svf/include/MTA/MHP.h +0 -3
- package/SVF-osx/svf/include/MTA/MTA.h +0 -1
- package/SVF-osx/svf/include/MTA/MTAResultValidator.h +0 -2
- package/SVF-osx/svf/include/MTA/TCT.h +0 -1
- package/SVF-osx/svf/include/MemoryModel/AbstractPointsToDS.h +0 -2
- package/SVF-osx/svf/include/MemoryModel/AccessPath.h +0 -5
- package/SVF-osx/svf/include/MemoryModel/ConditionalPT.h +0 -5
- package/SVF-osx/svf/include/MemoryModel/PersistentPointsToDS.h +0 -1
- package/SVF-osx/svf/include/MemoryModel/PointerAnalysis.h +0 -10
- package/SVF-osx/svf/include/MemoryModel/PointerAnalysisImpl.h +0 -1
- package/SVF-osx/svf/include/MemoryModel/PointsTo.h +0 -1
- package/SVF-osx/svf/include/SABER/DoubleFreeChecker.h +0 -1
- package/SVF-osx/svf/include/SABER/ProgSlice.h +0 -1
- package/SVF-osx/svf/include/SABER/SaberCondAllocator.h +0 -4
- package/SVF-osx/svf/include/SABER/SaberSVFGBuilder.h +0 -1
- package/SVF-osx/svf/include/SVFIR/SVFIR.h +0 -2
- package/SVF-osx/svf/include/SVFIR/SVFStatements.h +0 -2
- package/SVF-osx/svf/include/SVFIR/SVFType.h +0 -2
- package/SVF-osx/svf/include/SVFIR/SVFValue.h +0 -3
- package/SVF-osx/svf/include/SVFIR/SVFVariables.h +0 -5
- package/SVF-osx/svf/include/SVFIR/SymbolTableInfo.h +0 -5
- package/SVF-osx/svf/include/Util/CDGBuilder.h +0 -8
- package/SVF-osx/svf/include/Util/CallGraphBuilder.h +0 -2
- package/SVF-osx/svf/include/Util/Casting.h +1 -2
- package/SVF-osx/svf/include/Util/CommandLine.h +0 -1
- package/SVF-osx/svf/include/Util/CxtStmt.h +0 -4
- package/SVF-osx/svf/include/Util/DPItem.h +0 -2
- package/SVF-osx/svf/include/Util/NodeIDAllocator.h +2 -2
- package/SVF-osx/svf/include/Util/PTAStat.h +0 -1
- package/SVF-osx/svf/include/Util/SCC.h +0 -2
- package/SVF-osx/svf/include/Util/SVFBugReport.h +0 -1
- package/SVF-osx/svf/include/Util/SVFStat.h +3 -1
- package/SVF-osx/svf/include/Util/SVFUtil.h +0 -1
- package/SVF-osx/svf/include/Util/ThreadAPI.h +0 -1
- package/SVF-osx/svf/include/Util/WorkList.h +0 -1
- package/SVF-osx/svf/include/Util/Z3Expr.h +0 -4
- package/SVF-osx/svf/include/Util/iterator.h +2 -2
- package/SVF-osx/svf/include/WPA/Andersen.h +0 -6
- package/SVF-osx/svf/include/WPA/AndersenPWC.h +0 -3
- package/SVF-osx/svf/include/WPA/WPAFSSolver.h +0 -5
- package/SVF-osx/svf/include/WPA/WPAPass.h +0 -2
- package/SVF-osx/svf/include/WPA/WPASolver.h +0 -2
- package/SVF-osx/svf/include/WPA/WPAStat.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/BreakConstantExpr.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/DCHG.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/GEPTypeBridgeIterator.h +0 -3
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMModule.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/LLVMUtil.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SVFIRBuilder.h +0 -1
- package/SVF-osx/svf-llvm/include/SVF-LLVM/SymbolTableBuilder.h +0 -1
- package/package.json +1 -1
|
@@ -115,7 +115,7 @@ nodes(const GraphType &G)
|
|
|
115
115
|
}
|
|
116
116
|
template <class GraphType>
|
|
117
117
|
iter_range<typename GenericGraphTraits<Inverse<GraphType>>::nodes_iterator>
|
|
118
|
-
inverse_nodes(const GraphType &G)
|
|
118
|
+
inverse_nodes(const GraphType &G)
|
|
119
119
|
{
|
|
120
120
|
return make_range(GenericGraphTraits<Inverse<GraphType>>::nodes_begin(G),
|
|
121
121
|
GenericGraphTraits<Inverse<GraphType>>::nodes_end(G));
|
|
@@ -131,7 +131,7 @@ children(const typename GenericGraphTraits<GraphType>::NodeRef &G)
|
|
|
131
131
|
|
|
132
132
|
template <class GraphType>
|
|
133
133
|
iter_range<typename GenericGraphTraits<Inverse<GraphType>>::ChildIteratorType>
|
|
134
|
-
inverse_children(const typename GenericGraphTraits<GraphType>::NodeRef &G)
|
|
134
|
+
inverse_children(const typename GenericGraphTraits<GraphType>::NodeRef &G)
|
|
135
135
|
{
|
|
136
136
|
return make_range(GenericGraphTraits<Inverse<GraphType>>::child_begin(G),
|
|
137
137
|
GenericGraphTraits<Inverse<GraphType>>::child_end(G));
|
|
@@ -94,7 +94,6 @@ public:
|
|
|
94
94
|
return bb;
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
|
|
98
97
|
/// Overloading operator << for dumping ICFG node ID
|
|
99
98
|
//@{
|
|
100
99
|
friend OutStream &operator<<(OutStream &o, const ICFGNode &node)
|
|
@@ -254,7 +253,6 @@ public:
|
|
|
254
253
|
//@}
|
|
255
254
|
};
|
|
256
255
|
|
|
257
|
-
|
|
258
256
|
/*!
|
|
259
257
|
* Function entry ICFGNode containing a set of FormalParmVFGNodes of a function
|
|
260
258
|
*/
|
|
@@ -480,7 +478,6 @@ public:
|
|
|
480
478
|
virtual const std::string toString() const;
|
|
481
479
|
};
|
|
482
480
|
|
|
483
|
-
|
|
484
481
|
/*!
|
|
485
482
|
* Return ICFGNode containing (at most one) ActualRetVFGNode at a callsite
|
|
486
483
|
*/
|
|
@@ -123,7 +123,6 @@ public:
|
|
|
123
123
|
else if (SVFUtil::isa<FunExitICFGNode>(node))
|
|
124
124
|
numOfExitNodes++;
|
|
125
125
|
|
|
126
|
-
|
|
127
126
|
ICFGEdge::ICFGEdgeSetTy::iterator edgeIt =
|
|
128
127
|
it->second->OutEdgeBegin();
|
|
129
128
|
ICFGEdge::ICFGEdgeSetTy::iterator edgeEit =
|
|
@@ -161,4 +160,3 @@ public:
|
|
|
161
160
|
} // End namespace SVF
|
|
162
161
|
|
|
163
162
|
#endif /* INCLUDE_UTIL_ICFGSTAT_H_ */
|
|
164
|
-
|
|
@@ -41,7 +41,6 @@ namespace SVF
|
|
|
41
41
|
class PTACallGraphNode;
|
|
42
42
|
class SVFModule;
|
|
43
43
|
|
|
44
|
-
|
|
45
44
|
/*
|
|
46
45
|
* Call Graph edge representing a calling relation between two functions
|
|
47
46
|
* Multiple calls from function A to B are merged into one call edge
|
|
@@ -58,7 +57,6 @@ public:
|
|
|
58
57
|
CallRetEdge,TDForkEdge,TDJoinEdge,HareParForEdge
|
|
59
58
|
};
|
|
60
59
|
|
|
61
|
-
|
|
62
60
|
private:
|
|
63
61
|
CallInstSet directCalls;
|
|
64
62
|
CallInstSet indirectCalls;
|
|
@@ -198,7 +196,6 @@ public:
|
|
|
198
196
|
/// Return TRUE if this function can be reached from main.
|
|
199
197
|
bool isReachableFromProgEntry() const;
|
|
200
198
|
|
|
201
|
-
|
|
202
199
|
/// Overloading operator << for dumping ICFG node ID
|
|
203
200
|
//@{
|
|
204
201
|
friend OutStream& operator<< (OutStream &o, const PTACallGraphNode &node)
|
|
@@ -57,7 +57,6 @@ typedef PHIVFGNode PHISVFGNode;
|
|
|
57
57
|
typedef IntraPHIVFGNode IntraPHISVFGNode;
|
|
58
58
|
typedef InterPHIVFGNode InterPHISVFGNode;
|
|
59
59
|
|
|
60
|
-
|
|
61
60
|
/*!
|
|
62
61
|
* Sparse value flow graph
|
|
63
62
|
* Each node stands for a definition, each edge stands for value flow relations
|
|
@@ -346,7 +345,6 @@ protected:
|
|
|
346
345
|
}
|
|
347
346
|
//@}
|
|
348
347
|
|
|
349
|
-
|
|
350
348
|
/// Given a PAGNode, set/get its def SVFG node (definition of top level pointers)
|
|
351
349
|
//@{
|
|
352
350
|
inline void setDef(const PAGNode* pagNode, const SVFGNode* node)
|
|
@@ -131,7 +131,6 @@ public:
|
|
|
131
131
|
virtual const std::string toString() const;
|
|
132
132
|
};
|
|
133
133
|
|
|
134
|
-
|
|
135
134
|
/*
|
|
136
135
|
* SVFG Node stands for return mu node (address-taken variables)
|
|
137
136
|
*/
|
|
@@ -173,7 +172,6 @@ public:
|
|
|
173
172
|
virtual const std::string toString() const;
|
|
174
173
|
};
|
|
175
174
|
|
|
176
|
-
|
|
177
175
|
/*
|
|
178
176
|
* SVFG Node stands for callsite mu node (address-taken variables)
|
|
179
177
|
*/
|
|
@@ -202,7 +200,6 @@ public:
|
|
|
202
200
|
return ver;
|
|
203
201
|
}
|
|
204
202
|
|
|
205
|
-
|
|
206
203
|
/// Methods for support type inquiry through isa, cast, and dyn_cast:
|
|
207
204
|
//@{
|
|
208
205
|
static inline bool classof(const ActualINSVFGNode *)
|
|
@@ -222,7 +219,6 @@ public:
|
|
|
222
219
|
virtual const std::string toString() const;
|
|
223
220
|
};
|
|
224
221
|
|
|
225
|
-
|
|
226
222
|
/*
|
|
227
223
|
* SVFG Node stands for callsite chi node (address-taken variables)
|
|
228
224
|
*/
|
|
@@ -269,7 +265,6 @@ public:
|
|
|
269
265
|
virtual const std::string toString() const;
|
|
270
266
|
};
|
|
271
267
|
|
|
272
|
-
|
|
273
268
|
/*
|
|
274
269
|
* SVFG Node stands for a memory ssa phi node or formalIn or ActualOut
|
|
275
270
|
*/
|
|
@@ -397,7 +392,6 @@ public:
|
|
|
397
392
|
virtual const std::string toString() const;
|
|
398
393
|
};
|
|
399
394
|
|
|
400
|
-
|
|
401
395
|
/*
|
|
402
396
|
* Inter MSSA PHI (formalIN/ActualOUT)
|
|
403
397
|
*/
|
|
@@ -507,7 +501,6 @@ private:
|
|
|
507
501
|
const Version version;
|
|
508
502
|
};
|
|
509
503
|
|
|
510
|
-
|
|
511
504
|
} // End namespace SVF
|
|
512
505
|
|
|
513
506
|
#endif /* INCLUDE_MSSA_SVFGNODE_H_ */
|
|
@@ -32,11 +32,9 @@
|
|
|
32
32
|
*
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
-
|
|
36
35
|
#ifndef SVFGOPT_H_
|
|
37
36
|
#define SVFGOPT_H_
|
|
38
37
|
|
|
39
|
-
|
|
40
38
|
#include "Graphs/SVFG.h"
|
|
41
39
|
#include "Util/WorkList.h"
|
|
42
40
|
|
|
@@ -345,7 +343,6 @@ private:
|
|
|
345
343
|
}
|
|
346
344
|
//@}
|
|
347
345
|
|
|
348
|
-
|
|
349
346
|
NodeIDToNodeIDMap actualInToDefMap; ///< map actual-in to its def-site node
|
|
350
347
|
NodeIDToNodeIDMap formalOutToDefMap; ///< map formal-out to its def-site node
|
|
351
348
|
NodeBS defNodes; ///< preserved def nodes of formal-in/actual-out
|
|
@@ -153,7 +153,6 @@ public:
|
|
|
153
153
|
typedef GenericNode<PTACallGraphNode, HareParForEdge>::GEdgeSetTy ParForEdgeSet;
|
|
154
154
|
};
|
|
155
155
|
|
|
156
|
-
|
|
157
156
|
/*!
|
|
158
157
|
* Thread sensitive call graph
|
|
159
158
|
*/
|
|
@@ -197,7 +196,6 @@ public:
|
|
|
197
196
|
/// Update join edge using pointer analysis results
|
|
198
197
|
void updateJoinEdge(PointerAnalysis* pta);
|
|
199
198
|
|
|
200
|
-
|
|
201
199
|
/// Get call graph edge via call instruction
|
|
202
200
|
//@{
|
|
203
201
|
/// whether this call instruction has a valid call graph edge
|
|
@@ -362,7 +360,6 @@ public:
|
|
|
362
360
|
void addIndirectParForEdge(const CallICFGNode* cs, const SVFFunction* callee);
|
|
363
361
|
//@}
|
|
364
362
|
|
|
365
|
-
|
|
366
363
|
/// map call instruction to its CallGraphEdge map
|
|
367
364
|
inline void addThreadForkEdgeSetMap(const CallICFGNode* cs, ThreadForkEdge* edge)
|
|
368
365
|
{
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
#ifndef INCLUDE_UTIL_VFG_H_
|
|
31
31
|
#define INCLUDE_UTIL_VFG_H_
|
|
32
32
|
|
|
33
|
-
|
|
34
33
|
#include "SVFIR/SVFIR.h"
|
|
35
34
|
#include "Graphs/PTACallGraph.h"
|
|
36
35
|
#include "Graphs/VFGNode.h"
|
|
@@ -83,7 +82,6 @@ public:
|
|
|
83
82
|
typedef Set<const VFGNode*> GlobalVFGNodeSet;
|
|
84
83
|
typedef Set<const PAGNode*> PAGNodeSet;
|
|
85
84
|
|
|
86
|
-
|
|
87
85
|
protected:
|
|
88
86
|
NodeID totalVFGNode;
|
|
89
87
|
PAGNodeToDefMapTy PAGNodeToDefMap; ///< map a pag node to its definition SVG node
|
|
@@ -134,7 +134,6 @@ public:
|
|
|
134
134
|
virtual const std::string toString() const;
|
|
135
135
|
};
|
|
136
136
|
|
|
137
|
-
|
|
138
137
|
/*!
|
|
139
138
|
* SVFG edge representing direct value-flows
|
|
140
139
|
*/
|
|
@@ -169,7 +168,6 @@ public:
|
|
|
169
168
|
virtual const std::string toString() const;
|
|
170
169
|
};
|
|
171
170
|
|
|
172
|
-
|
|
173
171
|
/*!
|
|
174
172
|
* Intra SVFG edge representing direct intra-procedural value-flows
|
|
175
173
|
*/
|
|
@@ -204,7 +202,6 @@ public:
|
|
|
204
202
|
virtual const std::string toString() const;
|
|
205
203
|
};
|
|
206
204
|
|
|
207
|
-
|
|
208
205
|
/*!
|
|
209
206
|
* SVFG call edge representing direct value-flows from a caller to its callee at a callsite
|
|
210
207
|
*/
|
|
@@ -316,7 +316,6 @@ public:
|
|
|
316
316
|
const std::string toString() const override;
|
|
317
317
|
};
|
|
318
318
|
|
|
319
|
-
|
|
320
319
|
/*!
|
|
321
320
|
* VFGNode for compare instruction, e.g., bool b = (a!=c);
|
|
322
321
|
*/
|
|
@@ -388,7 +387,6 @@ public:
|
|
|
388
387
|
const std::string toString() const override;
|
|
389
388
|
};
|
|
390
389
|
|
|
391
|
-
|
|
392
390
|
/*!
|
|
393
391
|
* VFGNode for binary operator instructions, e.g., a = b + c;
|
|
394
392
|
*/
|
|
@@ -703,7 +701,6 @@ public:
|
|
|
703
701
|
const std::string toString() const override;
|
|
704
702
|
};
|
|
705
703
|
|
|
706
|
-
|
|
707
704
|
/*
|
|
708
705
|
* Intra LLVM PHI Node
|
|
709
706
|
*/
|
|
@@ -756,7 +753,6 @@ public:
|
|
|
756
753
|
const std::string toString() const override;
|
|
757
754
|
};
|
|
758
755
|
|
|
759
|
-
|
|
760
756
|
class AddrVFGNode: public StmtVFGNode
|
|
761
757
|
{
|
|
762
758
|
private:
|
|
@@ -795,7 +791,6 @@ public:
|
|
|
795
791
|
const std::string toString() const override;
|
|
796
792
|
};
|
|
797
793
|
|
|
798
|
-
|
|
799
794
|
class ArgumentVFGNode : public VFGNode
|
|
800
795
|
{
|
|
801
796
|
|
|
@@ -891,7 +886,6 @@ public:
|
|
|
891
886
|
const std::string toString() const override;
|
|
892
887
|
};
|
|
893
888
|
|
|
894
|
-
|
|
895
889
|
/*
|
|
896
890
|
* ICFG Node stands for formal parameter node (top level pointers)
|
|
897
891
|
*/
|
|
@@ -1146,8 +1140,6 @@ private:
|
|
|
1146
1140
|
const CallICFGNode* callInst;
|
|
1147
1141
|
};
|
|
1148
1142
|
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
1143
|
/*!
|
|
1152
1144
|
* Dummy Definition for undef and null pointers
|
|
1153
1145
|
*/
|
|
@@ -84,7 +84,6 @@ public:
|
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
|
|
88
87
|
/*!
|
|
89
88
|
* Indirect Memory Read
|
|
90
89
|
* 1) LoadMU at each store instruction
|
|
@@ -269,7 +268,6 @@ public:
|
|
|
269
268
|
}
|
|
270
269
|
};
|
|
271
270
|
|
|
272
|
-
|
|
273
271
|
/*!
|
|
274
272
|
* RetMU is annotated at function return, representing memory objects returns to callers
|
|
275
273
|
*/
|
|
@@ -314,7 +312,6 @@ public:
|
|
|
314
312
|
}
|
|
315
313
|
};
|
|
316
314
|
|
|
317
|
-
|
|
318
315
|
/*!
|
|
319
316
|
* Indirect Memory Definition
|
|
320
317
|
* 1) MSSACHI indirect memory object is modified
|
|
@@ -512,7 +509,6 @@ public:
|
|
|
512
509
|
}
|
|
513
510
|
};
|
|
514
511
|
|
|
515
|
-
|
|
516
512
|
/*!
|
|
517
513
|
*
|
|
518
514
|
* StoreCHI is annotated at each store instruction, representing a memory object is modified here
|
|
@@ -335,7 +335,6 @@ protected:
|
|
|
335
335
|
/// Get Mod-Ref of a callee function
|
|
336
336
|
virtual bool handleCallsiteModRef(NodeBS& mod, NodeBS& ref, const CallICFGNode* cs, const SVFFunction* fun);
|
|
337
337
|
|
|
338
|
-
|
|
339
338
|
/// Add cpts to store/load
|
|
340
339
|
//@{
|
|
341
340
|
inline void addCPtsToStore(NodeBS& cpts, const StoreStmt *st, const SVFFunction* fun)
|
|
@@ -34,7 +34,6 @@
|
|
|
34
34
|
#ifndef FSPTANALYSIS_H_
|
|
35
35
|
#define FSPTANALYSIS_H_
|
|
36
36
|
|
|
37
|
-
|
|
38
37
|
#include "WPA/FlowSensitive.h"
|
|
39
38
|
#include "MSSA/SVFGBuilder.h"
|
|
40
39
|
#include "MTA/LockAnalysis.h"
|
|
@@ -47,7 +46,6 @@ namespace SVF
|
|
|
47
46
|
class MHP;
|
|
48
47
|
class LockAnalysis;
|
|
49
48
|
|
|
50
|
-
|
|
51
49
|
class SVFGNodeLockSpan
|
|
52
50
|
{
|
|
53
51
|
public:
|
|
@@ -173,7 +171,6 @@ private:
|
|
|
173
171
|
Set<NodeIDPair> recordedges;
|
|
174
172
|
Map<NodeIDPair, PointsTo> edge2pts;
|
|
175
173
|
|
|
176
|
-
|
|
177
174
|
Map<const StmtSVFGNode*, SVFGNodeIDSet> prevset;
|
|
178
175
|
Map<const StmtSVFGNode*, SVFGNodeIDSet> succset;
|
|
179
176
|
|
|
@@ -183,7 +180,6 @@ private:
|
|
|
183
180
|
PairToBoolMap pairheadmap;
|
|
184
181
|
PairToBoolMap pairtailmap;
|
|
185
182
|
|
|
186
|
-
|
|
187
183
|
static const u32_t ADDEDGE_NOEDGE= 0;
|
|
188
184
|
static const u32_t ADDEDGE_NONSPARSE= 1;
|
|
189
185
|
static const u32_t ADDEDGE_ALLOPT= 2;
|
|
@@ -195,14 +191,12 @@ private:
|
|
|
195
191
|
|
|
196
192
|
};
|
|
197
193
|
|
|
198
|
-
|
|
199
194
|
/*!
|
|
200
195
|
* Flow-sensitive pointer analysis for multithreaded programs
|
|
201
196
|
*/
|
|
202
197
|
class FSMPTA : public FlowSensitive
|
|
203
198
|
{
|
|
204
199
|
|
|
205
|
-
|
|
206
200
|
public:
|
|
207
201
|
|
|
208
202
|
/// Constructor
|
|
@@ -266,8 +266,6 @@ public:
|
|
|
266
266
|
}
|
|
267
267
|
//@}
|
|
268
268
|
|
|
269
|
-
|
|
270
|
-
|
|
271
269
|
/// Check if one instruction's context stmt is in a lock span
|
|
272
270
|
inline bool hasOneCxtInLockSpan(const SVFInstruction *I, LockSpan lspan) const
|
|
273
271
|
{
|
|
@@ -299,7 +297,6 @@ public:
|
|
|
299
297
|
return true;
|
|
300
298
|
}
|
|
301
299
|
|
|
302
|
-
|
|
303
300
|
/// Check if two Instructions are protected by common locks
|
|
304
301
|
/// echo inst may have multiple cxt stmt
|
|
305
302
|
/// we check whether every cxt stmt of instructions is protected by a common lock.
|
|
@@ -469,7 +466,6 @@ private:
|
|
|
469
466
|
/// Map a statement to all its context-sensitive statements
|
|
470
467
|
InstToCxtStmtSet instToCxtStmtSet;
|
|
471
468
|
|
|
472
|
-
|
|
473
469
|
/// Context-sensitive locks
|
|
474
470
|
CxtLockSet cxtLockset;
|
|
475
471
|
|
|
@@ -504,7 +500,6 @@ private:
|
|
|
504
500
|
InstToInstSetMap instTocondCILocksMap;
|
|
505
501
|
//@}
|
|
506
502
|
|
|
507
|
-
|
|
508
503
|
public:
|
|
509
504
|
double lockTime;
|
|
510
505
|
u32_t numOfTotalQueries;
|
|
@@ -272,7 +272,6 @@ private:
|
|
|
272
272
|
InstToThreadStmtSetMap instToTSMap; ///< Map an instruction to its ThreadStmtSet
|
|
273
273
|
FuncPairToBool nonCandidateFuncMHPRelMap;
|
|
274
274
|
|
|
275
|
-
|
|
276
275
|
public:
|
|
277
276
|
u32_t numOfTotalQueries; ///< Total number of queries
|
|
278
277
|
u32_t numOfMHPQueries; ///< Number of queries are answered as may-happen-in-parallel
|
|
@@ -280,8 +279,6 @@ public:
|
|
|
280
279
|
double interleavingQueriesTime;
|
|
281
280
|
};
|
|
282
281
|
|
|
283
|
-
|
|
284
|
-
|
|
285
282
|
/*!
|
|
286
283
|
*
|
|
287
284
|
*/
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
//
|
|
21
21
|
//===----------------------------------------------------------------------===//
|
|
22
22
|
|
|
23
|
-
|
|
24
23
|
/// Contains abstract classes for:
|
|
25
24
|
/// PTData: basic points-to data structure derived by all others.
|
|
26
25
|
/// DiffPTData: PTData which only propagates new changes, not entire points-to sets.
|
|
@@ -39,7 +38,6 @@
|
|
|
39
38
|
/// |
|
|
40
39
|
/// MutableIncDFPTData
|
|
41
40
|
|
|
42
|
-
|
|
43
41
|
/*
|
|
44
42
|
* AbstractPointsToDS.h
|
|
45
43
|
*
|
|
@@ -29,20 +29,16 @@
|
|
|
29
29
|
*
|
|
30
30
|
*/
|
|
31
31
|
|
|
32
|
-
|
|
33
32
|
#ifndef AccessPath_H_
|
|
34
33
|
#define AccessPath_H_
|
|
35
34
|
|
|
36
|
-
|
|
37
35
|
#include "SVFIR/SVFValue.h"
|
|
38
36
|
|
|
39
|
-
|
|
40
37
|
namespace SVF
|
|
41
38
|
{
|
|
42
39
|
|
|
43
40
|
class SVFVar;
|
|
44
41
|
|
|
45
|
-
|
|
46
42
|
/*
|
|
47
43
|
* Location set represents a set of locations in a memory block with following offsets:
|
|
48
44
|
* { offset + \sum_{i=0}^N (stride_i * j_i) | 0 \leq j_i < M_i }
|
|
@@ -145,7 +141,6 @@ public:
|
|
|
145
141
|
/// Return element number of a type.
|
|
146
142
|
u32_t getElementNum(const SVFType* type) const;
|
|
147
143
|
|
|
148
|
-
|
|
149
144
|
bool addOffsetVarAndGepTypePair(const SVFVar* var, const SVFType* gepIterType);
|
|
150
145
|
|
|
151
146
|
/// Return TRUE if this is a constant location set.
|
|
@@ -74,7 +74,6 @@ public:
|
|
|
74
74
|
}
|
|
75
75
|
///@}
|
|
76
76
|
|
|
77
|
-
|
|
78
77
|
inline CondVar& operator= (const CondVar& rhs)
|
|
79
78
|
{
|
|
80
79
|
if(*this!=rhs)
|
|
@@ -85,7 +84,6 @@ public:
|
|
|
85
84
|
return *this;
|
|
86
85
|
}
|
|
87
86
|
|
|
88
|
-
|
|
89
87
|
/**
|
|
90
88
|
* Less than implementation.
|
|
91
89
|
*/
|
|
@@ -296,7 +294,6 @@ private:
|
|
|
296
294
|
ElementSet elements;
|
|
297
295
|
};
|
|
298
296
|
|
|
299
|
-
|
|
300
297
|
/*!
|
|
301
298
|
* Conditional Points-to set
|
|
302
299
|
*/
|
|
@@ -400,7 +397,6 @@ public:
|
|
|
400
397
|
return numElement()==0;
|
|
401
398
|
}
|
|
402
399
|
|
|
403
|
-
|
|
404
400
|
/// Overloading operators
|
|
405
401
|
//@{
|
|
406
402
|
inline CondPointsToSet<Cond>& operator=(
|
|
@@ -604,7 +600,6 @@ public:
|
|
|
604
600
|
}
|
|
605
601
|
//@}
|
|
606
602
|
|
|
607
|
-
|
|
608
603
|
/// Overloading operator |=
|
|
609
604
|
/// Merge CondPointsToSet of RHS into this one.
|
|
610
605
|
inline bool operator |= (const CondPointsToSet<Cond>& rhs)
|
|
@@ -48,7 +48,6 @@ namespace SVF
|
|
|
48
48
|
|
|
49
49
|
class CommonCHGraph;
|
|
50
50
|
|
|
51
|
-
class TypeSystem;
|
|
52
51
|
class SVFModule;
|
|
53
52
|
class ICFG;
|
|
54
53
|
class PTAStat;
|
|
@@ -86,7 +85,6 @@ public:
|
|
|
86
85
|
PathS_DDA, ///< Guarded value-flow DDA
|
|
87
86
|
Cxt_DDA, ///< context sensitive DDA
|
|
88
87
|
|
|
89
|
-
|
|
90
88
|
Default_PTA ///< default pta without any analysis
|
|
91
89
|
};
|
|
92
90
|
|
|
@@ -156,8 +154,6 @@ protected:
|
|
|
156
154
|
ICFG* icfg;
|
|
157
155
|
/// CHGraph
|
|
158
156
|
CommonCHGraph *chgraph;
|
|
159
|
-
/// TypeSystem
|
|
160
|
-
TypeSystem *typeSystem;
|
|
161
157
|
|
|
162
158
|
public:
|
|
163
159
|
/// Get ICFG
|
|
@@ -433,12 +429,6 @@ public:
|
|
|
433
429
|
virtual void resolveCPPIndCalls(const CallICFGNode* cs,
|
|
434
430
|
const PointsTo& target,
|
|
435
431
|
CallEdgeMap& newEdges);
|
|
436
|
-
|
|
437
|
-
/// get TypeSystem
|
|
438
|
-
const TypeSystem *getTypeSystem() const
|
|
439
|
-
{
|
|
440
|
-
return typeSystem;
|
|
441
|
-
}
|
|
442
432
|
};
|
|
443
433
|
|
|
444
434
|
} // End namespace SVF
|
|
@@ -60,7 +60,6 @@ public:
|
|
|
60
60
|
|
|
61
61
|
typedef SaberCondAllocator::SVFGNodeToSVFGNodeSetMap SVFGNodeToSVFGNodeSetMap;
|
|
62
62
|
|
|
63
|
-
|
|
64
63
|
/// Constructor
|
|
65
64
|
ProgSlice(const SVFGNode* src, SaberCondAllocator* pa, const SVFG* graph):
|
|
66
65
|
root(src), partialReachable(false), fullReachable(false), reachGlob(false),
|