svf-lib 1.0.2677 → 1.0.2678

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 (32) hide show
  1. package/SVF-linux-x86_64/bin/ae +0 -0
  2. package/SVF-linux-x86_64/bin/cfl +0 -0
  3. package/SVF-linux-x86_64/bin/dvf +0 -0
  4. package/SVF-linux-x86_64/bin/mta +0 -0
  5. package/SVF-linux-x86_64/bin/saber +0 -0
  6. package/SVF-linux-x86_64/bin/svf-ex +0 -0
  7. package/SVF-linux-x86_64/include/Graphs/CallGraph.h +18 -0
  8. package/SVF-linux-x86_64/include/Graphs/DOTGraphTraits.h +33 -20
  9. package/SVF-linux-x86_64/include/Graphs/GraphPrinter.h +1 -1
  10. package/SVF-linux-x86_64/include/Graphs/GraphWriter.h +6 -7
  11. package/SVF-linux-x86_64/include/Graphs/ICFG.h +40 -0
  12. package/SVF-linux-x86_64/include/Graphs/SVFG.h +8 -0
  13. package/SVF-linux-x86_64/include/Graphs/SlicedGraphs.h +1801 -0
  14. package/SVF-linux-x86_64/include/Graphs/ThreadCallGraph.h +13 -4
  15. package/SVF-linux-x86_64/include/MSSA/MemRegion.h +17 -0
  16. package/SVF-linux-x86_64/include/MSSA/MemSSA.h +7 -5
  17. package/SVF-linux-x86_64/include/MSSA/SVFGBuilder.h +6 -0
  18. package/SVF-linux-x86_64/include/MTA/FSMPTA.h +91 -0
  19. package/SVF-linux-x86_64/include/MTA/LockAnalysis.h +40 -25
  20. package/SVF-linux-x86_64/include/MTA/MHP.h +54 -21
  21. package/SVF-linux-x86_64/include/MTA/MTA.h +186 -3
  22. package/SVF-linux-x86_64/include/MTA/MTASVFGBuilder.h +176 -0
  23. package/SVF-linux-x86_64/include/MTA/MTASlicer.h +275 -0
  24. package/SVF-linux-x86_64/include/MTA/MTAStat.h +0 -2
  25. package/SVF-linux-x86_64/include/MTA/TCT.h +70 -29
  26. package/SVF-linux-x86_64/include/Util/CommandLine.h +5 -0
  27. package/SVF-linux-x86_64/include/Util/CxtStmt.h +29 -19
  28. package/SVF-linux-x86_64/include/Util/Options.h +12 -6
  29. package/SVF-linux-x86_64/include/Util/ThreadAPI.h +12 -0
  30. package/SVF-linux-x86_64/lib/cmake/SVF/SVFTargets.cmake +1 -1
  31. package/SVF-linux-x86_64/lib/libSvfCore.so.3.4 +0 -0
  32. package/package.json +1 -1
@@ -58,8 +58,6 @@ public:
58
58
  void performThreadCallGraphStat(ThreadCallGraph* tcg);
59
59
  /// Statistics for thread creation tree
60
60
  void performTCTStat(TCT* tct);
61
- /// Statistics for MHP statement pairs
62
- void performMHPPairStat(MHP* mhp, LockAnalysis* lsa);
63
61
  /// Statistics for annotation
64
62
  //void performAnnotationStat(MTAAnnotator* anno);
65
63
 
@@ -44,7 +44,6 @@ namespace SVF
44
44
 
45
45
  class TCTNode;
46
46
 
47
-
48
47
  /*
49
48
  * Thread creation edge represents a spawning relation between two context sensitive threads
50
49
  */
@@ -143,7 +142,7 @@ public:
143
142
  //@}
144
143
 
145
144
 
146
- private:
145
+ protected:
147
146
  const CxtThread ctx; /// Thread creation context, <fork site, call string context>
148
147
  bool multiforked;
149
148
  };
@@ -159,7 +158,18 @@ public:
159
158
  typedef SVFLoopAndDomInfo::LoopBBs LoopBBs;
160
159
  typedef TCTEdge::ThreadCreateEdgeSet ThreadCreateEdgeSet;
161
160
  typedef ThreadCreateEdgeSet::iterator TCTNodeIter;
162
- typedef Set<const FunObjVar*> FunSet;
161
+ /// Order functions by id (thread ids are assigned in iteration order over
162
+ /// the entry-function set). Null-safe: null functions order first.
163
+ struct FunObjVarIdCmp
164
+ {
165
+ bool operator()(const FunObjVar* lhs, const FunObjVar* rhs) const
166
+ {
167
+ if (lhs == nullptr || rhs == nullptr)
168
+ return lhs == nullptr && rhs != nullptr;
169
+ return lhs->getId() < rhs->getId();
170
+ }
171
+ };
172
+ typedef OrderedSet<const FunObjVar*, FunObjVarIdCmp> FunSet;
163
173
  typedef std::vector<const ICFGNode*> InstVec;
164
174
  typedef Set<const ICFGNode*> InstSet;
165
175
  typedef Set<const CallGraphNode*> PTACGNodeSet;
@@ -171,22 +181,13 @@ public:
171
181
  typedef FIFOWorkList<CxtThreadProc> CxtThreadProcVec;
172
182
  typedef Set<CxtThreadProc> CxtThreadProcSet;
173
183
  typedef SCCDetection<CallGraph*> ThreadCallGraphSCC;
184
+ typedef Set<const ICFGNode*> DummyForkSiteSet;
174
185
 
175
186
  /// Constructor
176
- TCT(PointerAnalysis* p) :pta(p),TCTNodeNum(0),TCTEdgeNum(0),MaxCxtSize(0)
177
- {
178
- tcg = SVFUtil::dyn_cast<ThreadCallGraph>(pta->getCallGraph());
179
- assert(tcg != nullptr && "TCT::TCT: call graph is not a ThreadCallGraph!");
180
- tcg->updateCallGraph(pta);
181
- //tcg->updateJoinEdge(pta);
182
- tcgSCC = pta->getCallGraphSCC();
183
- tcgSCC->find();
184
- build();
185
- }
187
+ TCT(PointerAnalysis* p);
186
188
 
187
189
  /// Destructor
188
- virtual ~TCT()
189
- { }
190
+ virtual ~TCT();
190
191
 
191
192
  /// Get TCG
192
193
  inline ThreadCallGraph* getThreadCallGraph() const
@@ -420,7 +421,7 @@ public:
420
421
  /// Context helper functions
421
422
  //@{
422
423
  /// Push calling context
423
- void pushCxt(CallStrCxt& cxt, const CallICFGNode* call, const FunObjVar* callee);
424
+ virtual void pushCxt(CallStrCxt& cxt, const CallICFGNode* call, const FunObjVar* callee);
424
425
  /// Match context
425
426
  bool matchAndPopCxt(CallStrCxt& cxt, const CallICFGNode* call, const FunObjVar* callee);
426
427
  /// If lhs is a suffix of rhs, including equal
@@ -442,7 +443,7 @@ public:
442
443
  /// Print TCT information
443
444
  void print() const;
444
445
 
445
- private:
446
+ protected:
446
447
  ThreadCallGraph* tcg;
447
448
  PointerAnalysis* pta;
448
449
  u32_t TCTNodeNum;
@@ -475,16 +476,36 @@ private:
475
476
  }
476
477
 
477
478
  /// Build TCT
478
- void build();
479
+ virtual void build();
480
+
481
+ /// Free the built graph and clear all bookkeeping so build() can run again from
482
+ /// a clean state (SlicedTCT rebuilds the tree over a sliced view).
483
+ void reset()
484
+ {
485
+ destroy();
486
+ IDToNodeMap.clear();
487
+ ctpToNodeMap.clear();
488
+ ctToForkCxtsMap.clear();
489
+ ctToRoutineFunMap.clear();
490
+ candidateFuncSet.clear();
491
+ entryFuncSet.clear();
492
+ joinSiteToLoopMap.clear();
493
+ inRecurJoinSites.clear();
494
+ ctpList.clear();
495
+ visitedCTPs.clear();
496
+ TCTNodeNum = 0;
497
+ TCTEdgeNum = 0;
498
+ MaxCxtSize = 0;
499
+ }
479
500
 
480
501
  /// Mark relevant procedures that are backward reachable from any fork/join site
481
502
  //@{
482
- void markRelProcs();
483
- void markRelProcs(const FunObjVar* fun);
503
+ virtual void markRelProcs();
504
+ virtual void markRelProcs(const FunObjVar* fun);
484
505
  //@}
485
506
 
486
507
  /// Get entry functions that are neither called by other functions nor extern functions
487
- void collectEntryFunInCallGraph();
508
+ virtual void collectEntryFunInCallGraph();
488
509
 
489
510
  /// Collect multi-forked threads whose 1, cxt is in loop or recursion;
490
511
  /// 2, parent thread is a multi-forked thread.
@@ -493,7 +514,7 @@ private:
493
514
  /// Handle join site in loop
494
515
  //@{
495
516
  /// collect loop info for join sites
496
- void collectLoopInfoForJoin();
517
+ virtual void collectLoopInfoForJoin();
497
518
  /// Whether a given bb is a loop head of a inloop join site
498
519
  bool isLoopHeaderOfJoinLoop(const SVFBasicBlock* bb);
499
520
  /// Whether a given bb is an exit of a inloop join site
@@ -509,7 +530,7 @@ private:
509
530
  //@}
510
531
 
511
532
  /// Handle call relations
512
- void handleCallRelation(CxtThreadProc& ctp, const CallGraphEdge* cgEdge, const CallICFGNode* call);
533
+ virtual void handleCallRelation(CxtThreadProc& ctp, const CallGraphEdge* cgEdge, const CallICFGNode* call);
513
534
 
514
535
  /// Get or create a tct node based on CxtThread
515
536
  //@{
@@ -519,6 +540,10 @@ private:
519
540
  CxtThreadToNodeMap::const_iterator it = ctpToNodeMap.find(ct);
520
541
  if(it!=ctpToNodeMap.end())
521
542
  {
543
+ // A second spawn context merged onto this truncated CxtThread: the
544
+ // node stands for multiple dynamic instances, so mark it multiforked.
545
+ if (addCxtOfCxtThread(forkSiteCtp.getTid(), forkSiteCtp.getContext(), ct))
546
+ it->second->setMultiforked(true);
522
547
  return it->second;
523
548
  }
524
549
 
@@ -533,14 +558,19 @@ private:
533
558
  /// Set multi-forked thread attributes
534
559
  void setMultiForkedAttrs(CxtThread& ct)
535
560
  {
536
- /// non-main thread
537
- if(ct.getThread() != nullptr)
561
+ /// non-main thread spawned at a real fork site. The main thread uses a
562
+ /// synthetic dummy fork site (see createDummyForkSite); it has no real
563
+ /// function/call-graph node, is never in a loop or recursion, and must be
564
+ /// treated like the null (main) case -- otherwise isInLoopInstruction would
565
+ /// look up a call-graph node that does not exist.
566
+ if(ct.getThread() != nullptr &&
567
+ dummyForkSites.find(ct.getThread()) == dummyForkSites.end())
538
568
  {
539
569
  const ICFGNode* svfInst = ct.getThread();
540
570
  ct.setInloop(isInLoopInstruction(svfInst));
541
571
  ct.setIncycle(isInRecursion(svfInst));
542
572
  }
543
- /// main thread
573
+ /// main thread (null or dummy fork site)
544
574
  else
545
575
  {
546
576
  ct.setInloop(false);
@@ -548,10 +578,11 @@ private:
548
578
  }
549
579
  }
550
580
 
551
- /// Add context for a thread at its spawning site (fork site)
552
- void addCxtOfCxtThread(NodeID pTid, const CallStrCxt& cxt, const CxtThread& ct)
581
+ /// Add context for a thread at its spawning site (fork site).
582
+ /// Returns true if this (parent tid, context) pair was not recorded before.
583
+ bool addCxtOfCxtThread(NodeID pTid, const CallStrCxt& cxt, const CxtThread& ct)
553
584
  {
554
- ctToForkCxtsMap[ct].insert(std::make_pair(pTid, cxt));
585
+ return ctToForkCxtsMap[ct].insert(std::make_pair(pTid, cxt)).second;
555
586
  }
556
587
 
557
588
  /// Add start routine function of a cxt thread
@@ -560,6 +591,14 @@ private:
560
591
  ctToRoutineFunMap[ct] = fun;
561
592
  }
562
593
 
594
+ /// Create and get a new dummy fork site for starter routines
595
+ ICFGNode* createDummyForkSite()
596
+ {
597
+ ICFGNode* dummyForkSite = new ICFGNode(dummyForkICFGNodeID--, SVFValue::GlobalBlock);
598
+ dummyForkSites.insert(dummyForkSite);
599
+ return dummyForkSite;
600
+ }
601
+
563
602
  /// WorkList helper functions
564
603
  //@{
565
604
  inline bool pushToCTPWorkList(const CxtThreadProc& ctp)
@@ -592,6 +631,8 @@ private:
592
631
  CxtThreadToFun ctToRoutineFunMap; /// Map a CxtThread to its start routine function.
593
632
  InstToLoopMap joinSiteToLoopMap; ///< map an inloop join to its loop class
594
633
  Set<const ICFGNode*> inRecurJoinSites; ///< Fork or Join sites in recursions
634
+ DummyForkSiteSet dummyForkSites; ///< set of dummy fork sites for starter routines
635
+ NodeID dummyForkICFGNodeID = UINT32_MAX; ///< unique ID generator for dummy
595
636
  };
596
637
 
597
638
  } // End namespace SVF
@@ -353,6 +353,11 @@ public:
353
353
  value = v;
354
354
  }
355
355
 
356
+ bool isSet(void) const
357
+ {
358
+ return isExplicitlySet;
359
+ }
360
+
356
361
  T operator()(void) const
357
362
  {
358
363
  return value;
@@ -454,47 +454,57 @@ private:
454
454
  };
455
455
 
456
456
  } // End namespace SVF
457
- // Specialise has for class defined in this header file
457
+ // Specialise hash for the classes defined in this header file.
458
+ // Each hash must combine every field that operator== compares; hashing only a
459
+ // subset (e.g. the tid alone) collapses all keys sharing that field into one
460
+ // bucket. IDs are hashed instead of raw pointers so the bucket layout does not
461
+ // depend on allocation addresses.
458
462
  template <> struct std::hash<SVF::CxtThread>
459
463
  {
460
- size_t operator()(const SVF::CxtThread& cs) const
464
+ size_t operator()(const SVF::CxtThread& ct) const
461
465
  {
462
- std::hash<SVF::CallStrCxt> h;
463
- return h(cs.getContext());
466
+ std::hash<SVF::CallStrCxt> ch;
467
+ SVF::Hash<std::pair<SVF::NodeID, size_t>> pairH;
468
+ const SVF::NodeID forksite =
469
+ ct.getThread() != nullptr ? ct.getThread()->getId() : 0;
470
+ return pairH({forksite, ch(ct.getContext())});
464
471
  }
465
472
  };
466
473
  template <> struct std::hash<SVF::CxtThreadProc>
467
474
  {
468
475
  size_t operator()(const SVF::CxtThreadProc& ctp) const
469
476
  {
470
- std::hash<SVF::NodeID> h;
471
- return h(ctp.getTid());
477
+ std::hash<SVF::CallStrCxt> ch;
478
+ SVF::Hash<std::pair<SVF::NodeID, size_t>> pairH;
479
+ return pairH({ctp.getTid(),
480
+ pairH({ctp.getProc()->getId(), ch(ctp.getContext())})});
472
481
  }
473
482
  };
474
- template <> struct std::hash<SVF::CxtThreadStmt>
483
+ template <> struct std::hash<SVF::CxtStmt>
475
484
  {
476
- size_t operator()(const SVF::CxtThreadStmt& cts) const
485
+ size_t operator()(const SVF::CxtStmt& cs) const
477
486
  {
478
- std::hash<SVF::NodeID> h;
479
- return h(cts.getTid());
487
+ std::hash<SVF::CallStrCxt> ch;
488
+ SVF::Hash<std::pair<SVF::NodeID, size_t>> pairH;
489
+ return pairH({cs.getStmt()->getId(), ch(cs.getContext())});
480
490
  }
481
491
  };
482
- template <> struct std::hash<SVF::CxtStmt>
492
+ template <> struct std::hash<SVF::CxtThreadStmt>
483
493
  {
484
- size_t operator()(const SVF::CxtStmt& cs) const
494
+ size_t operator()(const SVF::CxtThreadStmt& cts) const
485
495
  {
486
- std::hash<SVF::ICFGNode*> h;
487
- SVF::ICFGNode* inst = const_cast<SVF::ICFGNode*> (cs.getStmt());
488
- return h(inst);
496
+ std::hash<SVF::CxtStmt> csH;
497
+ SVF::Hash<std::pair<SVF::NodeID, size_t>> pairH;
498
+ return pairH({cts.getTid(), csH(cts)});
489
499
  }
490
500
  };
491
501
  template <> struct std::hash<SVF::CxtProc>
492
502
  {
493
- size_t operator()(const SVF::CxtProc& cs) const
503
+ size_t operator()(const SVF::CxtProc& cp) const
494
504
  {
495
- std::hash<SVF::FunObjVar*> h;
496
- SVF::FunObjVar* fun = const_cast<SVF::FunObjVar*> (cs.getProc());
497
- return h(fun);
505
+ std::hash<SVF::CallStrCxt> ch;
506
+ SVF::Hash<std::pair<SVF::NodeID, size_t>> pairH;
507
+ return pairH({cp.getProc()->getId(), ch(cp.getContext())});
498
508
  }
499
509
  };
500
510
  #endif /* INCLUDE_UTIL_CXTSTMT_H_ */
@@ -78,7 +78,7 @@ public:
78
78
 
79
79
  // DDAPass.cpp
80
80
  static const Option<u32_t> MaxPathLen;
81
- static const Option<u32_t> MaxContextLen;
81
+ static Option<u32_t> MaxContextLen;
82
82
  static const Option<u32_t> MaxStepInWrapper;
83
83
  static const Option<std::string> UserInputQuery;
84
84
  static const Option<bool> InsenRecur;
@@ -155,9 +155,6 @@ public:
155
155
  static const Option<bool> PrintInterLev;
156
156
  static const Option<bool> DoLockAnalysis;
157
157
 
158
- //MTAStat.cpp
159
- static const Option<bool> AllPairMHP;
160
-
161
158
  // TCT.cpp
162
159
  static const Option<bool> TCTDotGraph;
163
160
 
@@ -255,8 +252,17 @@ public:
255
252
  static const Option<bool> FileCheck;
256
253
  /// double free checker, Default: false
257
254
  static const Option<bool> DFreeCheck;
258
- /// data race checker, Default: false
259
- static const Option<bool> RaceCheck;
255
+ /// MTA: flow-sensitive (FSAM) main analysis; false = Andersen flow-insensitive base, Default: true
256
+ static const Option<bool> MTFlowSensitive;
257
+ /// MTA: dump the pointer-analysis and thread call graphs (ptacg/tcg.dot), Default: false
258
+ static const Option<bool> DumpMTAGraphs;
259
+
260
+ /// MTA slicing: slice before the FSAM main analysis (false = whole-program baseline), Default: true
261
+ static const Option<bool> EnableSlicing;
262
+ /// MTA slicing: one unified slice for ILA + FSPTA (single-pass baseline), Default: false
263
+ static const Option<bool> SlicingSingle;
264
+ /// MTA slicing: dump intermediate dot graphs (ICFG/TCG/SVFG/...), Default: false
265
+ static const Option<bool> SlicedDumpDot;
260
266
  /// if the access index of gepstmt is unknown, skip it, Default: false
261
267
  static const Option<bool> GepUnknownIdx;
262
268
  static const Option<bool> RunUncallFuncs;
@@ -41,6 +41,7 @@ class SVFVar;
41
41
  class ValVar;
42
42
  class ObjVar;
43
43
  class FunObjVar;
44
+ class PointerAnalysis;
44
45
 
45
46
  /*
46
47
  * ThreadAPI class contains interfaces for pthread programs
@@ -152,6 +153,17 @@ public:
152
153
  const SVFVar* getRetParmAtJoinedSite(const CallICFGNode *inst) const;
153
154
  //@}
154
155
 
156
+ /// If fork join the same thread
157
+ struct ForkJoinAliasCache
158
+ {
159
+ Map<const SVFVar*, NodeBS> joinedThreadObjects;
160
+ };
161
+
162
+ bool isAliasedForkJoin(PointerAnalysis* pta, const SVFVar* forkArg,
163
+ const SVFVar* joinArg) const;
164
+ bool isAliasedForkJoin(PointerAnalysis* pta, const SVFVar* forkArg,
165
+ const SVFVar* joinArg, ForkJoinAliasCache& cache) const;
166
+
155
167
 
156
168
  /// Return true if this call exits/terminate a thread
157
169
  //@{
@@ -81,7 +81,7 @@ if(NOT CMAKE_VERSION VERSION_LESS "3.23.0")
81
81
  FILE_SET "HEADERS"
82
82
  TYPE "HEADERS"
83
83
  BASE_DIRS "${_IMPORT_PREFIX}/include"
84
- FILES "${_IMPORT_PREFIX}/include/AE/Core/AbstractState.h" "${_IMPORT_PREFIX}/include/AE/Core/AbstractValue.h" "${_IMPORT_PREFIX}/include/AE/Core/AddressValue.h" "${_IMPORT_PREFIX}/include/AE/Core/ICFGWTO.h" "${_IMPORT_PREFIX}/include/AE/Core/IntervalValue.h" "${_IMPORT_PREFIX}/include/AE/Core/NumericValue.h" "${_IMPORT_PREFIX}/include/AE/Core/RelExeState.h" "${_IMPORT_PREFIX}/include/AE/Core/RelationSolver.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AEDetector.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AEStat.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AEWTO.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AbsExtAPI.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AbstractInterpretation.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/SparseAbstractInterpretation.h" "${_IMPORT_PREFIX}/include/CFL/CFGNormalizer.h" "${_IMPORT_PREFIX}/include/CFL/CFGrammar.h" "${_IMPORT_PREFIX}/include/CFL/CFLAlias.h" "${_IMPORT_PREFIX}/include/CFL/CFLBase.h" "${_IMPORT_PREFIX}/include/CFL/CFLGramGraphChecker.h" "${_IMPORT_PREFIX}/include/CFL/CFLGraphBuilder.h" "${_IMPORT_PREFIX}/include/CFL/CFLSVFGBuilder.h" "${_IMPORT_PREFIX}/include/CFL/CFLSolver.h" "${_IMPORT_PREFIX}/include/CFL/CFLStat.h" "${_IMPORT_PREFIX}/include/CFL/CFLVF.h" "${_IMPORT_PREFIX}/include/CFL/GrammarBuilder.h" "${_IMPORT_PREFIX}/include/DDA/ContextDDA.h" "${_IMPORT_PREFIX}/include/DDA/DDAClient.h" "${_IMPORT_PREFIX}/include/DDA/DDAPass.h" "${_IMPORT_PREFIX}/include/DDA/DDAStat.h" "${_IMPORT_PREFIX}/include/DDA/DDAVFSolver.h" "${_IMPORT_PREFIX}/include/DDA/FlowDDA.h" "${_IMPORT_PREFIX}/include/FastCluster/fastcluster.h" "${_IMPORT_PREFIX}/include/Graphs/BasicBlockG.h" "${_IMPORT_PREFIX}/include/Graphs/CDG.h" "${_IMPORT_PREFIX}/include/Graphs/CFLGraph.h" "${_IMPORT_PREFIX}/include/Graphs/CHG.h" "${_IMPORT_PREFIX}/include/Graphs/CallGraph.h" "${_IMPORT_PREFIX}/include/Graphs/ConsG.h" "${_IMPORT_PREFIX}/include/Graphs/ConsGEdge.h" "${_IMPORT_PREFIX}/include/Graphs/ConsGNode.h" "${_IMPORT_PREFIX}/include/Graphs/DOTGraphTraits.h" "${_IMPORT_PREFIX}/include/Graphs/GenericGraph.h" "${_IMPORT_PREFIX}/include/Graphs/GraphPrinter.h" "${_IMPORT_PREFIX}/include/Graphs/GraphTraits.h" "${_IMPORT_PREFIX}/include/Graphs/GraphWriter.h" "${_IMPORT_PREFIX}/include/Graphs/ICFG.h" "${_IMPORT_PREFIX}/include/Graphs/ICFGEdge.h" "${_IMPORT_PREFIX}/include/Graphs/ICFGNode.h" "${_IMPORT_PREFIX}/include/Graphs/ICFGStat.h" "${_IMPORT_PREFIX}/include/Graphs/IRGraph.h" "${_IMPORT_PREFIX}/include/Graphs/SCC.h" "${_IMPORT_PREFIX}/include/Graphs/SVFG.h" "${_IMPORT_PREFIX}/include/Graphs/SVFGEdge.h" "${_IMPORT_PREFIX}/include/Graphs/SVFGNode.h" "${_IMPORT_PREFIX}/include/Graphs/SVFGOPT.h" "${_IMPORT_PREFIX}/include/Graphs/SVFGStat.h" "${_IMPORT_PREFIX}/include/Graphs/ThreadCallGraph.h" "${_IMPORT_PREFIX}/include/Graphs/VFG.h" "${_IMPORT_PREFIX}/include/Graphs/VFGEdge.h" "${_IMPORT_PREFIX}/include/Graphs/VFGNode.h" "${_IMPORT_PREFIX}/include/Graphs/WTO.h" "${_IMPORT_PREFIX}/include/MSSA/MSSAMuChi.h" "${_IMPORT_PREFIX}/include/MSSA/MemPartition.h" "${_IMPORT_PREFIX}/include/MSSA/MemRegion.h" "${_IMPORT_PREFIX}/include/MSSA/MemSSA.h" "${_IMPORT_PREFIX}/include/MSSA/SVFGBuilder.h" "${_IMPORT_PREFIX}/include/MTA/LockAnalysis.h" "${_IMPORT_PREFIX}/include/MTA/MHP.h" "${_IMPORT_PREFIX}/include/MTA/MTA.h" "${_IMPORT_PREFIX}/include/MTA/MTAStat.h" "${_IMPORT_PREFIX}/include/MTA/TCT.h" "${_IMPORT_PREFIX}/include/MemoryModel/AbstractPointsToDS.h" "${_IMPORT_PREFIX}/include/MemoryModel/AccessPath.h" "${_IMPORT_PREFIX}/include/MemoryModel/ConditionalPT.h" "${_IMPORT_PREFIX}/include/MemoryModel/MutablePointsToDS.h" "${_IMPORT_PREFIX}/include/MemoryModel/PTATY.h" "${_IMPORT_PREFIX}/include/MemoryModel/PersistentPointsToCache.h" "${_IMPORT_PREFIX}/include/MemoryModel/PersistentPointsToDS.h" "${_IMPORT_PREFIX}/include/MemoryModel/PointerAnalysis.h" "${_IMPORT_PREFIX}/include/MemoryModel/PointerAnalysisImpl.h" "${_IMPORT_PREFIX}/include/MemoryModel/PointsTo.h" "${_IMPORT_PREFIX}/include/MemoryModel/SVFLoop.h" "${_IMPORT_PREFIX}/include/SABER/DoubleFreeChecker.h" "${_IMPORT_PREFIX}/include/SABER/FileChecker.h" "${_IMPORT_PREFIX}/include/SABER/LeakChecker.h" "${_IMPORT_PREFIX}/include/SABER/ProgSlice.h" "${_IMPORT_PREFIX}/include/SABER/SaberCheckerAPI.h" "${_IMPORT_PREFIX}/include/SABER/SaberCondAllocator.h" "${_IMPORT_PREFIX}/include/SABER/SaberSVFGBuilder.h" "${_IMPORT_PREFIX}/include/SABER/SrcSnkDDA.h" "${_IMPORT_PREFIX}/include/SABER/SrcSnkSolver.h" "${_IMPORT_PREFIX}/include/SVFIR/ObjTypeInfo.h" "${_IMPORT_PREFIX}/include/SVFIR/PAGBuilderFromFile.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFIR.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFStatements.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFType.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFValue.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFVariables.h" "${_IMPORT_PREFIX}/include/Util/BitVector.h" "${_IMPORT_PREFIX}/include/Util/CDGBuilder.h" "${_IMPORT_PREFIX}/include/Util/CallGraphBuilder.h" "${_IMPORT_PREFIX}/include/Util/Casting.h" "${_IMPORT_PREFIX}/include/Util/CommandLine.h" "${_IMPORT_PREFIX}/include/Util/CoreBitVector.h" "${_IMPORT_PREFIX}/include/Util/CxtStmt.h" "${_IMPORT_PREFIX}/include/Util/DPItem.h" "${_IMPORT_PREFIX}/include/Util/ExtAPI.h" "${_IMPORT_PREFIX}/include/Util/GeneralType.h" "${_IMPORT_PREFIX}/include/Util/GraphReachSolver.h" "${_IMPORT_PREFIX}/include/Util/Hash.h" "${_IMPORT_PREFIX}/include/Util/NodeIDAllocator.h" "${_IMPORT_PREFIX}/include/Util/Options.h" "${_IMPORT_PREFIX}/include/Util/PTAStat.h" "${_IMPORT_PREFIX}/include/Util/SVFBugReport.h" "${_IMPORT_PREFIX}/include/Util/SVFLoopAndDomInfo.h" "${_IMPORT_PREFIX}/include/Util/SVFStat.h" "${_IMPORT_PREFIX}/include/Util/SVFUtil.h" "${_IMPORT_PREFIX}/include/Util/SparseBitVector.h" "${_IMPORT_PREFIX}/include/Util/ThreadAPI.h" "${_IMPORT_PREFIX}/include/Util/WorkList.h" "${_IMPORT_PREFIX}/include/Util/Z3Expr.h" "${_IMPORT_PREFIX}/include/Util/cJSON.h" "${_IMPORT_PREFIX}/include/Util/iterator.h" "${_IMPORT_PREFIX}/include/Util/iterator_range.h" "${_IMPORT_PREFIX}/include/WPA/Andersen.h" "${_IMPORT_PREFIX}/include/WPA/AndersenPWC.h" "${_IMPORT_PREFIX}/include/WPA/CSC.h" "${_IMPORT_PREFIX}/include/WPA/FlowSensitive.h" "${_IMPORT_PREFIX}/include/WPA/Steensgaard.h" "${_IMPORT_PREFIX}/include/WPA/TypeAnalysis.h" "${_IMPORT_PREFIX}/include/WPA/VersionedFlowSensitive.h" "${_IMPORT_PREFIX}/include/WPA/WPAFSSolver.h" "${_IMPORT_PREFIX}/include/WPA/WPAPass.h" "${_IMPORT_PREFIX}/include/WPA/WPASolver.h" "${_IMPORT_PREFIX}/include/WPA/WPAStat.h"
84
+ FILES "${_IMPORT_PREFIX}/include/AE/Core/AbstractState.h" "${_IMPORT_PREFIX}/include/AE/Core/AbstractValue.h" "${_IMPORT_PREFIX}/include/AE/Core/AddressValue.h" "${_IMPORT_PREFIX}/include/AE/Core/ICFGWTO.h" "${_IMPORT_PREFIX}/include/AE/Core/IntervalValue.h" "${_IMPORT_PREFIX}/include/AE/Core/NumericValue.h" "${_IMPORT_PREFIX}/include/AE/Core/RelExeState.h" "${_IMPORT_PREFIX}/include/AE/Core/RelationSolver.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AEDetector.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AEStat.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AEWTO.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AbsExtAPI.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/AbstractInterpretation.h" "${_IMPORT_PREFIX}/include/AE/Svfexe/SparseAbstractInterpretation.h" "${_IMPORT_PREFIX}/include/CFL/CFGNormalizer.h" "${_IMPORT_PREFIX}/include/CFL/CFGrammar.h" "${_IMPORT_PREFIX}/include/CFL/CFLAlias.h" "${_IMPORT_PREFIX}/include/CFL/CFLBase.h" "${_IMPORT_PREFIX}/include/CFL/CFLGramGraphChecker.h" "${_IMPORT_PREFIX}/include/CFL/CFLGraphBuilder.h" "${_IMPORT_PREFIX}/include/CFL/CFLSVFGBuilder.h" "${_IMPORT_PREFIX}/include/CFL/CFLSolver.h" "${_IMPORT_PREFIX}/include/CFL/CFLStat.h" "${_IMPORT_PREFIX}/include/CFL/CFLVF.h" "${_IMPORT_PREFIX}/include/CFL/GrammarBuilder.h" "${_IMPORT_PREFIX}/include/DDA/ContextDDA.h" "${_IMPORT_PREFIX}/include/DDA/DDAClient.h" "${_IMPORT_PREFIX}/include/DDA/DDAPass.h" "${_IMPORT_PREFIX}/include/DDA/DDAStat.h" "${_IMPORT_PREFIX}/include/DDA/DDAVFSolver.h" "${_IMPORT_PREFIX}/include/DDA/FlowDDA.h" "${_IMPORT_PREFIX}/include/FastCluster/fastcluster.h" "${_IMPORT_PREFIX}/include/Graphs/BasicBlockG.h" "${_IMPORT_PREFIX}/include/Graphs/CDG.h" "${_IMPORT_PREFIX}/include/Graphs/CFLGraph.h" "${_IMPORT_PREFIX}/include/Graphs/CHG.h" "${_IMPORT_PREFIX}/include/Graphs/CallGraph.h" "${_IMPORT_PREFIX}/include/Graphs/ConsG.h" "${_IMPORT_PREFIX}/include/Graphs/ConsGEdge.h" "${_IMPORT_PREFIX}/include/Graphs/ConsGNode.h" "${_IMPORT_PREFIX}/include/Graphs/DOTGraphTraits.h" "${_IMPORT_PREFIX}/include/Graphs/GenericGraph.h" "${_IMPORT_PREFIX}/include/Graphs/GraphPrinter.h" "${_IMPORT_PREFIX}/include/Graphs/GraphTraits.h" "${_IMPORT_PREFIX}/include/Graphs/GraphWriter.h" "${_IMPORT_PREFIX}/include/Graphs/ICFG.h" "${_IMPORT_PREFIX}/include/Graphs/ICFGEdge.h" "${_IMPORT_PREFIX}/include/Graphs/ICFGNode.h" "${_IMPORT_PREFIX}/include/Graphs/ICFGStat.h" "${_IMPORT_PREFIX}/include/Graphs/IRGraph.h" "${_IMPORT_PREFIX}/include/Graphs/SCC.h" "${_IMPORT_PREFIX}/include/Graphs/SVFG.h" "${_IMPORT_PREFIX}/include/Graphs/SVFGEdge.h" "${_IMPORT_PREFIX}/include/Graphs/SVFGNode.h" "${_IMPORT_PREFIX}/include/Graphs/SVFGOPT.h" "${_IMPORT_PREFIX}/include/Graphs/SVFGStat.h" "${_IMPORT_PREFIX}/include/Graphs/SlicedGraphs.h" "${_IMPORT_PREFIX}/include/Graphs/ThreadCallGraph.h" "${_IMPORT_PREFIX}/include/Graphs/VFG.h" "${_IMPORT_PREFIX}/include/Graphs/VFGEdge.h" "${_IMPORT_PREFIX}/include/Graphs/VFGNode.h" "${_IMPORT_PREFIX}/include/Graphs/WTO.h" "${_IMPORT_PREFIX}/include/MSSA/MSSAMuChi.h" "${_IMPORT_PREFIX}/include/MSSA/MemPartition.h" "${_IMPORT_PREFIX}/include/MSSA/MemRegion.h" "${_IMPORT_PREFIX}/include/MSSA/MemSSA.h" "${_IMPORT_PREFIX}/include/MSSA/SVFGBuilder.h" "${_IMPORT_PREFIX}/include/MTA/FSMPTA.h" "${_IMPORT_PREFIX}/include/MTA/LockAnalysis.h" "${_IMPORT_PREFIX}/include/MTA/MHP.h" "${_IMPORT_PREFIX}/include/MTA/MTA.h" "${_IMPORT_PREFIX}/include/MTA/MTASVFGBuilder.h" "${_IMPORT_PREFIX}/include/MTA/MTASlicer.h" "${_IMPORT_PREFIX}/include/MTA/MTAStat.h" "${_IMPORT_PREFIX}/include/MTA/TCT.h" "${_IMPORT_PREFIX}/include/MemoryModel/AbstractPointsToDS.h" "${_IMPORT_PREFIX}/include/MemoryModel/AccessPath.h" "${_IMPORT_PREFIX}/include/MemoryModel/ConditionalPT.h" "${_IMPORT_PREFIX}/include/MemoryModel/MutablePointsToDS.h" "${_IMPORT_PREFIX}/include/MemoryModel/PTATY.h" "${_IMPORT_PREFIX}/include/MemoryModel/PersistentPointsToCache.h" "${_IMPORT_PREFIX}/include/MemoryModel/PersistentPointsToDS.h" "${_IMPORT_PREFIX}/include/MemoryModel/PointerAnalysis.h" "${_IMPORT_PREFIX}/include/MemoryModel/PointerAnalysisImpl.h" "${_IMPORT_PREFIX}/include/MemoryModel/PointsTo.h" "${_IMPORT_PREFIX}/include/MemoryModel/SVFLoop.h" "${_IMPORT_PREFIX}/include/SABER/DoubleFreeChecker.h" "${_IMPORT_PREFIX}/include/SABER/FileChecker.h" "${_IMPORT_PREFIX}/include/SABER/LeakChecker.h" "${_IMPORT_PREFIX}/include/SABER/ProgSlice.h" "${_IMPORT_PREFIX}/include/SABER/SaberCheckerAPI.h" "${_IMPORT_PREFIX}/include/SABER/SaberCondAllocator.h" "${_IMPORT_PREFIX}/include/SABER/SaberSVFGBuilder.h" "${_IMPORT_PREFIX}/include/SABER/SrcSnkDDA.h" "${_IMPORT_PREFIX}/include/SABER/SrcSnkSolver.h" "${_IMPORT_PREFIX}/include/SVFIR/ObjTypeInfo.h" "${_IMPORT_PREFIX}/include/SVFIR/PAGBuilderFromFile.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFIR.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFStatements.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFType.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFValue.h" "${_IMPORT_PREFIX}/include/SVFIR/SVFVariables.h" "${_IMPORT_PREFIX}/include/Util/BitVector.h" "${_IMPORT_PREFIX}/include/Util/CDGBuilder.h" "${_IMPORT_PREFIX}/include/Util/CallGraphBuilder.h" "${_IMPORT_PREFIX}/include/Util/Casting.h" "${_IMPORT_PREFIX}/include/Util/CommandLine.h" "${_IMPORT_PREFIX}/include/Util/CoreBitVector.h" "${_IMPORT_PREFIX}/include/Util/CxtStmt.h" "${_IMPORT_PREFIX}/include/Util/DPItem.h" "${_IMPORT_PREFIX}/include/Util/ExtAPI.h" "${_IMPORT_PREFIX}/include/Util/GeneralType.h" "${_IMPORT_PREFIX}/include/Util/GraphReachSolver.h" "${_IMPORT_PREFIX}/include/Util/Hash.h" "${_IMPORT_PREFIX}/include/Util/NodeIDAllocator.h" "${_IMPORT_PREFIX}/include/Util/Options.h" "${_IMPORT_PREFIX}/include/Util/PTAStat.h" "${_IMPORT_PREFIX}/include/Util/SVFBugReport.h" "${_IMPORT_PREFIX}/include/Util/SVFLoopAndDomInfo.h" "${_IMPORT_PREFIX}/include/Util/SVFStat.h" "${_IMPORT_PREFIX}/include/Util/SVFUtil.h" "${_IMPORT_PREFIX}/include/Util/SparseBitVector.h" "${_IMPORT_PREFIX}/include/Util/ThreadAPI.h" "${_IMPORT_PREFIX}/include/Util/WorkList.h" "${_IMPORT_PREFIX}/include/Util/Z3Expr.h" "${_IMPORT_PREFIX}/include/Util/cJSON.h" "${_IMPORT_PREFIX}/include/Util/iterator.h" "${_IMPORT_PREFIX}/include/Util/iterator_range.h" "${_IMPORT_PREFIX}/include/WPA/Andersen.h" "${_IMPORT_PREFIX}/include/WPA/AndersenPWC.h" "${_IMPORT_PREFIX}/include/WPA/CSC.h" "${_IMPORT_PREFIX}/include/WPA/FlowSensitive.h" "${_IMPORT_PREFIX}/include/WPA/Steensgaard.h" "${_IMPORT_PREFIX}/include/WPA/TypeAnalysis.h" "${_IMPORT_PREFIX}/include/WPA/VersionedFlowSensitive.h" "${_IMPORT_PREFIX}/include/WPA/WPAFSSolver.h" "${_IMPORT_PREFIX}/include/WPA/WPAPass.h" "${_IMPORT_PREFIX}/include/WPA/WPASolver.h" "${_IMPORT_PREFIX}/include/WPA/WPAStat.h"
85
85
  )
86
86
  else()
87
87
  set_property(TARGET SVF::SvfCore
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svf-lib",
3
- "version": "1.0.2677",
3
+ "version": "1.0.2678",
4
4
  "description": "SVF's npm support",
5
5
  "main": "index.js",
6
6
  "scripts": {