decompiler 1.0.0
Public Member Functions | Protected Attributes | Friends | List of all members
ghidra::MapEntry Class Reference

A mapping from a Symbol to storage Address. More...

#include <database.hh>

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

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...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ MapEntry()

ghidra::MapEntry::MapEntry ( Symbol *  sym,
uint4  exflags,
const Address &  ad,
int4  sz,
int4  off,
const RangeList &  use 
)

Constructor.

Parameters
symis the Symbol this will be a map for
exflagsare Varnode flags to be associated with the Symbol
adis the starting address of the mapped range
szis the number of bytes in the range
offis the byte offset into the Symbol, if this represents a piece
useis the range of code addresses where this mapping applies

Member Function Documentation

◆ decode()

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

◆ encode()

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

◆ getSizedType()

Datatype * ghidra::MapEntry::getSizedType ( const Address &  addr,
int4  sz 
) const
virtual

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.

Parameters
addris the given address
szis the given size (in bytes)
Returns
the matching data-type or NULL

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.

◆ printEntry()

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

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