Ghidra Decompiler Analysis Engine
|
Go to the documentation of this file.
24 #ifndef __CORE_ACTION__
25 #define __CORE_ACTION__
64 data.startCleanUp();
return 0; }
84 bool analysis_finished;
86 static bool isStackRelative(
Varnode *spcbasein,
Varnode *vn,uintb &constval);
236 bool propagateIndirect;
356 data.getMerge().mergeAddrTied(); data.getMerge().mergeMarker();
return 0; }
367 virtual int4
apply(
Funcdata &data) { data.getMerge().mergeAdjacent();
return 0; }
389 virtual int4
apply(
Funcdata &data) { data.getMerge().mergeMultiEntry();
return 0; }
401 data.getMerge().mergeByDatatype(data.
beginLoc(),data.
endLoc());
return 0; }
415 struct OpStackElement {
421 static int4 baseExplicit(
Varnode *vn,int4 maxref);
422 static int4 multipleInteraction(vector<Varnode *> &multlist);
423 static void processMultiplier(
Varnode *vn,int4 max);
437 struct DescTreeElement {
439 list<PcodeOp *>::const_iterator desciter;
441 vn = v; desciter = v->beginDescend(); }
444 static bool isPossibleAlias(
Varnode *vn1,
Varnode *vn2,int4 depth);
463 static void lookForBadJumpTables(
Funcdata &data);
464 static void lookForFuncParamNames(
Funcdata &data,
const vector<Varnode *> &varlist);
465 static void linkSpacebaseSymbol(
Varnode *vn,
Funcdata &data,vector<Varnode *> &namerec);
466 static void linkSymbols(
Funcdata &data,vector<Varnode *> &namerec);
539 static void pushConsumed(uintb val,
Varnode *vn,vector<Varnode *> &worklist);
540 static void propagateConsumed(vector<Varnode *> &worklist);
542 static void markConsumedParameters(
FuncCallSpecs *fc,vector<Varnode *> &worklist);
543 static uintb gatherConsumedReturn(
Funcdata &data);
544 static bool isEventualConstant(
Varnode *vn,int4 addCount,int4 loadCount);
545 static bool lastChanceLoad(
Funcdata &data,vector<Varnode *> &worklist);
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);
971 virtual int4
apply(
Funcdata &data) { data.getMerge().processCopyTrims();
return 0; }
982 virtual int4
apply(
Funcdata &data) { data.getMerge().markInternalCopies();
return 0; }
1025 list<PcodeOp *>::const_iterator
iter;
1031 bool valid(
void)
const {
return (
op != (
PcodeOp *)0); }
1042 PcodeOp *getMultiplier(
void)
const {
return mult; }
1043 PcodeOp *getOp(
void)
const {
return op; }
1044 int4 getSlot(
void)
const {
return slot; }
1045 Varnode *getVarnode(
void)
const {
return vn; }
1055 vector<PcodeOpEdge> terms;
1056 vector<PcodeOpEdge *> sorter;
1060 int4 getSize(
void)
const {
return terms.size(); }
1063 const vector<PcodeOpEdge *> &getSort(
void) {
return sorter; }
1074 return (-1 == op1->getVarnode()->termOrder(op2->getVarnode())); }
void spacebase(void)
Mark registers that map to a virtual address space.
Definition: funcdata.cc:214
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:978
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:339
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1512
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:328
Action(uint4 f, const string &nm, const string &g)
Base constructor for an Action.
Definition: action.cc:25
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3954
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:125
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1291
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:111
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1697
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:668
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:239
A region where processor data is stored.
Definition: space.hh:73
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1107
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3758
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:367
Description of a control-flow block containing PcodeOps.
Definition: block.hh:60
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:1011
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1832
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:92
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:469
Assign initial high-level HighVariable objects to each Varnode.
Definition: coreaction.hh:325
list< PcodeOp * >::const_iterator iter
Iterator to current descendant being enumerated.
Definition: coreaction.hh:1025
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:269
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:63
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:982
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:254
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:217
Make final attachments of dynamically mapped symbols to Varnodes.
Definition: coreaction.hh:997
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:137
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:317
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.cc:3007
VarnodeLocSet::const_iterator endLoc(void) const
End of all Varnodes sorted by storage.
Definition: funcdata.hh:307
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1649
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:574
void markIndirectOnly(void)
Mark illegal input Varnodes used only in INDIRECTs.
Definition: funcdata_varnode.cc:690
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:47
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3689
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:189
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:39
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2770
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3800
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:292
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:427
Remove unreachable blocks.
Definition: coreaction.hh:477
Find Varnodes with a vectorized lane scheme and attempt to split the lanes.
Definition: coreaction.hh:106
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:478
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:343
Restrict possible range of local variables.
Definition: coreaction.hh:775
Locate shadow Varnodes and adjust them so they are hidden.
Definition: coreaction.hh:953
The list of groups defining a root Action.
Definition: action.hh:29
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:4058
void stopProcessing(void)
Mark that processing has completed for this function.
Definition: funcdata.cc:156
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:51
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:830
@ rule_repeatapply
Apply rule repeatedly until no change.
Definition: action.hh:54
void calcNZMask(void)
Calculate non-zero masks for all Varnodes.
Definition: funcdata_varnode.cc:731
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3973
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:4020
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:728
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:971
A function parameter viewed as a name, data-type, and storage address.
Definition: fspec.hh:912
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2949
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2528
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:680
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1499
Allow type recovery to start happening.
Definition: coreaction.hh:68
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:626
Remove blocks that do nothing.
Definition: coreaction.hh:488
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:866
Large scale transformations applied to the varnode/op graph.
Definition: action.hh:50
A class for analyzing parameters to a sub-function call.
Definition: fspec.hh:1449
Mark Varnode objects that hold stack-pointer values and set-up special data-type.
Definition: coreaction.hh:262
Varnode * vn
The root Varnode.
Definition: coreaction.hh:1024
Find a prototype for each sub-function.
Definition: coreaction.hh:623
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:845
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:611
A basic block for p-code operations.
Definition: block.hh:365
Lowest level operation of the p-code language.
Definition: op.hh:58
Create symbols that map out the local stack-frame for the function.
Definition: coreaction.hh:827
Manager for all the major decompiler subsystems.
Definition: architecture.hh:119
A storage location for a particular Symbol.
Definition: database.hh:51
Create symbols that map out the local stack-frame for the function.
Definition: coreaction.hh:812
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:288
Class representing a term in an additive expression.
Definition: coreaction.hh:1035
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:332
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3735
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1881
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:173
VarnodeLocSet::const_iterator beginLoc(void) const
Start of all Varnodes sorted by storage.
Definition: funcdata.hh:304
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:661
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2270
int4 count
Number of changes made by this action so far.
Definition: action.hh:79
void collect(void)
Collect all the terms in the expression.
Definition: coreaction.cc:4776
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:881
Create symbols for any discovered global variables in the function.
Definition: coreaction.hh:838
Apply any overridden forced gotos.
Definition: coreaction.hh:134
Get rid of registers with trash values.
Definition: coreaction.hh:797
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:956
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3508
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:939
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:662
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2998
void setHighLevel(void)
Turn on HighVariable objects for all Varnodes.
Definition: funcdata_varnode.cc:482
PcodeOp * op
The current descendant or the defining PcodeOp.
Definition: coreaction.hh:1026
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1159
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:480
A low-level variable or contiguous set of bytes described by an Address and a size.
Definition: varnode.hh:65
A class for ordering Varnode terms in an additive expression.
Definition: coreaction.hh:1053
PropagationState(Varnode *v)
Constructor.
Definition: coreaction.cc:4473
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:162
Describes a (register) storage location and the ways it might be split into lanes.
Definition: transform.hh:88
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:265
Container class for ParamTrial objects.
Definition: fspec.hh:222
Make required Varnode merges as dictated by CPUI_MULTIEQUAL, CPUI_INDIRECT, and addrtied property.
Definition: coreaction.hh:348
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:281
void propagateConstant(Varnode *varVn, Varnode *constVn, FlowBlock *constBlock, Funcdata &data)
Replace reads of a given Varnode with a constant.
Definition: coreaction.cc:3655
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:869
Actions and classes associated with transforming and structuring the control-flow graph.
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:126
Find explicit Varnodes: Varnodes that have an explicit token representing them in the output.
Definition: coreaction.hh:413
A class that holds a data-type traversal state during type propagation.
Definition: coreaction.hh:1022
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1222
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:4075
Utilities for processing data structures associated with a single function.
Try to merge Varnodes specified by Symbols with multiple SymbolEntrys.
Definition: coreaction.hh:382
Check for constants, with pointer type, that correspond to global symbols.
Definition: coreaction.hh:181
A strategy for applying type casts.
Definition: cast.hh:40
Deal with situations that look like double precision parameters.
Definition: coreaction.hh:694
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:614
Determine active parameters to sub-functions.
Definition: coreaction.hh:712
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:548
bool contains(const string &nm) const
Check if this ActionGroupList contains a given group.
Definition: action.hh:37
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:502
Transform based on Varnode properties, such as read-only and volatile.
Definition: coreaction.hh:214
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:715
Try to merge Varnodes of the same type (if they don't hold different values at the same time)
Definition: coreaction.hh:393
A low-level machine address for labelling bytes and data.
Definition: address.hh:46
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:491
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:882
Container for data structures associated with a single function.
Definition: funcdata.hh:45
The base datatype class for the decompiler.
Definition: type.hh:62
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:595
Mark Varnodes built out of legal parameters.
Definition: coreaction.hh:235
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2064
Container class for all Datatype objects in an Architecture.
Definition: type.hh:396
void extendInput(Funcdata &data, Varnode *invn, ProtoParameter *param, BlockBasic *topbl)
Extend Varnode inputs to match prototype model.
Definition: coreaction.cc:3781
Prepare function prototypes for "normalize" simplification.
Definition: coreaction.hh:592
Determine which sub-functions have active output Varnodes.
Definition: coreaction.hh:725
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:989
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2115
Remove conditional branches if the condition is constant.
Definition: coreaction.hh:510
bool startTypeRecovery(void)
Mark that data-type analysis has started.
Definition: funcdata.cc:166
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:938
int4 inslot
Slot holding Varnode for descendant PcodeOp.
Definition: coreaction.hh:1027
void step(void)
Advance to the next propagation edge.
Definition: coreaction.cc:4497
int4 slot
Current edge relative to current PcodeOp.
Definition: coreaction.hh:1028
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:4733
Make sure pointers into segmented spaces have the correct form.
Definition: coreaction.hh:121
Choose names for all high-level variables (HighVariables)
Definition: coreaction.hh:456
Check for one CPUI_MULTIEQUAL input set defining more than one Varnode.
Definition: coreaction.hh:170
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:1000
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:93
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:817
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:559
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2094
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:363
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:697
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:396
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:579
Replace COPYs from the same source with a single dominant COPY.
Definition: coreaction.hh:964
Gather raw p-code for a function.
Definition: coreaction.hh:32
void startProcessing(void)
Start processing for this function.
Definition: funcdata.cc:138
Attach dynamically mapped symbols to Varnodes in time for data-type propagation.
Definition: coreaction.hh:986
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:351
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:448
Lay down locked input and output data-type information.
Definition: coreaction.hh:607
Determine data-flow holding the return value of the function.
Definition: coreaction.hh:760
Prepare for data-flow analysis of function parameters, when recovery isn't required.
Definition: coreaction.hh:677
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:764
Build Static Single Assignment (SSA) representation for function.
Definition: coreaction.hh:274
Dead code removal. Eliminate dead p-code ops.
Definition: coreaction.hh:538
Calculate the non-zero mask property on all Varnode objects.
Definition: coreaction.hh:285
@ rule_onceperfunc
Apply rule once per function.
Definition: action.hh:55
@ CPUI_COPY
Copy one operand to another.
Definition: opcodes.hh:36
This is the basic set of transformation Rule objects.
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:277
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:2140
Add warnings for prototypes that aren't modeled properly.
Definition: coreaction.hh:1008
Try to merge an op's input Varnode to its output, if they are at the same storage location.
Definition: coreaction.hh:360
Eliminate locally constant indirect calls.
Definition: coreaction.hh:198
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3071
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:967
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:374
Prepare for data-flow analysis of function parameters.
Definition: coreaction.hh:656
Normalize jump-table construction.
Definition: coreaction.hh:571
Adjust improperly justified parameters.
Definition: coreaction.hh:878
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:201
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:1521
Search for input Varnodes that have been officially provided constant values.
Definition: coreaction.hh:251
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:400
Mark all the implied Varnode objects, which will have no explicit token in the output.
Definition: coreaction.hh:435
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:355
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:190
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:389
virtual void reset(Funcdata &data)
Reset the Action for a new function.
Definition: coreaction.hh:816
Get rid of redundant branches: duplicate edges between the same input and output block.
Definition: coreaction.hh:499
void mapGlobals(void)
Make sure there is a Symbol entry for all global Varnodes.
Definition: funcdata_varnode.cc:1407
Infer and propagate data-types.
Definition: coreaction.hh:920
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:513
Try to merge the input and output Varnodes of a CPUI_COPY op.
Definition: coreaction.hh:371
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:4041
void sortTerms(void)
Sort the terms using additiveCompare()
Definition: coreaction.cc:4825
Propagate conditional constants.
Definition: coreaction.hh:556
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:35
Analyze change to the stack pointer across sub-function calls.
Definition: coreaction.hh:82
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:841
Mark illegal Varnode inputs used only in CPUI_INDIRECT ops.
Definition: coreaction.hh:336
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:802
Do any post-processing after decompilation.
Definition: coreaction.hh:44
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.cc:3033
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:385
Start clean up after main transform phase.
Definition: coreaction.hh:56
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: coreaction.hh:378
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:59
Fill-in CPUI_CAST p-code ops as required by the casting strategy.
Definition: coreaction.hh:312
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: coreaction.hh:778