|
My Project
|
The base class for a symbol in a symbol table or scope. More...
#include <database.hh>


Public Types | |
| enum | { force_hex = 1, force_dec = 2, force_oct = 3, force_bin = 4, force_char = 5, size_typelock = 8, isolate = 16, merge_problems = 32 } |
| Possible display (dispflag) properties for a Symbol. More... | |
Public Member Functions | |
| Symbol (Scope *sc, const string &nm, Datatype *ct) | |
| Construct given a name and data-type. | |
| Symbol (Scope *sc) | |
| Construct for use with restoreXml() | |
| const string & | getName (void) const |
| Get the local name of the symbol. | |
| Datatype * | getType (void) const |
| Get the data-type. | |
| uint8 | getId (void) const |
| Get a unique id for the symbol. | |
| uint4 | getFlags (void) const |
| Get the boolean properties of the Symbol. | |
| uint4 | getDisplayFormat (void) const |
| Get the format to display the Symbol in. | |
| int2 | getCategory (void) const |
| Get the Symbol category. | |
| uint2 | getCategoryIndex (void) const |
| Get the position of the Symbol within its category. | |
| bool | isTypeLocked (void) const |
| Is the Symbol type-locked. | |
| bool | isNameLocked (void) const |
| Is the Symbol name-locked. | |
| bool | isSizeTypeLocked (void) const |
| Is the Symbol size type-locked. | |
| bool | isIndirectStorage (void) const |
| Is storage really a pointer to the true Symbol. | |
| bool | isHiddenReturn (void) const |
| Is this a reference to the function return value. | |
| bool | isNameUndefined (void) const |
| Does this have an undefined name. More... | |
| bool | isMultiEntry (void) const |
| Does this have more than one entire mapping. | |
| bool | hasMergeProblems (void) const |
| Were some SymbolEntrys not merged. | |
| void | setMergeProblems (void) |
| Mark that some SymbolEntrys could not be merged. | |
| bool | isIsolated (void) const |
| Return true if this is isolated from speculative merging. | |
| void | setIsolated (bool val) |
| Set whether this Symbol should be speculatively merged. More... | |
| Scope * | getScope (void) const |
| Get the scope owning this Symbol. | |
| SymbolEntry * | getFirstWholeMap (void) const |
| Get the first entire mapping of the symbol. More... | |
| SymbolEntry * | getMapEntry (const Address &addr) const |
| Get first mapping of the symbol that contains the given Address. More... | |
| int4 | numEntries (void) const |
| Return the number of SymbolEntrys. | |
| SymbolEntry * | getMapEntry (int4 i) const |
| Return the i-th SymbolEntry for this Symbol. | |
| int4 | getMapEntryPosition (const SymbolEntry *entry) const |
| Position of given SymbolEntry within this multi-entry Symbol. More... | |
| int4 | getResolutionDepth (const Scope *useScope) const |
| Get the number of scope names to print to resolve symbol in given context. More... | |
| void | saveXmlHeader (ostream &s) const |
| Save basic Symbol properties as XML attributes. More... | |
| void | restoreXmlHeader (const Element *el) |
| Restore basic Symbol properties from XML. More... | |
| void | saveXmlBody (ostream &s) const |
| Save details of the Symbol to XML. More... | |
| void | restoreXmlBody (List::const_iterator iter) |
| Restore details of the Symbol from XML. More... | |
| virtual void | saveXml (ostream &s) const |
| Save this Symbol to an XML stream. More... | |
| virtual void | restoreXml (const Element *el) |
| Restore this Symbol from an XML stream. More... | |
| virtual int4 | getBytesConsumed (void) const |
| Get number of bytes consumed within the address->symbol map. More... | |
Static Public Attributes | |
| static uint8 | ID_BASE = 0x4000000000000000L |
| Base of internal ID's. | |
Protected Member Functions | |
| virtual | ~Symbol (void) |
| Destructor. | |
| void | setDisplayFormat (uint4 val) |
| Set the display format for this Symbol. More... | |
| void | checkSizeTypeLock (void) |
| Calculate if size_typelock property is on. More... | |
Protected Attributes | |
| Scope * | scope |
| The scope that owns this symbol. | |
| string | name |
| The local name of the symbol. | |
| Datatype * | type |
| The symbol's data-type. | |
| uint4 | nameDedup |
| id to distinguish symbols with the same name | |
| uint4 | flags |
| Varnode-like properties of the symbol. | |
| uint4 | dispflags |
| Flags affecting the display of this symbol. | |
| int2 | category |
| Special category (-1==none 0=parameter 1=equate) | |
| uint2 | catindex |
| Index within category. | |
| uint8 | symbolId |
| Unique id, 0=unassigned. | |
| vector< list< SymbolEntry >::iterator > | mapentry |
| List of storage locations labeled with this Symbol. | |
| uint4 | wholeCount |
| Number of SymbolEntries that map to the whole Symbol. | |
Friends | |
| class | Scope |
| class | ScopeInternal |
| class | SymbolCompareName |
The base class for a symbol in a symbol table or scope.
At its most basic, a Symbol is a name and a data-type. Practically a Symbol knows what Scope its in, how it should be displayed, and the symbols category. A category is a subset of symbols that are stored together for quick access. The category field can be:
| anonymous enum |
Possible display (dispflag) properties for a Symbol.
| Enumerator | |
|---|---|
| force_hex | Force hexadecimal printing of constant symbol. |
| force_dec | Force decimal printing of constant symbol. |
| force_oct | Force octal printing of constant symbol. |
| force_bin | Force binary printing of constant symbol. |
| force_char | Force integer to be printed as a character constant. |
| size_typelock | Only the size of the symbol is typelocked. |
| isolate | Symbol should not speculatively merge automatically. |
| merge_problems | Set if some SymbolEntrys did not get merged. |
|
protected |
|
virtual |
Get number of bytes consumed within the address->symbol map.
Get the number of bytes consumed by a SymbolEntry representing this Symbol. By default, this is the number of bytes consumed by the Symbol's data-type. This gives the amount of leeway a search has when the address queried does not match the exact address of the Symbol. With functions, the bytes consumed by a SymbolEntry may not match the data-type size.
Reimplemented in FunctionSymbol.
| SymbolEntry * Symbol::getFirstWholeMap | ( | void | ) | const |
Get the first entire mapping of the symbol.
| SymbolEntry * Symbol::getMapEntry | ( | const Address & | addr | ) | const |
Get first mapping of the symbol that contains the given Address.
This method may return a partial entry, where the SymbolEntry is only holding part of the whole Symbol.
| addr | is an address within the desired storage location of the Symbol |
| int4 Symbol::getMapEntryPosition | ( | const SymbolEntry * | entry | ) | const |
Position of given SymbolEntry within this multi-entry Symbol.
Among all the SymbolEntrys that map this entire Symbol, calculate the position of the given SymbolEntry within the list.
| entry | is the given SymbolEntry |
| int4 Symbol::getResolutionDepth | ( | const Scope * | useScope | ) | const |
Get the number of scope names to print to resolve symbol in given context.
A value of 0 means the base Symbol name is visible and not overridden in the given use scope. A value of 1 means the base name may be overridden, but the parent scope name is not. The minimual number of names that distinguishes this Symbol uniquely within the use scope is returned.
| useScope | is the given scope where this Symbol is being used |
| bool Symbol::isNameUndefined | ( | void | ) | const |
Does this have an undefined name.
The name for a Symbol can be unspecified. See ScopeInternal::buildUndefinedName
|
virtual |
Restore this Symbol from an XML stream.
| el | is the root XML tag of the symbol |
Reimplemented in ExternRefSymbol, LabSymbol, EquateSymbol, and FunctionSymbol.
| void Symbol::restoreXmlBody | ( | List::const_iterator | iter | ) |
Restore details of the Symbol from XML.
| iter | iterates over XML children of the root <symbol> tag |
| void Symbol::restoreXmlHeader | ( | const Element * | el | ) |
Restore basic Symbol properties from XML.
| el | is the XML <symbol> element |
|
virtual |
Save this Symbol to an XML stream.
| s | is the output stream |
Reimplemented in ExternRefSymbol, LabSymbol, EquateSymbol, and FunctionSymbol.
| void Symbol::saveXmlBody | ( | ostream & | s | ) | const |
| void Symbol::saveXmlHeader | ( | ostream & | s | ) | const |
Save basic Symbol properties as XML attributes.
| s | is the output stream |
|
inlineprotected |
Set the display format for this Symbol.
Force a specific display format for constant symbols
| val | is the format: force_hex, force_dec, force_oct, etc. |
| void Symbol::setIsolated | ( | bool | val | ) |
1.8.13