decompiler  1.0.0
Public Member Functions | Private Attributes | List of all members
EquateSymbol Class Reference

A Symbol that holds equate information for a constant. More...

#include <database.hh>

Inheritance diagram for EquateSymbol:
Symbol

Public Member Functions

 EquateSymbol (Scope *sc)
 Constructor for use with restoreXml.
 
uintb getValue (void) const
 Get the constant value.
 
bool isValueClose (uintb op2Value, int4 size) const
 Is the given value similar to this equate. 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...
 
- Public Member Functions inherited from Symbol
 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.
 
DatatypegetType (void) const
 Get the data-type.
 
uint4 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...
 
ScopegetScope (void) const
 Get the scope owning this Symbol.
 
SymbolEntrygetFirstWholeMap (void) const
 Get the first entire mapping of the symbol. More...
 
SymbolEntrygetMapEntry (const Address &addr) const
 Get first mapping of the symbol that contains the given Address. 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...
 

Private Attributes

uintb value
 Value of the constant being equated.
 

Additional Inherited Members

- Public Types inherited from Symbol
enum  {
  force_hex = 1, force_dec = 2, force_oct = 3, force_bin = 4,
  force_char = 5, size_typelock = 8
}
 Possible display (dispflag) properties for a Symbol. More...
 
- Protected Member Functions inherited from Symbol
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 inherited from Symbol
Scopescope
 The scope that owns this symbol.
 
string name
 The local name of the symbol.
 
uint4 nameDedup
 id to distinguish symbols with the same name
 
Datatypetype
 The symbol's data-type.
 
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.
 
vector< list< SymbolEntry >::iterator > mapentry
 List of storage locations labeled with this Symbol.
 

Detailed Description

A Symbol that holds equate information for a constant.

This is a symbol that labels a constant. It can either replace the constant's token with the symbol name, or it can force a conversion in the emitted format of the constant.

Member Function Documentation

◆ isValueClose()

bool EquateSymbol::isValueClose ( uintb  op2Value,
int4  size 
) const

Is the given value similar to this equate.

An EquateSymbol should survive certain kinds of transforms during decompilation, such as negation, twos-complementing, adding or subtracting 1. Return true if the given value looks like a transform of this type relative to the underlying value of this equate.

Parameters
op2Valueis the given value
sizeis the number of bytes of precision
Returns
true if it is a transformed form

References calc_mask(), sign_extend(), and value.

Referenced by Varnode::copySymbolIfValid().

◆ restoreXml()

void EquateSymbol::restoreXml ( const Element el)
virtual

Restore this Symbol from an XML stream.

Parameters
elis the root XML tag of the symbol

Reimplemented from Symbol.

References Symbol::checkSizeTypeLock(), Scope::getArch(), TypeFactory::getBase(), Symbol::restoreXmlHeader(), Symbol::scope, Symbol::type, TYPE_UNKNOWN, Architecture::types, and value.

◆ saveXml()

void EquateSymbol::saveXml ( ostream &  s) const
virtual

Save this Symbol to an XML stream.

Parameters
sis the output stream

Reimplemented from Symbol.

References Symbol::saveXmlHeader(), and value.


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