|
| SleighArchitecture (const string &fname, const string &targ, ostream *estream) |
| Construct given executable file. More...
|
|
const string & | getFilename (void) const |
| Get the executable filename.
|
|
const string & | getTarget (void) const |
| Get the language id of the active processor.
|
|
void | saveXmlHeader (ostream &s) const |
| Write out (as XML) basic attributes of the active executable. More...
|
|
void | restoreXmlHeader (const Element *el) |
| Restore from XML basic attributes of an executable. More...
|
|
virtual void | printMessage (const string &message) const |
| Print an error message to console. More...
|
|
virtual string | getDescription (void) const |
| Get a string describing this architecture.
|
|
| Architecture (void) |
| Construct an uninitialized Architecture. More...
|
|
void | init (DocumentStorage &store) |
| Load the image and configure architecture. More...
|
|
void | resetDefaultsInternal (void) |
| Reset default values for options specific to Architecture.
|
|
void | resetDefaults (void) |
| Reset defaults values for options owned by this. More...
|
|
ProtoModel * | getModel (const string &nm) const |
| Get a specific PrototypeModel. More...
|
|
bool | hasModel (const string &nm) const |
| Does this Architecture have a specific PrototypeModel. More...
|
|
bool | highPtrPossible (const Address &loc, int4 size) const |
| Are pointers possible to the given location? More...
|
|
AddrSpace * | getSpaceBySpacebase (const Address &loc, int4 size) const |
| Get space associated with a spacebase register. More...
|
|
const LanedRegister * | getLanedRegister (const Address &loc, int4 size) const |
| Get LanedRegister associated with storage. More...
|
|
int4 | getMinimumLanedRegisterSize (void) const |
| Get the minimum size of a laned register in bytes. More...
|
|
void | setDefaultModel (const string &nm) |
| Set the default PrototypeModel. More...
|
|
void | clearAnalysis (Funcdata *fd) |
| Clear analysis specific to a function. More...
|
|
void | readLoaderSymbols (const string &delim) |
| Read any symbols from loader into database. More...
|
|
void | collectBehaviors (vector< OpBehavior * > &behave) const |
| Provide a list of OpBehavior objects. More...
|
|
SegmentOp * | getSegmentOp (AddrSpace *spc) const |
| Retrieve the segment op for the given space if any. More...
|
|
void | setPrototype (const PrototypePieces &pieces) |
| Set the prototype for a particular function. More...
|
|
void | setPrintLanguage (const string &nm) |
| Establish a particular output language. More...
|
|
void | globalify (void) |
| Mark all spaces as global. More...
|
|
void | restoreFlowOverride (const Element *el) |
| Set flow overrides from XML. More...
|
|
virtual | ~Architecture (void) |
| Destructor. More...
|
|
virtual void | saveXml (ostream &s) const |
| Serialize this architecture to XML. More...
|
|
virtual void | restoreXml (DocumentStorage &store) |
| Restore the Architecture state from an XML stream. More...
|
|
virtual void | nameFunction (const Address &addr, string &name) const |
| Pick a default name for a function. More...
|
|
| AddrSpaceManager (void) |
| Construct an empty address space manager. More...
|
|
virtual | ~AddrSpaceManager (void) |
| Destroy the manager. More...
|
|
int4 | getDefaultSize (void) const |
| Get size of addresses for the default space. More...
|
|
AddrSpace * | getSpaceByName (const string &nm) const |
| Get address space by name. More...
|
|
AddrSpace * | getSpaceByShortcut (char sc) const |
| Get address space from its shortcut. More...
|
|
AddrSpace * | getIopSpace (void) const |
| Get the internal pcode op space. More...
|
|
AddrSpace * | getFspecSpace (void) const |
| Get the internal callspec space. More...
|
|
AddrSpace * | getJoinSpace (void) const |
| Get the joining space. More...
|
|
AddrSpace * | getStackSpace (void) const |
| Get the stack space for this processor. More...
|
|
AddrSpace * | getUniqueSpace (void) const |
| Get the temporary register space for this processor. More...
|
|
AddrSpace * | getDefaultCodeSpace (void) const |
| Get the default address space of this processor. More...
|
|
AddrSpace * | getDefaultDataSpace (void) const |
| Get the default address space where data is stored. More...
|
|
AddrSpace * | getConstantSpace (void) const |
| Get the constant space. More...
|
|
Address | getConstant (uintb val) const |
| Get a constant encoded as an Address. More...
|
|
Address | createConstFromSpace (AddrSpace *spc) const |
| Create a constant address encoding an address space. More...
|
|
Address | resolveConstant (AddrSpace *spc, uintb val, int4 sz, const Address &point, uintb &fullEncoding) const |
| Resolve a native constant into an Address. More...
|
|
int4 | numSpaces (void) const |
| Get the number of address spaces for this processor. More...
|
|
AddrSpace * | getSpace (int4 i) const |
| Get an address space via its index. More...
|
|
AddrSpace * | getNextSpaceInOrder (AddrSpace *spc) const |
| Get the next contiguous address space. More...
|
|
JoinRecord * | findAddJoin (const vector< VarnodeData > &pieces, uint4 logicalsize) |
| Get (or create) JoinRecord for pieces. More...
|
|
JoinRecord * | findJoin (uintb offset) const |
| Find JoinRecord for offset in the join space. More...
|
|
void | setDeadcodeDelay (AddrSpace *spc, int4 delaydelta) |
| Set the deadcodedelay for a specific space. More...
|
|
void | truncateSpace (const TruncationTag &tag) |
| Mark a space as truncated from its original size. More...
|
|
Address | constructFloatExtensionAddress (const Address &realaddr, int4 realsize, int4 logicalsize) |
| Build a logically lower precision storage location for a bigger floating point register. More...
|
|
Address | constructJoinAddress (const Translate *translate, const Address &hiaddr, int4 hisz, const Address &loaddr, int4 losz) |
| Build a logical whole from register pairs. More...
|
|
void | renormalizeJoinAddress (Address &addr, int4 size) |
| Make sure a possibly offset join address has a proper JoinRecord. More...
|
|
|
virtual Translate * | buildTranslator (DocumentStorage &store) |
| Build the Translator object. More...
|
|
virtual PcodeInjectLibrary * | buildPcodeInjectLibrary (void) |
| Build the injection library. More...
|
|
virtual void | buildSpecFile (DocumentStorage &store) |
| Load any relevant specification files. More...
|
|
virtual void | modifySpaces (Translate *trans) |
| Modify address spaces as required by this Architecture. More...
|
|
virtual void | resolveArchitecture (void) |
| Figure out the processor and compiler of the target executable.
|
|
void | addSpacebase (AddrSpace *basespace, const string &nm, const VarnodeData &ptrdata, int4 truncSize, bool isreversejustified, bool stackGrowth) |
| Create a new space and associated pointer. More...
|
|
void | addNoHighPtr (const Range &rng) |
| Add a new region where pointers do not exist. More...
|
|
virtual Scope * | buildDatabase (DocumentStorage &store) |
| Build the database and global scope for this executable. More...
|
|
virtual void | buildLoader (DocumentStorage &store)=0 |
| Build the LoadImage object and load the executable image. More...
|
|
virtual void | buildTypegrp (DocumentStorage &store) |
| Build the data-type factory/container. More...
|
|
virtual void | buildCommentDB (DocumentStorage &store) |
| Build the comment database. More...
|
|
virtual void | buildStringManager (DocumentStorage &store) |
| Build the string manager. More...
|
|
virtual void | buildConstantPool (DocumentStorage &store) |
| Build the constant pool. More...
|
|
virtual void | buildInstructions (DocumentStorage &store) |
| Register the p-code operations. More...
|
|
virtual void | buildAction (DocumentStorage &store) |
| Build the Action framework. More...
|
|
virtual void | buildContext (DocumentStorage &store) |
| Build the Context database. More...
|
|
virtual void | postSpecFile (void) |
| Let components initialize after Translate is built.
|
|
void | restoreFromSpec (DocumentStorage &store) |
| Fully initialize the Translate object. More...
|
|
void | fillinReadOnlyFromLoader (void) |
| Load info about read-only sections. More...
|
|
void | initializeSegments () |
| Set up segment resolvers. More...
|
|
void | cacheAddrSpaceProperties (void) |
| Calculate some frequently used space properties and cache them. More...
|
|
void | parseProcessorConfig (DocumentStorage &store) |
| Apply processor specific configuration. More...
|
|
void | parseCompilerConfig (DocumentStorage &store) |
| Apply compiler specific configuration. More...
|
|
void | parseExtraRules (DocumentStorage &store) |
| Apply any Rule tags. More...
|
|
void | parseDynamicRule (const Element *el) |
| Apply details of a dynamic Rule object. More...
|
|
ProtoModel * | parseProto (const Element *el) |
| Build a proto-type model from an XML tag. More...
|
|
void | parseProtoEval (const Element *el) |
| Apply prototype evaluation configuration. More...
|
|
void | parseDefaultProto (const Element *el) |
| Apply default prototype model configuration. More...
|
|
void | parseGlobal (const Element *el) |
| Apply global space configuration. More...
|
|
void | addOtherSpace (void) |
| Add OTHER space and all of its overlays to the symboltab.
|
|
void | parseReadOnly (const Element *el) |
| Apply read-only region configuration. More...
|
|
void | parseVolatile (const Element *el) |
| Apply volatile region configuration. More...
|
|
void | parseReturnAddress (const Element *el) |
| Apply return address configuration. More...
|
|
void | parseIncidentalCopy (const Element *el) |
| Apply incidental copy configuration. More...
|
|
void | parseLaneSizes (const Element *el) |
| Apply lane size configuration. More...
|
|
void | parseStackPointer (const Element *el) |
| Apply stack pointer configuration. More...
|
|
void | parseDeadcodeDelay (const Element *el) |
| Apply dead-code delay configuration. More...
|
|
void | parseInferPtrBounds (const Element *el) |
| Apply pointer inference bounds. More...
|
|
void | parseFuncPtrAlign (const Element *el) |
| Apply function pointer alignment configuration. More...
|
|
void | parseSpacebase (const Element *el) |
| Create an additional indexed space. More...
|
|
void | parseNoHighPtr (const Element *el) |
| Apply memory alias configuration. More...
|
|
void | parsePreferSplit (const Element *el) |
| Designate registers to be split. More...
|
|
void | parseAggressiveTrim (const Element *el) |
| Designate how to trim extension p-code ops. More...
|
|
AddrSpace * | restoreXmlSpace (const Element *el, const Translate *trans) |
| Add a space to the model based an on XML tag. More...
|
|
void | restoreXmlSpaces (const Element *el, const Translate *trans) |
| Restore address spaces in the model from an XML tag. More...
|
|
void | setDefaultCodeSpace (int4 index) |
| Set the default address space (for code) More...
|
|
void | setDefaultDataSpace (int4 index) |
| Set the default address space for data. More...
|
|
void | setReverseJustified (AddrSpace *spc) |
| Set reverse justified property on this space. More...
|
|
void | assignShortcut (AddrSpace *spc) |
| Select a shortcut character for a new space. More...
|
|
void | markNearPointers (AddrSpace *spc, int4 size) |
| Mark that given space can be accessed with near pointers. More...
|
|
void | insertSpace (AddrSpace *spc) |
| Add a new address space to the model. More...
|
|
void | copySpaces (const AddrSpaceManager *op2) |
| Copy spaces from another manager. More...
|
|
void | addSpacebasePointer (SpacebaseSpace *basespace, const VarnodeData &ptrdata, int4 truncSize, bool stackGrowth) |
| Set the base register of a spacebase space. More...
|
|
void | insertResolver (AddrSpace *spc, AddressResolver *rsolv) |
| Override the base resolver for a space. More...
|
|
void | setInferPtrBounds (const Range &range) |
| Set the range of addresses that can be inferred as pointers. More...
|
|
JoinRecord * | findJoinInternal (uintb offset) const |
| Find JoinRecord for offset in the join space. More...
|
|
An Architecture that uses the decompiler's native SLEIGH translation engine.
Any Architecture derived from this knows how to natively read in:
- a compiled SLEIGH specification (.sla)
- a processor specification file (.pspec), and
- a compiler specification file (.cspec)
Generally a language id (i.e. x86:LE:64:default) is provided, then this object is able to automatically load in configuration and construct the Translate object.