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