decompiler
1.0.0
|
An unrecognized prototype model. More...
#include <fspec.hh>
Public Member Functions | |
UnknownProtoModel (const string &nm, ProtoModel *placeHold) | |
Constructor. | |
ProtoModel * | getPlaceholderModel (void) const |
Retrieve the placeholder model. | |
virtual bool | isUnknown (void) const |
Is this an unrecognized prototype model. | |
Public Member Functions inherited from ghidra::ProtoModel | |
ProtoModel (Architecture *g) | |
Constructor for use with decode() More... | |
ProtoModel (const string &nm, const ProtoModel &op2) | |
Copy constructor changing the name. More... | |
virtual | ~ProtoModel (void) |
Destructor. | |
const string & | getName (void) const |
Get the name of the prototype model. | |
Architecture * | getArch (void) const |
Get the owning Architecture. | |
const ProtoModel * | getAliasParent (void) const |
Return model this is an alias of (or null) | |
uint4 | hasEffect (const Address &addr, int4 size) const |
Determine side-effect of this on the given memory range. More... | |
int4 | getExtraPop (void) const |
Get the stack-pointer extrapop for this model. | |
void | setExtraPop (int4 ep) |
Set the stack-pointer extrapop. | |
int4 | getInjectUponEntry (void) const |
Get the inject uponentry id. | |
int4 | getInjectUponReturn (void) const |
Get the inject uponreturn id. | |
bool | isCompatible (const ProtoModel *op2) const |
Return true if other given model can be substituted for this. More... | |
void | deriveInputMap (ParamActive *active) const |
Given a list of input trials, derive the most likely input prototype. More... | |
void | deriveOutputMap (ParamActive *active) const |
Given a list of output trials, derive the most likely output prototype. More... | |
void | assignParameterStorage (const vector< Datatype *> &typelist, vector< ParameterPieces > &res, bool ignoreOutputError) |
Calculate input and output storage locations given a function prototype. More... | |
bool | checkInputJoin (const Address &hiaddr, int4 hisize, const Address &loaddr, int4 losize) const |
Check if the given two input storage locations can represent a single logical parameter. More... | |
bool | checkOutputJoin (const Address &hiaddr, int4 hisize, const Address &loaddr, int4 losize) const |
Check if the given two output storage locations can represent a single logical return value. More... | |
bool | checkInputSplit (const Address &loc, int4 size, int4 splitpoint) const |
Check if it makes sense to split a single storage location into two input parameters. More... | |
const RangeList & | getLocalRange (void) const |
Get the range of (possible) local stack variables. | |
const RangeList & | getParamRange (void) const |
Get the range of (possible) stack parameters. | |
vector< EffectRecord >::const_iterator | effectBegin (void) const |
Get an iterator to the first EffectRecord. | |
vector< EffectRecord >::const_iterator | effectEnd (void) const |
Get an iterator to the last EffectRecord. | |
vector< VarnodeData >::const_iterator | trashBegin (void) const |
Get an iterator to the first likelytrash. | |
vector< VarnodeData >::const_iterator | trashEnd (void) const |
Get an iterator to the last likelytrash. | |
int4 | characterizeAsInputParam (const Address &loc, int4 size) const |
Characterize whether the given range overlaps parameter storage. More... | |
int4 | characterizeAsOutput (const Address &loc, int4 size) const |
Characterize whether the given range overlaps output storage. More... | |
bool | possibleInputParam (const Address &loc, int4 size) const |
Does the given storage location make sense as an input parameter. More... | |
bool | possibleOutputParam (const Address &loc, int4 size) const |
Does the given storage location make sense as a return value. More... | |
bool | possibleInputParamWithSlot (const Address &loc, int4 size, int4 &slot, int4 &slotsize) const |
Pass-back the slot and slot size for the given storage location as an input parameter. More... | |
bool | possibleOutputParamWithSlot (const Address &loc, int4 size, int4 &slot, int4 &slotsize) const |
Pass-back the slot and slot size for the given storage location as a return value. More... | |
bool | unjustifiedInputParam (const Address &loc, int4 size, VarnodeData &res) const |
Check if the given storage location looks like an unjustified input parameter. More... | |
OpCode | assumedInputExtension (const Address &addr, int4 size, VarnodeData &res) const |
Get the type of extension and containing input parameter for the given storage. More... | |
OpCode | assumedOutputExtension (const Address &addr, int4 size, VarnodeData &res) const |
Get the type of extension and containing return value location for the given storage. More... | |
bool | getBiggestContainedInputParam (const Address &loc, int4 size, VarnodeData &res) const |
Pass-back the biggest input parameter contained within the given range. More... | |
bool | getBiggestContainedOutput (const Address &loc, int4 size, VarnodeData &res) const |
Pass-back the biggest possible output parameter contained within the given range. More... | |
AddrSpace * | getSpacebase (void) const |
Get the stack space associated with this model. | |
bool | isStackGrowsNegative (void) const |
Return true if the stack grows toward smaller addresses. | |
bool | hasThisPointer (void) const |
Is this a model for (non-static) class methods. | |
bool | isConstructor (void) const |
Is this model for class constructors. | |
bool | printInDecl (void) const |
Return true if name should be printed in function declarations. | |
void | setPrintInDecl (bool val) |
Set whether this name should be printed in function declarations. | |
int4 | getMaxInputDelay (void) const |
Return the maximum heritage delay across all possible input parameters. More... | |
int4 | getMaxOutputDelay (void) const |
Return the maximum heritage delay across all possible return values. More... | |
virtual bool | isMerged (void) const |
Is this a merged prototype model. | |
virtual void | decode (Decoder &decoder) |
Restore this model from a stream. More... | |
Private Attributes | |
ProtoModel * | placeholderModel |
The model whose behavior this adopts as a behavior placeholder. | |
Additional Inherited Members | |
Public Types inherited from ghidra::ProtoModel | |
enum | { extrapop_unknown = 0x8000 } |
Static Public Member Functions inherited from ghidra::ProtoModel | |
static uint4 | lookupEffect (const vector< EffectRecord > &efflist, const Address &addr, int4 size) |
Look up an effect from the given EffectRecord list. More... | |
static int4 | lookupRecord (const vector< EffectRecord > &efflist, int4 listSize, const Address &addr, int4 size) |
Look up a particular EffectRecord from a given list by its Address and size. More... | |
An unrecognized prototype model.
This kind of model is created for function prototypes that specify a model name for which there is no matching object. A model is created for the name by cloning behavior from a placeholder model, usually the default model. This object mostly behaves like its placeholder model but can identify itself as an unknown model and adopts the unrecognized model name.