|
| ScopeLocal (AddrSpace *spc, Funcdata *fd, Architecture *g) |
| Constructor. More...
|
|
virtual | ~ScopeLocal (void) |
| Destructor.
|
|
AddrSpace * | getSpaceId (void) const |
| Get the associated (stack) address space.
|
|
bool | isUnaffectedStorage (Varnode *vn) const |
| Is this a storage location for unaffected registers. More...
|
|
void | markNotMapped (AddrSpace *spc, uintb first, int4 sz, bool param) |
| Mark a specific address range is not mapped. 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 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...
|
|
void | resetLocalWindow (void) |
| Reset the set of addresses that are considered mapped by the scope to the default. More...
|
|
void | restructureVarnode (bool aliasyes) |
| Layout mapped symbols based on Varnode information. More...
|
|
void | restructureHigh (void) |
| Layout mapped symbols based on HighVariable information. More...
|
|
SymbolEntry * | remapSymbol (Symbol *sym, const Address &addr, const Address &usepoint) |
| Change the primary mapping for the given Symbol to be a specific storage address and use point. More...
|
|
SymbolEntry * | remapSymbolDynamic (Symbol *sym, uint8 hash, const Address &usepoint) |
| Make the primary mapping for the given Symbol, dynamic. More...
|
|
void | recoverNameRecommendationsForSymbols (void) |
| Run through name recommendations, checking if any match unnamed symbols. More...
|
|
| ScopeInternal (const string &nm, Architecture *g) |
| Construct the Scope. More...
|
|
virtual void | clear (void) |
| Clear all symbols from this scope.
|
|
virtual void | categorySanity (void) |
| Make sure Symbol categories are sane. More...
|
|
virtual void | clearCategory (int4 cat) |
| Clear all symbols of the given category from this scope.
|
|
virtual void | clearUnlocked (void) |
| Clear all unlocked symbols from this scope.
|
|
virtual void | clearUnlockedCategory (int4 cat) |
| Clear unlocked symbols of the given category from this scope.
|
|
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 | 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 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 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 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 &name) const |
| Check if the given name is used within this scope. More...
|
|
virtual Funcdata * | resolveExternalRefFunction (ExternRefSymbol *sym) const |
| Convert an external reference to the referenced function. More...
|
|
virtual string | buildUndefinedName (void) const |
| Build a formal undefined name, used internally when a Symbol is not given a name. 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 | 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...
|
|
void | assignDefaultNames (int4 &base) |
| Assign a default name (via buildVariableName) to any unnamed symbol. More...
|
|
set< Symbol * >::const_iterator | beginMultiEntry (void) const |
| Start of symbols with more than one entry.
|
|
set< Symbol * >::const_iterator | endMultiEntry (void) const |
| End of symbols with more than one entry.
|
|
| Scope (const string &nm, Architecture *g) |
| 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...
|
|
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...
|
|
const string & | getName (void) const |
| Get the name of the Scope.
|
|
bool | isGlobal (void) const |
| Return true if this scope is global.
|
|
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) 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...
|
|
ScopeMap::const_iterator | childrenBegin () const |
| Beginning iterator of child scopes.
|
|
ScopeMap::const_iterator | childrenEnd () const |
| Ending iterator of child scopes.
|
|
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 | getNameSegments (vector< string > &vec) const |
| Get the fullname of this in segments. More...
|
|
void | getScopePath (vector< Scope *> &vec) const |
| Get the ordered list of parent scopes to this. More...
|
|
bool | isNameUsed (const string &nm, const Scope *op2) const |
| Is the given name in use within given scope path. More...
|
|
const Scope * | findDistinguishingScope (const Scope *op2) const |
| Find first ancestor of this not shared by given scope. More...
|
|
Architecture * | getArch (void) const |
| Get the Architecture associated with this.
|
|
Scope * | getParent (void) const |
| Get the parent Scope (or NULL if this is the global Scope)
|
|
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...
|
|
void | printBounds (ostream &s) const |
| Print a description of this Scope's owned memory ranges.
|
|
|
static void | savePathXml (ostream &s, const vector< string > &vec) |
| Save a path with <val> tags. More...
|
|
static void | restorePathXml (vector< string > &vec, const Element *el) |
| Restore path from <val> tags. More...
|
|
virtual void | addSymbolInternal (Symbol *sym) |
| Put a Symbol into the name map. More...
|
|
virtual SymbolEntry * | addMapInternal (Symbol *sym, uint4 exfl, const Address &addr, int4 off, int4 sz, const RangeList &uselim) |
| Create a new SymbolEntry for a Symbol given a memory range. More...
|
|
virtual SymbolEntry * | addDynamicMapInternal (Symbol *sym, uint4 exfl, uint8 hash, int4 off, int4 sz, const RangeList &uselim) |
| Create a new SymbolEntry for a Symbol given a dynamic hash. More...
|
|
const RangeList & | getRangeTree (void) const |
| Access the address ranges owned by this Scope.
|
|
virtual void | restrictScope (Funcdata *f) |
| Convert this to a local Scope. More...
|
|
virtual void | addRange (AddrSpace *spc, uintb first, uintb last) |
| Add a memory range to the ownership of this Scope. More...
|
|
virtual void | removeRange (AddrSpace *spc, uintb first, uintb last) |
| Remove a memory range from the ownership of this Scope. More...
|
|
SymbolEntry * | addMap (const SymbolEntry &entry) |
| Integrate a SymbolEntry into the range maps. More...
|
|
void | setSymbolId (Symbol *sym, uint8 id) const |
| Adjust the id associated with a symbol.
|
|
static const Scope * | stackAddr (const Scope *scope1, const Scope *scope2, const Address &addr, const Address &usepoint, SymbolEntry **addrmatch) |
| Query for Symbols starting at a given address, which match a given usepoint. More...
|
|
static const Scope * | stackContainer (const Scope *scope1, const Scope *scope2, const Address &addr, int4 size, const Address &usepoint, SymbolEntry **addrmatch) |
|
static const Scope * | stackClosestFit (const Scope *scope1, const Scope *scope2, const Address &addr, int4 size, const Address &usepoint, SymbolEntry **addrmatch) |
|
static const Scope * | stackFunction (const Scope *scope1, const Scope *scope2, const Address &addr, Funcdata **addrmatch) |
|
static const Scope * | stackExternalRef (const Scope *scope1, const Scope *scope2, const Address &addr, ExternRefSymbol **addrmatch) |
|
static const Scope * | stackCodeLabel (const Scope *scope1, const Scope *scope2, const Address &addr, LabSymbol **addrmatch) |
|
SymbolNameTree | nametree |
| The set of Symbol objects, sorted by name.
|
|
vector< EntryMap * > | maptable |
| Rangemaps of SymbolEntry, one map for each address space.
|
|
vector< vector< Symbol * > > | category |
| References to Symbol objects organized by category.
|
|
list< SymbolEntry > | dynamicentry |
| Dynamic symbol entries.
|
|
SymbolNameTree | multiEntrySet |
| Set of symbols with multiple entries.
|
|
uint8 | nextUniqueId |
| Next available symbol id.
|
|
Architecture * | glb |
| Architecture of this scope.
|
|
string | name |
| Name of this scope.
|
|
Funcdata * | fd |
| (If non-null) the function which this is the local Scope for
|
|
uint4 | uniqueId |
| Unique id for the scope, for deduping scope names, assigning symbol ids.
|
|
A Symbol scope for local variables of a particular function.
This acts like any other variable Scope, but is associated with a specific function and the address space where the function maps its local variables and parameters, typically the stack space. This object in addition to managing the local Symbols, builds up information about the stack address space: what portions of it are used for mapped local variables, what portions are used for temporary storage (not mapped), and what portion is for parameters.