|
| | SleighArchitecture (const string &fname, const string &targ, ostream *estream) |
| | Construct given executable file. More...
|
| |
| 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 |
| |
| | 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.