24 #ifndef __CORE_ACTION__ 25 #define __CORE_ACTION__ 84 bool analysis_finished;
86 static bool isStackRelative(
Varnode *spcbasein,
Varnode *vn,uintb &constval);
238 bool propagateIndirect;
417 struct OpStackElement {
423 static int4 baseExplicit(
Varnode *vn,int4 maxref);
424 static int4 multipleInteraction(vector<Varnode *> &multlist);
425 static void processMultiplier(
Varnode *vn,int4 max);
439 struct DescTreeElement {
441 list<PcodeOp *>::const_iterator desciter;
446 static bool isPossibleAlias(
Varnode *vn1,
Varnode *vn2,int4 depth);
465 static void lookForBadJumpTables(
Funcdata &data);
466 static void lookForFuncParamNames(
Funcdata &data,
const vector<Varnode *> &varlist);
467 static void linkSpacebaseSymbol(
Varnode *vn,
Funcdata &data,vector<Varnode *> &namerec);
468 static void linkSymbols(
Funcdata &data,vector<Varnode *> &namerec);
541 static void pushConsumed(uintb val,
Varnode *vn,vector<Varnode *> &worklist);
542 static void propagateConsumed(vector<Varnode *> &worklist);
544 static void markConsumedParameters(
FuncCallSpecs *fc,vector<Varnode *> &worklist);
545 static uintb gatherConsumedReturn(
Funcdata &data);
798 static uint4 countMarks(
PcodeOp *op);
799 static bool traceTrash(
Varnode *vn,vector<PcodeOp *> &indlist);
921 #ifdef TYPEPROP_DEBUG 925 static void buildLocaltypes(
Funcdata &data);
926 static bool writeBack(
Funcdata &data);
927 static int4 propagateAddPointer(
PcodeOp *op,int4 slot);
929 static bool propagateGoodEdge(
PcodeOp *op,int4 inslot,int4 outslot,
Varnode *invn);
930 static bool propagateTypeEdge(
TypeFactory *typegrp,
PcodeOp *op,int4 inslot,int4 outslot);
935 static void propagateAcrossReturns(
Funcdata &data);
1028 list<PcodeOp *>::const_iterator
iter;
1058 vector<PcodeOpEdge> terms;
1059 vector<PcodeOpEdge *> sorter;
1065 void sortTerms(
void);
1066 const vector<PcodeOpEdge *> &
getSort(
void) {
return sorter; }
ActionRedundBranch(const string &g)
Constructor.
Definition: coreaction.hh:503
PcodeOp * op
The current descendant or the defining PcodeOp.
Definition: coreaction.hh:1029
void mergeAdjacent(void)
Speculatively merge Varnodes that are input/output to the same p-code op.
Definition: merge.cc:881
void stopProcessing(void)
Mark that processing has completed for this function.
Definition: funcdata.cc:144
A region where processor data is stored.
Definition: space.hh:73
A class for analyzing parameters to a sub-function call.
Definition: fspec.hh:1436
Make sure pointers into segmented spaces have the correct form.
Definition: coreaction.hh:121
Deal with situations that look like double precision parameters.
Definition: coreaction.hh:694
Description of a control-flow block containing PcodeOps.
Definition: block.hh:60
ActionFuncLink(const string &g)
Constructor.
Definition: coreaction.hh:661
Search for input Varnodes that have been officially provided constant values.
Definition: coreaction.hh:253
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:319
Locate shadow Varnodes and adjust them so they are hidden.
Definition: coreaction.hh:953
Normalize jump-table construction.
Definition: coreaction.hh:571
The base datatype class for the decompiler.
Definition: type.hh:62
Check for constants, with pointer type, that correspond to global symbols.
Definition: coreaction.hh:181
ActionMapGlobals(const string &g)
Constructor.
Definition: coreaction.hh:840
void calcNZMask(void)
Calculate non-zero masks for all Varnodes.
Definition: funcdata_varnode.cc:720
Eliminate locally constant indirect calls.
Definition: coreaction.hh:198
Gather raw p-code for a function.
Definition: coreaction.hh:32
ActionForceGoto(const string &g)
Constructor.
Definition: coreaction.hh:136
A storage location for a particular Symbol.
Definition: database.hh:51
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:398
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:376
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:380
A class that holds a data-type traversal state during type propagation.
Definition: coreaction.hh:1025
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:256
Allow type recovery to start happening.
Definition: coreaction.hh:68
ActionDeindirect(const string &g)
Constructor.
Definition: coreaction.hh:200
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:173
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:728
ActionMergeCopy(const string &g)
Constructor.
Definition: coreaction.hh:375
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:845
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:971
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:353
const string & getGroup(void) const
Get the Action's group.
Definition: action.hh:106
The list of groups defining a root Action.
Definition: action.hh:29
ActionStartTypes(const string &g)
Constructor.
Definition: coreaction.hh:70
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:93
void markIndirectOnly(void)
Mark illegal input Varnodes used only in INDIRECTs.
Definition: funcdata_varnode.cc:679
Apply rule once per function.
Definition: action.hh:55
Container for data structures associated with a single function.
Definition: funcdata.hh:45
int4 getSlot(void) const
Get the slot reading the term.
Definition: coreaction.hh:1047
ActionDoNothing(const string &g)
Constructor.
Definition: coreaction.hh:492
ActionMarkImplied(const string &g)
Constructor.
Definition: coreaction.hh:449
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:189
ActionRestructureHigh(const string &g)
Constructor.
Definition: coreaction.hh:829
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:574
Choose names for all high-level variables (HighVariables)
Definition: coreaction.hh:458
void processCopyTrims(void)
Try to reduce/eliminate COPYs produced by the merge trimming process.
Definition: merge.cc:1265
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:967
VarnodeLocSet::const_iterator endLoc(void) const
End of all Varnodes sorted by storage.
Definition: funcdata.hh:301
Remove blocks that do nothing.
Definition: coreaction.hh:490
Prepare function prototypes for "normalize" simplification.
Definition: coreaction.hh:592
ActionDefaultParams(const string &g)
Constructor.
Definition: coreaction.hh:625
ActionInferTypes(const string &g)
Constructor.
Definition: coreaction.hh:937
ActionVarnodeProps(const string &g)
Constructor.
Definition: coreaction.hh:218
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:626
Make required Varnode merges as dictated by CPUI_MULTIEQUAL, CPUI_INDIRECT, and addrtied property...
Definition: coreaction.hh:350
void mapGlobals(void)
Make sure there is a Symbol entry for all global Varnodes.
Definition: funcdata_varnode.cc:1302
Do any post-processing after decompilation.
Definition: coreaction.hh:44
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:137
ActionSwitchNorm(const string &g)
Constructor.
Definition: coreaction.hh:573
void mergeByDatatype(VarnodeLocSet::const_iterator startiter, VarnodeLocSet::const_iterator enditer)
Try to merge all HighVariables in the given range that have the same data-type.
Definition: merge.cc:298
Analyze change to the stack pointer across sub-function calls.
Definition: coreaction.hh:82
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:402
Varnode * getIn(int4 slot)
Get a specific input Varnode to this op.
Definition: op.hh:147
Remove conditional branches if the condition is constant.
Definition: coreaction.hh:512
ActionActiveParam(const string &g)
Constructor.
Definition: coreaction.hh:714
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:989
int4 slot
Current edge relative to current PcodeOp.
Definition: coreaction.hh:1031
PcodeOpEdge(PcodeOp *o, int4 s, PcodeOp *m)
Constructor.
Definition: coreaction.hh:1044
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:778
Determine data-flow holding the return value of the function.
Definition: coreaction.hh:760
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:126
bool contains(const string &nm) const
Check if this ActionGroupList contains a given group.
Definition: action.hh:37
Lay down locked input and output data-type information.
Definition: coreaction.hh:607
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:39
ActionDirectWrite(const string &g, bool prop)
Constructor.
Definition: coreaction.hh:240
Build Static Single Assignment (SSA) representation for function.
Definition: coreaction.hh:276
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:294
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:387
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:162
Find explicit Varnodes: Varnodes that have an explicit token representing them in the output...
Definition: coreaction.hh:415
void startCleanUp(void)
Start clean-up phase.
Definition: funcdata.hh:161
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:279
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:938
Merge & getMerge(void)
Get the Merge object for this function.
Definition: funcdata.hh:395
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:75
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:471
ActionDominantCopy(const string &g)
Constructor.
Definition: coreaction.hh:966
Prepare for data-flow analysis of function parameters.
Definition: coreaction.hh:656
Attach dynamically mapped symbols to Varnodes in time for data-type propagation.
Definition: coreaction.hh:986
ActionDynamicMapping(const string &g)
Constructor.
Definition: coreaction.hh:988
void mergeMultiEntry(void)
Merge together Varnodes mapped to SymbolEntrys from the same Symbol.
Definition: merge.cc:819
int4 inslot
Slot holding Varnode for descendant PcodeOp.
Definition: coreaction.hh:1030
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:290
TermOrder(PcodeOp *rt)
Construct given root PcodeOp.
Definition: coreaction.hh:1062
Create symbols that map out the local stack-frame for the function.
Definition: coreaction.hh:827
Add warnings for prototypes that aren't modeled properly.
Definition: coreaction.hh:1008
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:201
Calculate the non-zero mask property on all Varnode objects.
Definition: coreaction.hh:287
Make final attachments of dynamically mapped symbols to Varnodes.
Definition: coreaction.hh:997
Actions and classes associated with transforming and structuring the control-flow graph...
PcodeOp * getOp(void) const
Get the component PcodeOp adding in the term.
Definition: coreaction.hh:1046
Mark COPY operations between Varnodes representing the object as non-printing.
Definition: coreaction.hh:975
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:881
Large scale transformations applied to the varnode/op graph.
Definition: action.hh:50
Propagate conditional constants.
Definition: coreaction.hh:556
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:341
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:267
Apply any overridden forced gotos.
Definition: coreaction.hh:134
Dead code removal. Eliminate dead p-code ops.
Definition: coreaction.hh:540
ActionActiveReturn(const string &g)
Constructor.
Definition: coreaction.hh:727
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:515
ActionShadowVar(const string &g)
Constructor.
Definition: coreaction.hh:172
ActionPrototypeTypes(const string &g)
Constructor.
Definition: coreaction.hh:610
ActionMarkExplicit(const string &g)
Constructor.
Definition: coreaction.hh:428
Try to merge an op's input Varnode to its output, if they are at the same storage location...
Definition: coreaction.hh:362
Mark all the implied Varnode objects, which will have no explicit token in the output.
Definition: coreaction.hh:437
ActionMergeType(const string &g)
Constructor.
Definition: coreaction.hh:397
Utilities for processing data structures associated with a single function.
PcodeOp * getMultiplier(void) const
Get the multiplier PcodeOp.
Definition: coreaction.hh:1045
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:482
A strategy for applying type casts.
Definition: cast.hh:40
void mergeMarker(void)
Force the merge of input and output Varnodes to MULTIEQUAL and INDIRECT ops.
Definition: merge.cc:800
void setHighLevel(void)
Turn on HighVariable objects for all Varnodes.
Definition: funcdata_varnode.cc:471
A class for ordering Varnode terms in an additive expression.
Definition: coreaction.hh:1056
Copy one operand to another.
Definition: opcodes.hh:36
ActionMarkIndirectOnly(const string &g)
Constructor.
Definition: coreaction.hh:340
ActionStop(const string &g)
Constructor.
Definition: coreaction.hh:46
bool valid(void) const
Return true if there are edges left to iterate.
Definition: coreaction.hh:1034
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:680
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:1000
Lowest level operation of the p-code language.
Definition: op.hh:58
Find Varnodes with a vectorized lane scheme and attempt to split the lanes.
Definition: coreaction.hh:106
ActionConstbase(const string &g)
Constructor.
Definition: coreaction.hh:255
VarnodeLocSet::const_iterator beginLoc(void) const
Start of all Varnodes sorted by storage.
Definition: funcdata.hh:298
A low-level machine address for labelling bytes and data.
Definition: address.hh:46
ActionRestructureVarnode(const string &g)
Constructor.
Definition: coreaction.hh:815
Get rid of registers with trash values.
Definition: coreaction.hh:797
Create symbols for any discovered global variables in the function.
Definition: coreaction.hh:838
ActionAssignHigh(const string &g)
Constructor.
Definition: coreaction.hh:329
Find a prototype for each sub-function.
Definition: coreaction.hh:623
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:92
Try to merge Varnodes specified by Symbols with multiple SymbolEntrys.
Definition: coreaction.hh:384
Mark illegal Varnode inputs used only in CPUI_INDIRECT ops.
Definition: coreaction.hh:338
Mark Varnode objects that hold stack-pointer values and set-up special data-type. ...
Definition: coreaction.hh:264
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:429
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:111
ActionSetCasts(const string &g)
Constructor.
Definition: coreaction.hh:318
int4 termOrder(const Varnode *op) const
Compare two Varnodes based on their term order.
Definition: varnode.cc:791
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:662
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:715
Manager for all the major decompiler subsystems.
Definition: architecture.hh:117
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:369
Mark Varnodes built out of legal parameters.
Definition: coreaction.hh:237
ActionPrototypeWarnings(const string &g)
Constructor.
Definition: coreaction.hh:1010
Fill-in CPUI_CAST p-code ops as required by the casting strategy.
Definition: coreaction.hh:314
ActionConditionalConst(const string &g)
Constructor.
Definition: coreaction.hh:558
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:1011
Adjust improperly justified parameters.
Definition: coreaction.hh:878
Restrict possible range of local variables.
Definition: coreaction.hh:775
ActionMultiCse(const string &g)
Constructor.
Definition: coreaction.hh:161
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:939
Apply rule repeatedly until no change.
Definition: action.hh:54
A low-level variable or contiguous set of bytes described by an Address and a size.
Definition: varnode.hh:65
ActionDeterminedBranch(const string &g)
Constructor.
Definition: coreaction.hh:514
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:219
A basic block for p-code operations.
Definition: block.hh:363
ActionSpacebase(const string &g)
Constructor.
Definition: coreaction.hh:266
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:841
ActionLikelyTrash(const string &g)
Constructor.
Definition: coreaction.hh:801
ActionUnjustifiedParams(const string &g)
Constructor.
Definition: coreaction.hh:880
ActionStackPtrFlow(const string &g, AddrSpace *ss)
Constructor.
Definition: coreaction.hh:91
Infer and propagate data-types.
Definition: coreaction.hh:920
void universal_action(Architecture *conf)
The generic decompilation action.
Definition: coreaction.cc:4769
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:365
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:71
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:283
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:548
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:978
Set the (already) recovered output data-type as a formal part of the prototype.
Definition: coreaction.hh:863
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:330
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:816
ActionLaneDivide(const string &g)
Constructor.
Definition: coreaction.hh:110
ActionOutputPrototype(const string &g)
Constructor.
Definition: coreaction.hh:865
Check for one CPUI_MULTIEQUAL input set defining more than one Varnode.
Definition: coreaction.hh:170
Assign initial high-level HighVariable objects to each Varnode.
Definition: coreaction.hh:327
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:357
Try to merge the input and output Varnodes of a CPUI_COPY op.
Definition: coreaction.hh:373
Varnode * getVarnode(void) const
Get the Varnode term.
Definition: coreaction.hh:1048
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:764
Class representing a term in an additive expression.
Definition: coreaction.hh:1038
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:345
Remove unreachable blocks.
Definition: coreaction.hh:479
ActionCopyMarker(const string &g)
Constructor.
Definition: coreaction.hh:977
int4 getSize(void) const
Get the number of terms in the expression.
Definition: coreaction.hh:1063
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:817
list< PcodeOp * >::const_iterator beginDescend(void) const
Get iterator to list of syntax tree descendants (reads)
Definition: varnode.hh:184
Transform based on Varnode properties, such as read-only and volatile.
Definition: coreaction.hh:215
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:595
void build_defaultactions(ActionDatabase &allacts)
Build the default actions.
Definition: coreaction.cc:4729
ActionDeadCode(const string &g)
Constructor.
Definition: coreaction.hh:547
void mergeOpcode(OpCode opc)
Try to force merges of input to output for all p-code ops of a given type.
Definition: merge.cc:265
ActionHeritage(const string &g)
Constructor.
Definition: coreaction.hh:278
list< PcodeOp * >::const_iterator iter
Iterator to current descendant being enumerated.
Definition: coreaction.hh:1028
Container class for all Datatype objects in an Architecture.
Definition: type.hh:380
Determine which sub-functions have active output Varnodes.
Definition: coreaction.hh:725
ActionStartCleanUp(const string &g)
Constructor.
Definition: coreaction.hh:58
ActionMergeAdjacent(const string &g)
Constructor.
Definition: coreaction.hh:364
void opHeritage(void)
Perform an entire heritage pass linking Varnode reads to writes.
Definition: funcdata.hh:415
Get rid of redundant branches: duplicate edges between the same input and output block.
Definition: coreaction.hh:501
ActionMergeRequired(const string &g)
Constructor.
Definition: coreaction.hh:352
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:59
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:493
ActionNormalizeSetup(const string &g)
Constructor.
Definition: coreaction.hh:594
Container class for ParamTrial objects.
Definition: fspec.hh:223
Database of root Action objects that can be used to transform a function.
Definition: action.hh:294
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:982
ActionHideShadow(const string &g)
Constructor.
Definition: coreaction.hh:955
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:51
ActionSegmentize(const string &g)
Constructor.
Definition: coreaction.hh:124
Try to merge Varnodes of the same type (if they don't hold different values at the same time) ...
Definition: coreaction.hh:395
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:450
Determine active parameters to sub-functions.
Definition: coreaction.hh:712
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:190
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:47
Prepare for data-flow analysis of function parameters, when recovery isn't required.
Definition: coreaction.hh:677
A function parameter viewed as a name, data-type, and storage address.
Definition: fspec.hh:903
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:271
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:125
Replace COPYs from the same source with a single dominant COPY.
Definition: coreaction.hh:964
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:956
Perform Common Sub-expression Elimination on CPUI_MULTIEQUAL ops.
Definition: coreaction.hh:156
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:611
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:697
bool startTypeRecovery(void)
Mark that data-type analysis has started.
Definition: funcdata.cc:154
ActionParamDouble(const string &g)
Constructor.
Definition: coreaction.hh:696
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:241
const vector< PcodeOpEdge * > & getSort(void)
Get the sorted list of references.
Definition: coreaction.hh:1066
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:866
ActionConstantPtr(const string &g)
Constructor.
Definition: coreaction.hh:188
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:802
void startProcessing(void)
Start processing for this function.
Definition: funcdata.cc:126
Create symbols that map out the local stack-frame for the function.
Definition: coreaction.hh:812
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:334
void spacebase(void)
Mark registers that map to a virtual address space.
Definition: funcdata.cc:202
ActionUnreachable(const string &g)
Constructor.
Definition: coreaction.hh:481
ActionDynamicSymbols(const string &g)
Constructor.
Definition: coreaction.hh:999
ActionRestrictLocal(const string &g)
Constructor.
Definition: coreaction.hh:777
void mergeAddrTied(void)
Force the merge of address tried Varnodes.
Definition: merge.cc:523
ActionNonzeroMask(const string &g)
Constructor.
Definition: coreaction.hh:289
This is the basic set of transformation Rule objects.
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:830
int4 count
Number of changes made by this action so far.
Definition: action.hh:79
void markInternalCopies(void)
Mark redundant/internal COPY PcodeOps.
Definition: merge.cc:1294
ActionMergeMultiEntry(const string &g)
Constructor.
Definition: coreaction.hh:386
ActionNameVars(const string &g)
Constructor.
Definition: coreaction.hh:470
ActionStart(const string &g)
Constructor.
Definition: coreaction.hh:34
Varnode * vn
The root Varnode.
Definition: coreaction.hh:1027
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:391
Describes a (register) storage location and the ways it might be split into lanes.
Definition: transform.hh:88
ActionFuncLinkOutOnly(const string &g)
Constructor.
Definition: coreaction.hh:679
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:63
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:35
ActionReturnRecovery(const string &g)
Constructor.
Definition: coreaction.hh:763
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:559
Start clean up after main transform phase.
Definition: coreaction.hh:56
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:504