svf-lib 1.0.1806 → 1.0.1807
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 +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 +272 -107
- 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 +9 -10
- 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 -1
- 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/SCC.h +0 -2
- package/SVF-osx/svf/include/Util/SVFBugReport.h +0 -1
- package/SVF-osx/svf/include/Util/SVFStat.h +0 -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
|
@@ -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)
|
|
@@ -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),
|
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
#include "Graphs/SVFG.h"
|
|
37
37
|
#include "Util/Z3Expr.h"
|
|
38
38
|
|
|
39
|
-
|
|
40
39
|
namespace SVF
|
|
41
40
|
{
|
|
42
41
|
|
|
@@ -58,7 +57,6 @@ public:
|
|
|
58
57
|
typedef FIFOWorkList<const SVFBasicBlock*> CFWorkList; ///< worklist for control-flow guard computation
|
|
59
58
|
typedef Map<const SVFGNode*, Set<const SVFGNode*>> SVFGNodeToSVFGNodeSetMap;
|
|
60
59
|
|
|
61
|
-
|
|
62
60
|
/// Constructor
|
|
63
61
|
SaberCondAllocator();
|
|
64
62
|
|
|
@@ -233,7 +231,6 @@ public:
|
|
|
233
231
|
}
|
|
234
232
|
//@}
|
|
235
233
|
|
|
236
|
-
|
|
237
234
|
/// mark neg Z3 expression
|
|
238
235
|
inline void setNegCondInst(const Condition &condition, const SVFInstruction* inst)
|
|
239
236
|
{
|
|
@@ -298,7 +295,6 @@ private:
|
|
|
298
295
|
/// extract subexpression from a Z3 expression
|
|
299
296
|
void extractSubConds(const Condition &condition, NodeBS &support) const;
|
|
300
297
|
|
|
301
|
-
|
|
302
298
|
FunToExitBBsMap funToExitBBsMap; ///< map a function to all its basic blocks calling program exit
|
|
303
299
|
BBToCondMap bbToCondMap; ///< map a basic block to its path condition starting from root
|
|
304
300
|
const SVFGNode* curEvalSVFGNode{}; ///< current llvm value to evaluate branch condition when computing guards
|
|
@@ -300,7 +300,6 @@ public:
|
|
|
300
300
|
return getPointerToTy;
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
-
|
|
304
303
|
inline void setTypeInfo(StInfo* ti)
|
|
305
304
|
{
|
|
306
305
|
typeinfo = ti;
|
|
@@ -503,7 +502,6 @@ public:
|
|
|
503
502
|
numOfElement = elemNum;
|
|
504
503
|
}
|
|
505
504
|
|
|
506
|
-
|
|
507
505
|
};
|
|
508
506
|
|
|
509
507
|
class SVFOtherType : public SVFType
|
|
@@ -40,7 +40,6 @@ namespace SVF
|
|
|
40
40
|
/// LLVM Aliases and constants
|
|
41
41
|
typedef SVF::GraphPrinter GraphPrinter;
|
|
42
42
|
|
|
43
|
-
|
|
44
43
|
class SVFInstruction;
|
|
45
44
|
class SVFBasicBlock;
|
|
46
45
|
class SVFArgument;
|
|
@@ -135,7 +134,6 @@ public:
|
|
|
135
134
|
return bb2PIdom;
|
|
136
135
|
}
|
|
137
136
|
|
|
138
|
-
|
|
139
137
|
inline Map<const SVFBasicBlock*,BBSet>& getDomTreeMap()
|
|
140
138
|
{
|
|
141
139
|
return dtBBsMap;
|
|
@@ -1104,7 +1102,6 @@ public:
|
|
|
1104
1102
|
}
|
|
1105
1103
|
};
|
|
1106
1104
|
|
|
1107
|
-
|
|
1108
1105
|
class CallSite
|
|
1109
1106
|
{
|
|
1110
1107
|
friend class SVFIRReader;
|
|
@@ -73,7 +73,6 @@ public:
|
|
|
73
73
|
DummyObjNode,
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
-
|
|
77
76
|
protected:
|
|
78
77
|
const SVFValue* value; ///< value of this SVFIR node
|
|
79
78
|
SVFStmt::KindToSVFStmtMapTy InEdgeKindToSetMap;
|
|
@@ -254,8 +253,6 @@ public:
|
|
|
254
253
|
//@}
|
|
255
254
|
};
|
|
256
255
|
|
|
257
|
-
|
|
258
|
-
|
|
259
256
|
/*
|
|
260
257
|
* Value (Pointer) variable
|
|
261
258
|
*/
|
|
@@ -371,7 +368,6 @@ public:
|
|
|
371
368
|
virtual const std::string toString() const;
|
|
372
369
|
};
|
|
373
370
|
|
|
374
|
-
|
|
375
371
|
/*
|
|
376
372
|
* Gep Value (Pointer) variable, this variable can be dynamic generated for field sensitive analysis
|
|
377
373
|
* e.g. memcpy, temp gep value variable needs to be created
|
|
@@ -440,7 +436,6 @@ public:
|
|
|
440
436
|
virtual const std::string toString() const;
|
|
441
437
|
};
|
|
442
438
|
|
|
443
|
-
|
|
444
439
|
/*
|
|
445
440
|
* Gep Obj variable, this is dynamic generated for field sensitive analysis
|
|
446
441
|
* Each gep obj variable is one field of a MemObj (base)
|
|
@@ -30,7 +30,6 @@
|
|
|
30
30
|
#ifndef INCLUDE_SVFIR_SYMBOLTABLEINFO_H_
|
|
31
31
|
#define INCLUDE_SVFIR_SYMBOLTABLEINFO_H_
|
|
32
32
|
|
|
33
|
-
|
|
34
33
|
#include "Util/SVFUtil.h"
|
|
35
34
|
#include "MemoryModel/AccessPath.h"
|
|
36
35
|
#include "SVFIR/SVFModule.h"
|
|
@@ -242,7 +241,6 @@ public:
|
|
|
242
241
|
}
|
|
243
242
|
//@}
|
|
244
243
|
|
|
245
|
-
|
|
246
244
|
/// Statistics
|
|
247
245
|
//@{
|
|
248
246
|
inline u32_t getTotalSymNum() const
|
|
@@ -373,7 +371,6 @@ protected:
|
|
|
373
371
|
Set<const StInfo*> stInfos;
|
|
374
372
|
};
|
|
375
373
|
|
|
376
|
-
|
|
377
374
|
/*!
|
|
378
375
|
* Memory object symbols or MemObj (address-taken variables in LLVM-based languages)
|
|
379
376
|
*/
|
|
@@ -444,7 +441,6 @@ public:
|
|
|
444
441
|
/// Check if byte size is a const value
|
|
445
442
|
bool isConstantByteSize() const;
|
|
446
443
|
|
|
447
|
-
|
|
448
444
|
/// object attributes methods
|
|
449
445
|
//@{
|
|
450
446
|
bool isFunction() const;
|
|
@@ -647,7 +643,6 @@ public:
|
|
|
647
643
|
//@}
|
|
648
644
|
};
|
|
649
645
|
|
|
650
|
-
|
|
651
646
|
} // End namespace SVF
|
|
652
647
|
|
|
653
648
|
#endif /* INCLUDE_SVFIR_SYMBOLTABLEINFO_H_ */
|
|
@@ -60,11 +60,8 @@ public:
|
|
|
60
60
|
/// build map at icfg node level
|
|
61
61
|
void buildICFGNodeControlMap();
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
63
|
private:
|
|
66
64
|
|
|
67
|
-
|
|
68
65
|
/// extract basic block edges to be processed
|
|
69
66
|
static void
|
|
70
67
|
extractBBS(const SVFFunction *func,
|
|
@@ -75,17 +72,14 @@ private:
|
|
|
75
72
|
extractNodesBetweenPdomNodes(const SVFBasicBlock *succ, const SVFBasicBlock *LCA,
|
|
76
73
|
std::vector<const SVFBasicBlock *> &tgtNodes);
|
|
77
74
|
|
|
78
|
-
|
|
79
75
|
void dfsNodesBetweenPdomNodes(const SVFBasicBlock *cur,
|
|
80
76
|
const SVFBasicBlock *tgt,
|
|
81
77
|
std::vector<const SVFBasicBlock *> &path,
|
|
82
78
|
std::vector<const SVFBasicBlock *> &tgtNodes,
|
|
83
79
|
SVFLoopAndDomInfo *ld);
|
|
84
80
|
|
|
85
|
-
|
|
86
81
|
s64_t getBBSuccessorBranchID(const SVFBasicBlock *BB, const SVFBasicBlock *Succ);
|
|
87
82
|
|
|
88
|
-
|
|
89
83
|
/// update map
|
|
90
84
|
inline void updateMap(const SVFBasicBlock *pred, const SVFBasicBlock *bb, s32_t pos)
|
|
91
85
|
{
|
|
@@ -93,7 +87,6 @@ private:
|
|
|
93
87
|
_svfdependentOnMap[bb][pred].insert(pos);
|
|
94
88
|
}
|
|
95
89
|
|
|
96
|
-
|
|
97
90
|
private:
|
|
98
91
|
CDG *_controlDG;
|
|
99
92
|
Map<const SVFBasicBlock *, Map<const SVFBasicBlock *, Set<s32_t>>> _svfcontrolMap; ///< map a basicblock to its controlling BBs (position, set of BBs)
|
|
@@ -103,5 +96,4 @@ private:
|
|
|
103
96
|
};
|
|
104
97
|
}
|
|
105
98
|
|
|
106
|
-
|
|
107
99
|
#endif //SVF_CDGBUILDER_H
|