|
| ScopeGhidra (ArchitectureGhidra *g) |
| Constructor. More...
|
|
void | lockDefaultProperties (void) |
| Lock in the default state of the boolean property map. More...
|
|
virtual void | clear (void) |
| Clear all symbols from this scope.
|
|
virtual SymbolEntry * | addSymbol (const string &name, Datatype *ct, const Address &addr, const Address &usepoint) |
| Add a new Symbol to this Scope, given a name, data-type, and a single mapping. More...
|
|
virtual string | buildVariableName (const Address &addr, const Address &pc, Datatype *ct, int4 &index, uint4 flags) const |
| Given an address and data-type, build a suitable generic symbol name. More...
|
|
virtual string | buildUndefinedName (void) const |
| Build a formal undefined name, used internally when a Symbol is not given a name. More...
|
|
virtual void | setAttribute (Symbol *sym, uint4 attr) |
| Set boolean Varnode properties on a Symbol.
|
|
virtual void | clearAttribute (Symbol *sym, uint4 attr) |
| Clear boolean Varnode properties on a Symbol.
|
|
virtual void | setDisplayFormat (Symbol *sym, uint4 attr) |
| Set the display format for a Symbol.
|
|
virtual void | adjustCaches (void) |
| Let scopes internally adjust any caches. More...
|
|
virtual SymbolEntry * | findAddr (const Address &addr, const Address &usepoint) const |
| Find a Symbol at a given address and usepoint. More...
|
|
virtual SymbolEntry * | findContainer (const Address &addr, int4 size, const Address &usepoint) const |
| Find the smallest Symbol containing the given memory range. More...
|
|
virtual SymbolEntry * | findClosestFit (const Address &addr, int4 size, const Address &usepoint) const |
| Find Symbol which is the closest fit to the given memory range. More...
|
|
virtual Funcdata * | findFunction (const Address &addr) const |
| Find the function starting at the given address. More...
|
|
virtual ExternRefSymbol * | findExternalRef (const Address &addr) const |
| Find an external reference at the given address. More...
|
|
virtual LabSymbol * | findCodeLabel (const Address &addr) const |
| Find a label Symbol at the given address. More...
|
|
virtual Funcdata * | resolveExternalRefFunction (ExternRefSymbol *sym) const |
| Convert an external reference to the referenced function. More...
|
|
virtual SymbolEntry * | findOverlap (const Address &addr, int4 size) const |
| Find first Symbol overlapping the given memory range. More...
|
|
virtual void | findByName (const string &name, vector< Symbol * > &res) const |
| Find a Symbol by name within this Scope. More...
|
|
virtual bool | isNameUsed (const string &nm, const Scope *op2) const |
| Check if the given name is occurs within the given scope path. More...
|
|
virtual MapIterator | begin (void) const |
| Beginning iterator to mapped SymbolEntrys.
|
|
virtual MapIterator | end (void) const |
| Ending iterator to mapped SymbolEntrys.
|
|
virtual list< SymbolEntry >::const_iterator | beginDynamic (void) const |
| Beginning iterator to dynamic SymbolEntrys.
|
|
virtual list< SymbolEntry >::const_iterator | endDynamic (void) const |
| Ending iterator to dynamic SymbolEntrys.
|
|
virtual list< SymbolEntry >::iterator | beginDynamic (void) |
| Beginning iterator to dynamic SymbolEntrys.
|
|
virtual list< SymbolEntry >::iterator | endDynamic (void) |
| Ending iterator to dynamic SymbolEntrys.
|
|
virtual void | clearCategory (int4 cat) |
| Clear all symbols of the given category from this scope.
|
|
virtual void | clearUnlockedCategory (int4 cat) |
| Clear unlocked symbols of the given category from this scope.
|
|
virtual void | clearUnlocked (void) |
| Clear all unlocked symbols from this scope.
|
|
virtual void | restrictScope (Funcdata *f) |
| Convert this to a local Scope. More...
|
|
virtual void | removeSymbolMappings (Symbol *symbol) |
| Remove all SymbolEntrys from the given Symbol.
|
|
virtual void | removeSymbol (Symbol *symbol) |
| Remove the given Symbol from this Scope.
|
|
virtual void | renameSymbol (Symbol *sym, const string &newname) |
| Rename a Symbol within this Scope.
|
|
virtual void | retypeSymbol (Symbol *sym, Datatype *ct) |
| Change the data-type of a Symbol within this Scope. More...
|
|
virtual string | makeNameUnique (const string &nm) const |
| Produce a version of the given symbol name that won't collide with other names in this Scope. More...
|
|
virtual void | saveXml (ostream &s) const |
| Write out this as a <scope> XML tag.
|
|
virtual void | restoreXml (const Element *el) |
| Restore this Scope from a <scope> XML tag.
|
|
virtual void | printEntries (ostream &s) const |
| Dump a description of all SymbolEntry objects to a stream.
|
|
virtual int4 | getCategorySize (int4 cat) const |
| Get the number of Symbols in the given category. More...
|
|
virtual Symbol * | getCategorySymbol (int4 cat, int4 ind) const |
| Retrieve a Symbol by index within a specific category. More...
|
|
virtual void | setCategory (Symbol *sym, int4 cat, int4 ind) |
| Set the category and index for the given Symbol. More...
|
|
| Scope (uint8 id, const string &nm, Architecture *g, Scope *own) |
| Construct an empty scope, given a name and Architecture.
|
|
virtual | ~Scope (void) |
| Destructor.
|
|
virtual bool | inScope (const Address &addr, int4 size, const Address &usepoint) const |
| Query if the given range is owned by this Scope. More...
|
|
void | queryByName (const string &name, vector< Symbol * > &res) const |
| Look-up symbols by name. More...
|
|
Funcdata * | queryFunction (const string &name) const |
| Look-up a function by name. More...
|
|
SymbolEntry * | queryByAddr (const Address &addr, const Address &usepoint) const |
| Get Symbol with matching address. More...
|
|
SymbolEntry * | queryContainer (const Address &addr, int4 size, const Address &usepoint) const |
| Find the smallest containing Symbol. More...
|
|
SymbolEntry * | queryProperties (const Address &addr, int4 size, const Address &usepoint, uint4 &flags) const |
| Find a Symbol or properties at the given address. More...
|
|
Funcdata * | queryFunction (const Address &addr) const |
| Look-up a function by address. More...
|
|
Funcdata * | queryExternalRefFunction (const Address &addr) const |
| Look-up a function thru an external reference. More...
|
|
LabSymbol * | queryCodeLabel (const Address &addr) const |
| Look-up a code label by address. More...
|
|
Scope * | resolveScope (const string &name, bool strategy) const |
| Find a child Scope of this. More...
|
|
Scope * | discoverScope (const Address &addr, int4 sz, const Address &usepoint) |
| Find the owning Scope of a given memory range. More...
|
|
void | saveXmlRecursive (ostream &s, bool onlyGlobal) const |
| Save all contained scopes as an XML stream. More...
|
|
void | overrideSizeLockType (Symbol *sym, Datatype *ct) |
| Change the data-type of a Symbol that is sizelocked. More...
|
|
void | resetSizeLockType (Symbol *sym) |
| Clear a Symbol's size-locked data-type. More...
|
|
bool | isSubScope (const Scope *scp) const |
| Is this a sub-scope of the given Scope. More...
|
|
string | getFullName (void) const |
| Get the full name of this Scope.
|
|
void | getScopePath (vector< const Scope * > &vec) const |
| Get the ordered list of scopes up to this. More...
|
|
const Scope * | findDistinguishingScope (const Scope *op2) const |
| Find first ancestor of this not shared by given scope. More...
|
|
Symbol * | addSymbol (const string &name, Datatype *ct) |
| Add a new Symbol without mapping it to an address. More...
|
|
SymbolEntry * | addMapPoint (Symbol *sym, const Address &addr, const Address &usepoint) |
| Map a Symbol to a specific address. More...
|
|
Symbol * | addMapSym (const Element *el) |
| Add a mapped Symbol from a <mapsym> XML tag. More...
|
|
FunctionSymbol * | addFunction (const Address &addr, const string &nm) |
| Create a function Symbol at the given address in this Scope. More...
|
|
ExternRefSymbol * | addExternalRef (const Address &addr, const Address &refaddr, const string &nm) |
|
LabSymbol * | addCodeLabel (const Address &addr, const string &nm) |
| Create a code label at the given address in this Scope. More...
|
|
Symbol * | addDynamicSymbol (const string &nm, Datatype *ct, const Address &caddr, uint8 hash) |
| Create a dynamically mapped Symbol attached to a specific data-flow. More...
|
|
string | buildDefaultName (Symbol *sym, int4 &base, Varnode *vn) const |
| Create a default name for the given Symbol. More...
|
|
bool | isReadOnly (const Address &addr, int4 size, const Address &usepoint) const |
| Is the given memory range marked as read-only. More...
|
|
An implementation of the Scope interface by querying a Ghidra client for Symbol information.
This object is generally instantiated once for an executable and acts as the global scope for the decompiler. Queries for symbol information are forwarded to the Ghidra client and the response is cached. This object fields queries for all scopes above functions. Responses may be for Symbol objects that are not global but belong to sub-scopes, like namespace and function Scopes. This object will build any new Scope or Funcdata, object as necessary and stick the Symbol in, returning as if the new Scope had caught the query in the first place.