decompiler  1.0.0
Classes
coreaction.hh File Reference

Core decompilation actions which are indepedent of any particular architecture. More...

#include "ruleaction.hh"
#include "blockaction.hh"
#include "funcdata.hh"

Classes

class  ActionStart
 Gather raw p-code for a function. More...
 
class  ActionStop
 Do any post-processing after decompilation. More...
 
class  ActionStartCleanUp
 Start clean up after main transform phase. More...
 
class  ActionStartTypes
 Allow type recovery to start happening. More...
 
class  ActionStackPtrFlow
 Analyze change to the stack pointer across sub-function calls. More...
 
class  ActionLaneDivide
 Find Varnodes with a vectorized lane scheme and attempt to split the lanes. More...
 
class  ActionSegmentize
 Make sure pointers into segmented spaces have the correct form. More...
 
class  ActionForceGoto
 Apply any overridden forced gotos. More...
 
class  ActionMultiCse
 Perform Common Sub-expression Elimination on CPUI_MULTIEQUAL ops. More...
 
class  ActionShadowVar
 Check for one CPUI_MULTIEQUAL input set defining more than one Varnode. More...
 
class  ActionConstantPtr
 Check for constants, with pointer type, that correspond to global symbols. More...
 
class  ActionDeindirect
 Eliminate locally constant indirect calls. More...
 
class  ActionVarnodeProps
 Transform based on Varnode properties, such as read-only and volatile. More...
 
class  ActionDirectWrite
 Mark Varnodes built out of legal parameters. More...
 
class  ActionConstbase
 Search for input Varnodes that have been officially provided constant values. More...
 
class  ActionSpacebase
 Mark Varnode objects that hold stack-pointer values and set-up special data-type. More...
 
class  ActionHeritage
 Build Static Single Assignment (SSA) representation for function. More...
 
class  ActionNonzeroMask
 Calculate the non-zero mask property on all Varnode objects. More...
 
class  ActionSetCasts
 Fill-in CPUI_CAST p-code ops as required by the casting strategy. More...
 
class  ActionAssignHigh
 Assign initial high-level HighVariable objects to each Varnode. More...
 
class  ActionMarkIndirectOnly
 Mark illegal Varnode inputs used only in CPUI_INDIRECT ops. More...
 
class  ActionMergeRequired
 Make required Varnode merges as dictated by CPUI_MULTIEQUAL, CPUI_INDIRECT, and addrtied property. More...
 
class  ActionMergeAdjacent
 Try to merge an op's input Varnode to its output, if they are at the same storage location. More...
 
class  ActionMergeCopy
 Try to merge the input and output Varnodes of a CPUI_COPY op. More...
 
class  ActionMergeMultiEntry
 Try to merge Varnodes specified by Symbols with multiple SymbolEntrys. More...
 
class  ActionMergeType
 Try to merge Varnodes of the same type (if they don't hold different values at the same time) More...
 
class  ActionMarkExplicit
 Find explicit Varnodes: Varnodes that have an explicit token representing them in the output. More...
 
struct  ActionMarkExplicit::OpStackElement
 This class holds a single entry in a stack used to traverse Varnode expressions. More...
 
class  ActionMarkImplied
 Mark all the implied Varnode objects, which will have no explicit token in the output. More...
 
struct  ActionMarkImplied::DescTreeElement
 This class holds a single entry in a stack used to forward traverse Varnode expressions. More...
 
class  ActionNameVars
 Choose names for all high-level variables (HighVariables) More...
 
struct  ActionNameVars::OpRecommend
 This class is a record in a database used to store and lookup potential names. More...
 
class  ActionUnreachable
 Remove unreachable blocks. More...
 
class  ActionDoNothing
 Remove blocks that do nothing. More...
 
class  ActionRedundBranch
 Get rid of redundant branches: duplicate edges between the same input and output block. More...
 
class  ActionDeterminedBranch
 Remove conditional branches if the condition is constant. More...
 
class  ActionDeadCode
 Dead code removal. Eliminate dead p-code ops. More...
 
class  ActionConditionalConst
 Propagate conditional constants. More...
 
class  ActionSwitchNorm
 Normalize jump-table construction. More...
 
class  ActionNormalizeSetup
 Prepare function prototypes for "normalize" simplification. More...
 
class  ActionPrototypeTypes
 Lay down locked input and output data-type information. More...
 
class  ActionDefaultParams
 Find a prototype for each sub-function. More...
 
class  ActionExtraPopSetup
 Define formal link between stack-pointer values before and after sub-function calls. More...
 
class  ActionFuncLink
 Prepare for data-flow analysis of function parameters. More...
 
class  ActionFuncLinkOutOnly
 Prepare for data-flow analysis of function parameters, when recovery isn't required. More...
 
class  ActionParamDouble
 Deal with situations that look like double precision parameters. More...
 
class  ActionActiveParam
 Determine active parameters to sub-functions. More...
 
class  ActionActiveReturn
 Determine which sub-functions have active output Varnodes. More...
 
class  ActionReturnRecovery
 Determine data-flow holding the return value of the function. More...
 
class  ActionRestrictLocal
 Restrict possible range of local variables. More...
 
class  ActionLikelyTrash
 Get rid of registers with trash values. More...
 
class  ActionRestructureVarnode
 Create symbols that map out the local stack-frame for the function. More...
 
class  ActionRestructureHigh
 Create symbols that map out the local stack-frame for the function. More...
 
class  ActionMapGlobals
 Create symbols for any discovered global variables in the function. More...
 
class  ActionInputPrototype
 Calculate the prototype for the function. More...
 
class  ActionOutputPrototype
 Set the (already) recovered output data-type as a formal part of the prototype. More...
 
class  ActionUnjustifiedParams
 Adjust improperly justified parameters. More...
 
class  ActionInferTypes
 Infer and propagate data-types. More...
 
class  ActionHideShadow
 Locate shadow Varnodes and adjust them so they are hidden. More...
 
class  ActionDominantCopy
 Replace COPYs from the same source with a single dominant COPY. More...
 
class  ActionCopyMarker
 Mark COPY operations between Varnodes representing the object as non-printing. More...
 
class  ActionDynamicMapping
 Attach dynamically mapped symbols to Varnodes in time for data-type propagation. More...
 
class  ActionDynamicSymbols
 Make final attachments of dynamically mapped symbols to Varnodes. More...
 
class  ActionPrototypeWarnings
 Add warnings for prototypes that aren't modeled properly. More...
 
class  PropagationState
 A class that holds a data-type traversal state during type propagation. More...
 
class  PcodeOpEdge
 Class representing a term in an additive expression. More...
 
class  TermOrder
 A class for ordering Varnode terms in an additive expression. More...
 

Detailed Description

Core decompilation actions which are indepedent of any particular architecture.

These are the internal actions. They are guaranteed to not to invalidate covers. (if they do they must check the covers themselves)