|
decompiler 1.0.0
|
A mapping from a Symbol to storage Address. More...
#include <database.hh>
Public Member Functions | |
| MapEntry (Symbol *sym, uint4 exflags, const Address &ad, int4 sz, int4 off, const RangeList &use) | |
| Constructor. More... | |
| MapEntry (Symbol *sym) | |
| Construct and uninitialized MapEntry for use with decode() | |
| virtual Datatype * | getSizedType (const Address &addr, int4 sz) const |
| Get the data-type associated with (a piece of) this. More... | |
| virtual void | printEntry (ostream &s) const |
| Print a one-line description of this to a debug stream. More... | |
| virtual void | encode (Encoder &encoder) const |
| Encode storage element internal to <mapsym> More... | |
| virtual void | decode (Decoder &decoder) |
| Decode storage element internal to <mapsym> More... | |
| uintb | getFirst (void) const |
| Get the first offset of this storage location. | |
| uintb | getLast (void) const |
| Get the last offset of this storage location. | |
| const Address & | getAddr (void) const |
| Get the starting address of this storage. | |
Public Member Functions inherited from ghidra::SymbolEntry | |
| SymbolEntry (Symbol *sym) | |
| Construct an uninitialized SymbolEntry. More... | |
| SymbolEntry (Symbol *sym, uint4 exflags, int4 sz, int4 off, const RangeList &use) | |
| Constructor. More... | |
| bool | isPiece (void) const |
| Is this a proper piece of the whole Symbol. | |
| bool | isDynamic (void) const |
| Is storage dynamic. | |
| bool | isConflict (void) const |
| Does storage have potential Symbol conflicts. | |
| virtual Datatype * | getSizedType (const Address &addr, int4 sz) const =0 |
| Get the data-type associated with (a piece of) this. More... | |
| virtual void | printEntry (ostream &s) const =0 |
| Print a one-line description of this to a debug stream. More... | |
| virtual void | encode (Encoder &encoder) const =0 |
| Encode storage element internal to <mapsym> More... | |
| virtual void | decode (Decoder &decoder)=0 |
| Decode storage element internal to <mapsym> More... | |
| uint4 | getAllFlags (void) const |
| Get all Varnode flags for this storage. More... | |
| int4 | getOffset (void) const |
| Get offset of this within the Symbol. | |
| Symbol * | getSymbol (void) const |
| Get the Symbol associated with this. | |
| int4 | getSize (void) const |
| Get the number of bytes consumed by this storage. | |
| bool | inUse (const Address &usepoint) const |
| Is this storage valid for the given code address. More... | |
| const RangeList & | getUseLimit (void) const |
| Get the set of valid code addresses for this storage. | |
| Address | getFirstUseAddress (void) const |
| Get the first code address where this storage is valid. | |
| void | setUseLimit (const RangeList &uselim) |
| Set the range of code addresses where this is valid. | |
| bool | isAddrTied (void) const |
| Is this storage address tied. | |
| bool | updateType (Varnode *vn) const |
| Update a Varnode data-type from this. More... | |
Protected Attributes | |
| Address | addr |
| Starting address of the storage location. | |
| list< SymbolRange >::iterator | mapIterator |
| Position within container. | |
Protected Attributes inherited from ghidra::SymbolEntry | |
| Symbol * | symbol |
| Symbol object being mapped. | |
| RangeList | uselimit |
| Code address ranges where this storage is valid. | |
| uint4 | extraflags |
| Varnode flags specific to this storage location. | |
| int4 | offset |
| Offset into the Symbol that this covers. | |
| int4 | size |
| Number of bytes consumed by this (piece of the) storage. | |
| uint2 | entrytype |
| Type of SymbolEntry. | |
| bool | is_piece |
| Is this a piece of the whole symbol. | |
Friends | |
| class | Scope |
| class | ScopeInternal |
Additional Inherited Members | |
Protected Types inherited from ghidra::SymbolEntry | |
| enum | { map_entry = 0 , conflict_entry = 1 , dynamic_entry = 2 } |
| The type (derived class) of SymbolEntry. More... | |
A mapping from a Symbol to storage Address.
This object holds a (starting) Address of the Symbol and can be integrated into an EntryMap. A single Symbol split across multiple storage locations is supported by the offset and size fields.
| ghidra::MapEntry::MapEntry | ( | Symbol * | sym, |
| uint4 | exflags, | ||
| const Address & | ad, | ||
| int4 | sz, | ||
| int4 | off, | ||
| const RangeList & | use | ||
| ) |
Constructor.
| sym | is the Symbol this will be a map for |
| exflags | are Varnode flags to be associated with the Symbol |
| ad | is the starting address of the mapped range |
| sz | is the number of bytes in the range |
| off | is the byte offset into the Symbol, if this represents a piece |
| use | is the range of code addresses where this mapping applies |
|
virtual |
Decode storage element internal to <mapsym>
Implements ghidra::SymbolEntry.
Reimplemented in ghidra::MapEntryConflict.
References addr, ghidra::Address::decode(), ghidra::RangeList::decode(), ghidra::Address::isInvalid(), and ghidra::SymbolEntry::uselimit.
|
virtual |
Encode storage element internal to <mapsym>
Implements ghidra::SymbolEntry.
Reimplemented in ghidra::MapEntryConflict.
References addr, ghidra::Address::encode(), ghidra::RangeList::encode(), ghidra::SymbolEntry::isPiece(), and ghidra::SymbolEntry::uselimit.
Get the data-type associated with (a piece of) this.
Return the data-type that matches the given size and address within this storage. NULL is returned if there is no valid sub-type matching the size.
| addr | is the given address |
| sz | is the given size (in bytes) |
Implements ghidra::SymbolEntry.
References addr, ghidra::Scope::getArch(), ghidra::TypeFactory::getExactPiece(), ghidra::Address::getOffset(), ghidra::Symbol::getScope(), ghidra::Symbol::getType(), ghidra::SymbolEntry::offset, ghidra::SymbolEntry::symbol, and ghidra::Architecture::types.
|
virtual |
Print a one-line description of this to a debug stream.
Implements ghidra::SymbolEntry.
Reimplemented in ghidra::MapEntryConflict.
References addr, ghidra::Symbol::getName(), ghidra::Address::getShortcut(), ghidra::Datatype::getSize(), ghidra::Symbol::getType(), ghidra::RangeList::printBounds(), ghidra::Address::printRaw(), ghidra::Datatype::printRaw(), ghidra::SymbolEntry::symbol, and ghidra::SymbolEntry::uselimit.
Referenced by ghidra::MapEntryConflict::printEntry().