|
decompiler 1.0.0
|
A mapping from Symbol to Address when there are conflicting uses of the Address. More...
#include <database.hh>
Public Member Functions | |
| MapEntryConflict (Symbol *sym, Varnode *vn) | |
| Constructor. More... | |
| uintm | getUnique (void) const |
| Get id of PcodeOp defining the conflicting Varnode. | |
| 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... | |
Public Member Functions inherited from ghidra::MapEntry | |
| 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... | |
Private Attributes | |
| uintm | uniq |
| Unique id of PcodeOp defining mapped Varnode. | |
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... | |
Protected Attributes inherited from ghidra::MapEntry | |
| 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. | |
A mapping from Symbol to Address when there are conflicting uses of the Address.
If storage is (potentially) used by other Symbols at the same code point (uselimit), the Varnode is mapped using this, which allows potential deconfliction later, by converting to a DynamicEntry.
Constructor.
| sym | is the Symbol this will be a map for |
| vn | is the Varnode with a storage conflict (must be written) |
References ghidra::MapEntry::addr, ghidra::SymbolEntry::conflict_entry, ghidra::SymbolEntry::entrytype, ghidra::SeqNum::getAddr(), ghidra::Varnode::getAddr(), ghidra::Varnode::getDef(), ghidra::Address::getOffset(), ghidra::PcodeOp::getSeqNum(), ghidra::Varnode::getSize(), ghidra::Address::getSpace(), ghidra::SeqNum::getTime(), ghidra::RangeList::insertRange(), ghidra::SymbolEntry::size, uniq, and ghidra::SymbolEntry::uselimit.
|
virtual |
Decode storage element internal to <mapsym>
Reimplemented from ghidra::MapEntry.
|
virtual |
Encode storage element internal to <mapsym>
Reimplemented from ghidra::MapEntry.
References ghidra::Encoder::closeElement(), ghidra::RangeList::encode(), ghidra::SymbolEntry::isPiece(), ghidra::Encoder::openElement(), ghidra::SymbolEntry::uselimit, and ghidra::Encoder::writeUnsignedInteger().
|
virtual |
Print a one-line description of this to a debug stream.
Reimplemented from ghidra::MapEntry.
References ghidra::MapEntry::printEntry().