decompiler  1.0.0
Public Member Functions | Private Attributes | List of all members
ghidra::UnknownProtoModel Class Reference

An unrecognized prototype model. More...

#include <fspec.hh>

Inheritance diagram for ghidra::UnknownProtoModel:
ghidra::ProtoModel

Public Member Functions

 UnknownProtoModel (const string &nm, ProtoModel *placeHold)
 Constructor.
 
ProtoModelgetPlaceholderModel (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.
 
ArchitecturegetArch (void) const
 Get the owning Architecture.
 
const ProtoModelgetAliasParent (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 RangeListgetLocalRange (void) const
 Get the range of (possible) local stack variables.
 
const RangeListgetParamRange (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...
 
AddrSpacegetSpacebase (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

ProtoModelplaceholderModel
 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...
 

Detailed Description

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.


The documentation for this class was generated from the following file: