|
Static Value-Flow Analysis
|
#include <MTASlicer.h>
Public Member Functions | |
| SingleSlicer (SVFIR *svfir, AndersenBase *pta, MHP *mhp, LockAnalysis *lockAnalysis, SVFG *svfg=nullptr) | |
| ValueFlowSlice | runSlicing (const OrderedSet< const SVFStmt * > &vulnerableStatements) |
| Public Member Functions inherited from SVF::MTASlicerBase | |
| MTASlicerBase (SVFIR *svfir, AndersenBase *pta, MHP *mhp, LockAnalysis *lockAnalysis, SVFG *svfg=nullptr) | |
Additional Inherited Members | |
| Protected Member Functions inherited from SVF::MTASlicerBase | |
| OrderedSet< const VFGNode * > | computeDataDependenceSVFGNodes (const OrderedSet< const SVFStmt * > &seeds, SVFG *svfg) |
| OrderedSet< const ICFGNode * > | svfgNodesToICFGNodes (const OrderedSet< const VFGNode * > &nodes, const OrderedSet< const SVFStmt * > &seeds) |
| Project the retained VFG nodes (plus the seeds) onto their ICFG nodes. | |
| OrderedSet< const CallICFGNode * > | getDependentThreadCreate (const ICFGNode *node) |
| OrderedSet< const TCTNode * > | getTCTNodeSetFromNode (const ICFGNode *node) |
| OrderedSet< const ICFGNode * > | getLockSet (const ICFGNode *node) |
| OrderedSet< const CallICFGNode * > | collectPthreadStatements (const OrderedSet< const ICFGNode * > &sourceNodes) |
| OrderedSet< const CallICFGNode * > | collectMutexStatements (const OrderedSet< const ICFGNode * > &sourceNodes) |
| std::pair< OrderedSet< const CallICFGNode * >, OrderedSet< const CallICFGNode * > > | collectCommonThreadStatements (const OrderedSet< const ICFGNode * > &sourceNodes) |
| void | addSynchronizationDependencies (const OrderedSet< const CallICFGNode * > &pthreadCallNodes, const OrderedSet< const CallICFGNode * > &mutexCallNodes, OrderedSet< const ICFGNode * > &retainedNodes) |
| OrderedSet< const ICFGNode * > | expandCallDependence (const OrderedSet< const ICFGNode * > &nodes) |
| Static Protected Member Functions inherited from SVF::MTASlicerBase | |
| static void | enqueueSVFGNode (const SVFGNode *node, OrderedSet< const SVFGNode * > &visited, std::deque< const SVFGNode * > &worklist) |
| Protected Attributes inherited from SVF::MTASlicerBase | |
| SVFIR * | svfir |
| AndersenBase * | pta |
| MHP * | mhp |
| LockAnalysis * | lockAnalysis |
| CallGraph * | callGraph |
| SVFG * | svfg |
| thread-aware VFG_pre (PTA/Single slicers; null for MTA) | |
SingleSlicer - Unified slicer combining synchronization, data, and call dependence into ONE slice (the single-pass baseline, MSli §3/§5.4: the transitive closure of the target statements under the combined dependence graph). Both ILA and FSPTA run on this single slice, so V_ILA, V_PTA subset V_Single. Used by the differential-slicing ablation (-mta-slicing-single).
Iteratively applies synchronization, data, and call dependence over the thread-aware VFG_pre until convergence.
Definition at line 252 of file MTASlicer.h.
| SVF::SingleSlicer::SingleSlicer | ( | SVFIR * | svfir, |
| AndersenBase * | pta, | ||
| MHP * | mhp, | ||
| LockAnalysis * | lockAnalysis, | ||
| SVFG * | svfg = nullptr ) |
Definition at line 892 of file MTASlicer.cpp.
| ValueFlowSlice SVF::SingleSlicer::runSlicing | ( | const OrderedSet< const SVFStmt * > & | vulnerableStatements | ) |
Perform unified slicing combining synchronization, data, and call dependence.
| vulnerableStatements | Set of vulnerable statements to start slicing from |
Definition at line 901 of file MTASlicer.cpp.