decompiler 1.0.0
Public Member Functions | Private Attributes | List of all members
ghidra::MapEntryConflict Class Reference

A mapping from Symbol to Address when there are conflicting uses of the Address. More...

#include <database.hh>

Inheritance diagram for ghidra::MapEntryConflict:
ghidra::MapEntry ghidra::SymbolEntry

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.
 

Detailed Description

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 & Destructor Documentation

◆ MapEntryConflict()

ghidra::MapEntryConflict::MapEntryConflict ( Symbol *  sym,
Varnode *  vn 
)

Member Function Documentation

◆ decode()

void ghidra::MapEntryConflict::decode ( Decoder &  decoder)
virtual

Decode storage element internal to <mapsym>

Reimplemented from ghidra::MapEntry.

◆ encode()

void ghidra::MapEntryConflict::encode ( Encoder &  encoder) const
virtual

◆ printEntry()

void ghidra::MapEntryConflict::printEntry ( ostream &  s) const
virtual

Print a one-line description of this to a debug stream.

Reimplemented from ghidra::MapEntry.

References ghidra::MapEntry::printEntry().


The documentation for this class was generated from the following files: