ClearBlue
Data Structures | Public Types | Public Member Functions | Friends
SymbolicExprGraph Class Reference

Data Structures

class  ArgumentIterator
 
struct  CDGCond
 
class  ReturnIterator
 

Public Types

typedef std::vector< SEGCallSite * >::const_iterator SEGCallSiteIterator
 

Public Member Functions

SEGObjectfindSEGObject (int SEGObjID)
 
size_t getNumCommonArgument () const
 
size_t getNumPseudoArgument () const
 
size_t getNumVarArgument () const
 
size_t getNumPseudoReturn () const
 
bool hasCommonReturnNode () const
 
const SEGCommonReturnNodegetCommonReturn () const
 
const SEGPseudoReturnNodegetPseudoReturn (size_t Index) const
 
const SEGCommonArgumentNodegetCommonArgument (size_t Index) const
 
const SEGPseudoArgumentNodegetPseudoArgument (size_t Index) const
 
const SEGVarArgumentNodegetVarArgument (size_t Index) const
 
int getSEGIndex ()
 
bool isSummaryArgument (const SEGNodeBase *Node) const
 
int getSummaryArgumentAPDepth (const SEGNodeBase *Node) const
 
std::unordered_set< SEGNodeBase * > * getSummaryArgument (int APDepth) const
 
bool isSummaryReturn (const SEGNodeBase *Node) const
 
int getSummaryReturnAPDepth (const SEGNodeBase *Node) const
 
std::unordered_set< SEGNodeBase * > * getSummaryReturn (int APDepth) const
 
bool isDirectlyPassedToCaller (const SEGNodeBase *Node) const
 
bool isDirectlyPassedFromCaller (const SEGNodeBase *Node) const
 
 SymbolicExprGraph (Function *)
 
 ~SymbolicExprGraph ()
 
Function * getBaseFunc () const
 
template<class SiteTy >
SiteTy * findSite (Instruction *I) const
 
template<class SiteTy >
SiteTy * findSite (SEGValue *sValue) const
 Get site node based on Value and specific comparison method. More...
 
SEGOperandNodefindNode (Value *) const
 
SEGOperandNodefindNode (SEGValue *) const
 Get operand node based on Value. More...
 
SEGRegionNodefindUnitRegion (SEGNodeBase *cond_node, bool cond) const
 Return nullptr if the node does not exist.
 
SEGRegionNodefindAndRegion (SEGRegionNode *region1, SEGRegionNode *region2) const
 Return nullptr if the node does not exist.
 
SEGRegionNodefindOrRegion (SEGRegionNode *region1, SEGRegionNode *region2) const
 Return nullptr if the node does not exist.
 
SEGRegionNodefindNotRegion (SEGRegionNode *region1) const
 Return nullptr if the node does not exist.
 
const std::set< CDGCond > * getBlockCond (WrappedBasicBlock *BB) const
 
const std::set< CDGCond > * getBlockCond (BasicBlock *BB) const
 
void dot (const char *FileName) const
 Dot this graph to a file with filename.
 
void dot (std::vector< const SEGNodeBase * > Srcs, const char *FileName) const
 Dot value flow from the given source nodes.
 
void validate ()
 validate this is a DAG
 
SEGRegionNodefindOrCreateRegionForBB (BasicBlock *BB)
 
SEGRegionNodefindOrCreateRegionForBB (WrappedBasicBlock *BB)
 
SEGRegionNodefindRegionForBB (BasicBlock *BB) const
 
SEGRegionNodefindRegionForBB (WrappedBasicBlock *BB) const
 
std::unordered_map< Value *, SEGOperandNode * >::const_iterator value_node_begin () const
 
std::unordered_map< Value *, SEGOperandNode * >::const_iterator value_node_end () const
 
std::vector< std::pair< Value *, SEGOperandNode * > >::const_iterator value_node_pair_begin () const
 
std::vector< std::pair< Value *, SEGOperandNode * > >::const_iterator value_node_pair_end () const
 
std::set< SEGNodeBase * >::const_iterator non_value_node_begin () const
 
std::set< SEGNodeBase * >::const_iterator non_value_node_end () const
 
std::map< Instruction *, SEGSiteBase * >::const_iterator inst_site_begin () const
 
std::map< Instruction *, SEGSiteBase * >::const_iterator inst_site_end () const
 
std::map< std::pair< Instruction *, Value * >, SEGStoreMemNode * >::const_iterator store_mem_node_begin () const
 
std::map< std::pair< Instruction *, Value * >, SEGStoreMemNode * >::const_iterator store_mem_node_end () const
 
std::map< Instruction *, SEGSiteBase * >::const_iterator site_begin () const
 
std::map< Instruction *, SEGSiteBase * >::const_iterator site_end () const
 
ReturnIterator return_begin () const
 
ReturnIterator return_end () const
 
ReturnIterator pseudo_return_begin () const
 
ReturnIterator pseudo_return_end () const
 
ArgumentIterator arg_begin () const
 
ArgumentIterator arg_end () const
 
ArgumentIterator common_arg_begin () const
 
ArgumentIterator common_arg_end () const
 
ArgumentIterator pseudo_arg_begin () const
 
ArgumentIterator pseudo_arg_end () const
 
ArgumentIterator var_arg_begin () const
 
ArgumentIterator var_arg_end () const
 
SEGCallSiteIterator seg_callsite_begin () const
 
SEGCallSiteIterator seg_callsite_end () const
 
 SymbolicExprGraph (PersistedSymbolicExprGraph *PersistedSEG)
 
bool compareLoadedSEG (const SymbolicExprGraph *LoadedSEG) const
 
bool comparePersistedSEG (PersistedSymbolicExprGraph *PersistedSEG)
 
const WrappedModule * getWrappedMod () const
 
WrappedFunction * getWrappedBaseFunc () const
 
int getSEGObjectID (const SEGObject *SEGObj) const
 

Friends

class SEGRegionNode
 
class SymbolicExprGraphBuilder
 
class IntraFalcon
 
class MantaIntraFalcon
 
class PTGraph
 
class SEGObject
 
class OCValueFlowBuilder
 
class FalconPlus::AbstractCond
 
class FalconPlus::RegionCond
 
class FalconPlus::FreeCond
 
class FalconPlus::BitCondVec
 
class FalconPlus::IntraFalcon
 
class FalconPlus::AbstractCondPtr
 
class FalconPlus::FalconAA
 

Constructor & Destructor Documentation

◆ ~SymbolicExprGraph()

SymbolicExprGraph::~SymbolicExprGraph ( )

for persistence usage

◆ SymbolicExprGraph()

SymbolicExprGraph::SymbolicExprGraph ( PersistedSymbolicExprGraph *  PersistedSEG)
explicit

initialize the data dependence relation among the seg objects, and initialize some embedded seg objects

further initialize the segobjects using those seg objects in SEGObjectMap

initialize the control dependence graph

Here is the call graph for this function:

Member Function Documentation

◆ findNode() [1/2]

SEGOperandNode * SymbolicExprGraph::findNode ( SEGValue sValue) const

Get operand node based on Value.

Parameters
sValueSEGValue to be compared
Here is the call graph for this function:

◆ findNode() [2/2]

SEGOperandNode * SymbolicExprGraph::findNode ( Value *  Val) const

Find node only. Return nullptr if the node does not exist

◆ findSEGObject()

SEGObject * SymbolicExprGraph::findSEGObject ( int  SEGObjID)

Find the corresponding SEG Object with specified ID (For persisitence usage only!)

◆ findSite() [1/2]

template<class SiteTy >
SiteTy* SymbolicExprGraph::findSite ( Instruction *  I) const
inline

find a special use site according to the specified type

◆ findSite() [2/2]

template<class SiteTy >
SiteTy* SymbolicExprGraph::findSite ( SEGValue sValue) const
inline

Get site node based on Value and specific comparison method.

Template Parameters
SiteTythe specific site type that is applied to site node
Parameters
sValueSEGValue to be compared
Here is the call graph for this function:

◆ getBlockCond()

const std::set<CDGCond>* SymbolicExprGraph::getBlockCond ( WrappedBasicBlock *  BB) const
inline

See SymbolicExprGraph::blockCondMap. Note that it will return nullptr, if blockCondMap does not contain b.


The documentation for this class was generated from the following files: