Predator  [unstable] git snapshot
Data Structures
Here are the data structures with brief descriptions:
[detail level 123]
oNCodeStorageObject model that describes the analyzed code on the input
|oNCallGraph
|oNPointsTo
|oCVarHigh-level variable representation
|oCVarDbLookup container for set of Var objects
|oCTypeDbType lookup table
|oCNameDbName to UID mapping for global/static symbols
|oCKillVarValue type describing a single 'kill variable' hint
|oCltKillVarFIXME: inserting <id,0> and <id,1> could break the consistency of std::set
|oCInsnHigh-level representation of an intermediate code instruction
|oCBlockBasic block - a single node in ControlFlow graph
|oCControlFlowControl flow graph - an easy to analyse representation of the intermediate code
|oCFncFunction definition
|oCFncDbLookup container for set of Fnc objects
|\CStorageValue type representing the whole serialised model of code
oNIR
|\CRangeClosed interval over integral domain
oNTraceDirected acyclic graph of the symbolic execution trace
|oCNodeBaseAbstract base for Node and NodeHandle (externally not much useful)
|oCNodeAbstract node of the symbolic execution trace graph
|oCNodeHandleUseful to prevent a trace sub-graph from being destroyed too early
|oCTransientNodeUsed to explicitly highlight trace graph nodes that should not be reachable
|oCRootNodeRoot node of the trace graph (usually a call of the root function)
|oCInsnNodeTrace graph node that represents a non-terminal instruction
|oCCondNodeTrace graph node that represents a conditional insn being traversed
|oCAbstractionNodeTrace graph node that represents a single abstraction step
|oCConcretizationNodeTrace graph node that represents a single concretization step
|oCSpliceOutNodeTrace graph node that represents a single splice-out operation
|oCJoinNodeTrace graph node that represents a single join operation
|oCCloneNodeTrace graph nodes inserted automatically per each SymHeap clone operation
|oCCallEntryNodeTrace graph node representing a call entry point
|oCCallCacheHitNodeTrace graph node representing a cached call result
|oCCallFrameNodeTrace graph node representing a call frame
|oCCallDoneNodeTrace graph node representing a call result
|oCImportGlVarNodeTrace graph node that represents a single call of importGlVar()
|oCMsgNodeTrace graph node representing an error/warning message
|oCUserNodeTrace graph node representing something important for the user
|oCEndPointConsolidatorContainer maintaining a set of trace graph end-points
|oCGraphProxyContainer maintaining a set of trace graphs being built on the fly
|\CGlobalsSingleton holding global GraphProxy (may be extended later)
oCBindingOffTuple of binding offsets assigned to abstract objects
oCBlockScheduler
oCCallInstBundles static identification of a function with its call instance number
oCcl_accessorAccessor definition, available for some operands
oCcl_code_listenerListener object - the core part of this interface
oCcl_cstConstant, in the C language terminology: literal
oCcl_init_dataCollection of call-backs for writing various types of messages
oCcl_initializerInitializer, used mainly for global/static variables
oCcl_insnSingle instruction definition
oCcl_locGeneric location info
oCcl_operandGeneric operand
oCcl_typeType definition available for each operand
oCcl_type_itemUsed for nesting types into another (composite) type
oCcl_varVariable (local, global, fnc argument, register, etc.)
oCCltStackItem
oCCmpOpTraits
oCCustomValueRepresentation of a custom value, such as integer literal, or code pointer
oCCustomValueData
oCCVarBundles static identification of a variable with its instance number
oCEntStore
oCFldHandle
oCFldListUgly, but typedefs do not support partial declarations
oCIntervalArenaAd-hoc implementation; wastes memory, performance, and human resources
oCIPendingCountProvider
oCIStatsProvider
oCLeakMonitor
oCPlotEnumerator
oCProtectionIntrusionTemporarily disable protected mode of SymHeap in a debug build
oCPtrHandle
oCRefCntLib
oCRefCntLib< RCO_NON_VIRT >
oCRefCntLib< RCO_VIRTUAL >
oCRefCntLibBase
oCRefCounter
oCSignalCatcher
oCSymBackTraceBacktrace management
oCSymCallCachePersistent cache for results of fncs called during the symbolic execution
oCSymCallCtxFunction call context, which represents a cache entry of SymCallCache
oCSymExecCoreExtension of SymProc, now only used by SymExecEngine::execNontermInsn()
oCSymExecCoreParams
oCSymExecParams
oCSymHeapExtension of SymHeapCore dealing with abstract objects (list segments etc.)
oCSymHeapCoreSymHeapCore - the elementary representation of the state of program memory
oCSymHeapList
oCSymHeapUnionSymbolic state represented as a union of SymHeap objects (aka disjuncts)
oCSymPairMap
oCSymPairSetSymmetric relation
oCSymProcLayer on top of SymHeap, providing some higher-level operations
oCSymState
oCSymStateMapHigher-level container that maintains a SymStateMarked object per each basic block
oCSymStateMarkedExtension of SymStateWithJoin, which distinguishes among already processed symbolic heaps and symbolic heaps scheduled for processing
oCSymStateWithJoin
oCUniformBlockOnly uninitialized or nullified blocks; generic arrays and strings need more
oCWorkListReally stupid, but easy to use, DFS implementation
oCWorkListLib
oCWorkListLib< T, std::queue< T > >
\CWorkListLib< T, std::stack< T > >