svf-lib 1.0.1684 → 1.0.1685
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.
|
Binary file
|
|
Binary file
|
|
@@ -84,7 +84,10 @@ public:
|
|
|
84
84
|
|
|
85
85
|
virtual const std::string toString() const
|
|
86
86
|
{
|
|
87
|
-
|
|
87
|
+
std::string str;
|
|
88
|
+
std::stringstream rawstr(str);
|
|
89
|
+
rawstr << "CFBBGEdge: [CFBBGNode" << getDstID() << " <-- CFBBGNode" << getSrcID() << "]\t";
|
|
90
|
+
return rawstr.str();
|
|
88
91
|
}
|
|
89
92
|
|
|
90
93
|
inline const ICFGEdge *getICFGEdge() const
|
|
@@ -578,13 +581,21 @@ struct DOTGraphTraits<SVF::CFBasicBlockGraph *> : public DOTGraphTraits<SVF::SVF
|
|
|
578
581
|
{
|
|
579
582
|
CFBasicBlockEdge* edge = *(EI.getCurrent());
|
|
580
583
|
assert(edge && "No edge found!!");
|
|
581
|
-
if (
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
584
|
+
if (edge->getICFGEdge())
|
|
585
|
+
{
|
|
586
|
+
if (SVFUtil::isa<CallCFGEdge>(edge->getICFGEdge()))
|
|
587
|
+
{
|
|
588
|
+
return "style=solid,color=red";
|
|
589
|
+
}
|
|
590
|
+
else if (SVFUtil::isa<RetCFGEdge>(edge->getICFGEdge()))
|
|
591
|
+
return "style=solid,color=blue";
|
|
592
|
+
else
|
|
593
|
+
return "style=solid";
|
|
594
|
+
}
|
|
585
595
|
else
|
|
596
|
+
{
|
|
586
597
|
return "style=solid";
|
|
587
|
-
|
|
598
|
+
}
|
|
588
599
|
}
|
|
589
600
|
|
|
590
601
|
template<class EdgeIter>
|
|
@@ -595,11 +606,13 @@ struct DOTGraphTraits<SVF::CFBasicBlockGraph *> : public DOTGraphTraits<SVF::SVF
|
|
|
595
606
|
|
|
596
607
|
std::string str;
|
|
597
608
|
std::stringstream rawstr(str);
|
|
598
|
-
if (
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
609
|
+
if (edge->getICFGEdge())
|
|
610
|
+
{
|
|
611
|
+
if (const CallCFGEdge* dirCall = SVFUtil::dyn_cast<CallCFGEdge>(edge->getICFGEdge()))
|
|
612
|
+
rawstr << dirCall->getCallSite();
|
|
613
|
+
else if (const RetCFGEdge* dirRet = SVFUtil::dyn_cast<RetCFGEdge>(edge->getICFGEdge()))
|
|
614
|
+
rawstr << dirRet->getCallSite();
|
|
615
|
+
}
|
|
603
616
|
return rawstr.str();
|
|
604
617
|
}
|
|
605
618
|
};
|