|
Ghidra 11.4.2
Ghidra internal decompiler documentation.
|
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 |
| If this an unrecognized prototype model. | |
Public Member Functions inherited from ghidra::ProtoModel | |
| ProtoModel (Architecture *g) | |
| Constructor for use with decode() | |
| ProtoModel (const string &nm, const ProtoModel &op2) | |
| Copy constructor changing the name. | |
| 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. | |
| 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. | |
| void | deriveInputMap (ParamActive *active) const |
| Given a list of input trials, derive the most likely input prototype. | |
| void | deriveOutputMap (ParamActive *active) const |
| Given a list of output trials, derive the most likely output prototype. | |
| void | assignParameterStorage (const PrototypePieces &proto, vector< ParameterPieces > &res, bool ignoreOutputError) |
| Calculate input and output storage locations given a function prototype. | |
| 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. | |
| 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. | |
| 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. | |
| 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. | |
| vector< VarnodeData >::const_iterator | internalBegin (void) const |
| Get an iterator to the first internalstorage. | |
| vector< VarnodeData >::const_iterator | internalEnd (void) const |
| Get an iterator to the last internalstorage. | |
| int4 | characterizeAsInputParam (const Address &loc, int4 size) const |
| Characterize whether the given range overlaps parameter storage. | |
| int4 | characterizeAsOutput (const Address &loc, int4 size) const |
| Characterize whether the given range overlaps output storage. | |
| bool | possibleInputParam (const Address &loc, int4 size) const |
| Does the given storage location make sense as an input parameter. | |
| bool | possibleOutputParam (const Address &loc, int4 size) const |
| Does the given storage location make sense as a return value. | |
| 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. | |
| 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. | |
| bool | unjustifiedInputParam (const Address &loc, int4 size, VarnodeData &res) const |
| Check if the given storage location looks like an unjustified input parameter. | |
| OpCode | assumedInputExtension (const Address &addr, int4 size, VarnodeData &res) const |
| Get the type of extension and containing input parameter for the given storage. | |
| OpCode | assumedOutputExtension (const Address &addr, int4 size, VarnodeData &res) const |
| Get the type of extension and containing return value location for the given storage. | |
| bool | getBiggestContainedInputParam (const Address &loc, int4 size, VarnodeData &res) const |
| Pass-back the biggest input parameter contained within the given range. | |
| bool | getBiggestContainedOutput (const Address &loc, int4 size, VarnodeData &res) const |
| Pass-back the biggest possible output parameter contained within the given range. | |
| 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. | |
| int4 | getMaxOutputDelay (void) const |
| Return the maximum heritage delay across all possible return values. | |
| bool | isAutoKilledByCall (void) const |
| Does this model automatically consider potential output locations as killed by call. | |
| virtual bool | isMerged (void) const |
| Is this a merged prototype model. | |
| virtual void | decode (Decoder &decoder) |
| Restore this model from a stream. | |
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. | |
| 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. | |
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.
|
inlinevirtual |
If this an unrecognized prototype model.
Reimplemented from ghidra::ProtoModel.