svf-lib 1.0.1365 → 1.0.1367
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/lib/libSvf.a +0 -0
- package/SVF-linux/include/AbstractExecution/IntervalExeState.h +2 -4
- package/SVF-linux/include/DDA/DDAVFSolver.h +1 -3
- package/SVF-linux/include/MTA/LockAnalysis.h +1 -3
- package/SVF-linux/include/MTA/MHP.h +2 -6
- package/SVF-linux/include/Util/CommandLine.h +7 -4
- package/package.json +1 -1
|
Binary file
|
|
@@ -387,10 +387,8 @@ public:
|
|
|
387
387
|
bool operator<(const IntervalExeState &rhs) const
|
|
388
388
|
{
|
|
389
389
|
// judge from path constraint
|
|
390
|
-
|
|
391
|
-
lessThanVarToValMap(_locToItvVal, rhs.getLocToVal()))
|
|
392
|
-
return true;
|
|
393
|
-
return false;
|
|
390
|
+
return (lessThanVarToValMap(_varToItvVal, rhs.getVarToVal()) ||
|
|
391
|
+
lessThanVarToValMap(_locToItvVal, rhs.getLocToVal()));
|
|
394
392
|
}
|
|
395
393
|
|
|
396
394
|
|
|
@@ -480,9 +480,7 @@ protected:
|
|
|
480
480
|
/// If the points-to contain the object obj, we could move forward along indirect value-flow edge
|
|
481
481
|
virtual inline bool propagateViaObj(const CVar& storeObj, const CVar& loadObj)
|
|
482
482
|
{
|
|
483
|
-
|
|
484
|
-
return true;
|
|
485
|
-
return false;
|
|
483
|
+
return getPtrNodeID(storeObj) == getPtrNodeID(loadObj);
|
|
486
484
|
}
|
|
487
485
|
/// resolve function pointer
|
|
488
486
|
void resolveFunPtr(const DPIm& dpm)
|
|
@@ -342,18 +342,14 @@ public:
|
|
|
342
342
|
{
|
|
343
343
|
bool nonhp = HBPair.find(std::make_pair(tid1,tid2))!=HBPair.end();
|
|
344
344
|
bool hp = HPPair.find(std::make_pair(tid1,tid2))!=HPPair.end();
|
|
345
|
-
|
|
346
|
-
return true;
|
|
347
|
-
return false;
|
|
345
|
+
return nonhp && !hp;
|
|
348
346
|
}
|
|
349
347
|
/// Whether t1 fully joins t2
|
|
350
348
|
inline bool isFullJoin(NodeID tid1, NodeID tid2)
|
|
351
349
|
{
|
|
352
350
|
bool full = fullJoin.find(std::make_pair(tid1,tid2))!=fullJoin.end();
|
|
353
351
|
bool partial = partialJoin.find(std::make_pair(tid1,tid2))!=partialJoin.end();
|
|
354
|
-
|
|
355
|
-
return true;
|
|
356
|
-
return false;
|
|
352
|
+
return full && !partial;
|
|
357
353
|
}
|
|
358
354
|
|
|
359
355
|
/// Get exit instruction of the start routine function of tid's parent thread
|
|
@@ -360,11 +360,14 @@ public:
|
|
|
360
360
|
|
|
361
361
|
private:
|
|
362
362
|
// Convert string to boolean, returning whether we succeeded.
|
|
363
|
-
static bool fromString(const std::string s, bool
|
|
363
|
+
static bool fromString(const std::string& s, bool& value)
|
|
364
364
|
{
|
|
365
|
-
if (s == "true")
|
|
366
|
-
|
|
367
|
-
else
|
|
365
|
+
if (s == "true")
|
|
366
|
+
value = true;
|
|
367
|
+
else if (s == "false")
|
|
368
|
+
value = false;
|
|
369
|
+
else
|
|
370
|
+
return false;
|
|
368
371
|
return true;
|
|
369
372
|
}
|
|
370
373
|
|