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

Special Datatype object used to describe pointers that index into the symbol table. More...

#include <type.hh>

Inheritance diagram for TypeSpacebase:
Datatype

Public Member Functions

 TypeSpacebase (const TypeSpacebase &op)
 Construct from another TypeSpacebase.
 
 TypeSpacebase (AddrSpace *id, const Address &frame, Architecture *g)
 Construct given an address space, scope, and architecture.
 
ScopegetMap (void) const
 Get the symbol table indexed by this. More...
 
Address getAddress (uintb off, int4 sz, const Address &point) const
 Construct an Address given an offset. More...
 
virtual DatatypegetSubType (uintb off, uintb *newoff) const
 Recover component data-type one-level down. More...
 
virtual int4 compare (const Datatype &op, int4 level) const
 Compare for functional equivalence. More...
 
virtual int4 compareDependency (const Datatype &op) const
 Compare for storage in tree structure. More...
 
virtual Datatypeclone (void) const
 Clone the data-type.
 
virtual void saveXml (ostream &s) const
 Serialize the data-type to XML. More...
 
- Public Member Functions inherited from Datatype
 Datatype (const Datatype &op)
 Construct the base data-type copying low-level properties of another.
 
 Datatype (int4 s, type_metatype m)
 Construct the base data-type providing size and meta-type.
 
 Datatype (int4 s, type_metatype m, const string &n)
 Construct the base data-type providing size, meta-type, and name.
 
virtual void printRaw (ostream &s) const
 Print a description of the type to stream. More...
 
int4 typeOrderBool (const Datatype &op) const
 Order this with -op-, treating bool data-type as special. More...
 
void saveXmlBasic (ostream &s) const
 Save basic data-type properties. More...
 
void saveXmlRef (ostream &s) const
 Write an XML reference of this to stream. More...
 

Private Member Functions

virtual void restoreXml (const Element *el, TypeFactory &typegrp)
 Restore data-type from XML. More...
 

Private Attributes

AddrSpacespaceid
 The address space we are treating as a structure.
 
Address localframe
 Address of function whose symbol table is indexed (or INVALID for "global")
 
Architectureglb
 Architecture for accessing symbol table.
 

Friends

class TypeFactory
 

Additional Inherited Members

- Protected Types inherited from Datatype
enum  {
  coretype = 1, chartype = 2, enumtype = 4, poweroftwo = 8,
  utf16 = 16, utf32 = 32
}
 Boolean properties of datatypes. More...
 
- Protected Member Functions inherited from Datatype
void restoreXmlBasic (const Element *el)
 Recover basic data-type properties. More...
 
- Static Protected Member Functions inherited from Datatype
static uint8 hashName (const string &nm)
 Produce a data-type id by hashing the type name. More...
 
- Protected Attributes inherited from Datatype
int4 size
 Size (of variable holding a value of this type)
 
string name
 Name of type.
 
type_metatype metatype
 Meta-type - type disregarding size.
 
uint4 flags
 Boolean properties of the type.
 
uint8 id
 A unique id for the type (or 0 if an id is not assigned)
 

Detailed Description

Special Datatype object used to describe pointers that index into the symbol table.

A TypeSpacebase treats a specific AddrSpace as "structure" that will get indexed in to. This facilitates type propagation from local symbols into the stack space and from global symbols into the RAM space.

Member Function Documentation

◆ compare()

int4 TypeSpacebase::compare ( const Datatype op,
int4  level 
) const
virtual

Compare for functional equivalence.

Compare this with another data-type. 0 (equality) means the data-types are functionally equivalent (even if names differ) Smaller types come earlier. More specific types come earlier.

Parameters
opis the data-type to compare with this
levelis maximum level to descend when recursively comparing
Returns
negative, 0, positive depending on ordering of types

Reimplemented from Datatype.

◆ compareDependency()

int4 TypeSpacebase::compareDependency ( const Datatype op) const
virtual

Compare for storage in tree structure.

Ordering of data-types for the main TypeFactory container. Comparison only goes down one-level in the component structure, before just comparing pointers.

Parameters
opis the data-type to compare with this
Returns
negative, 0, positive depending on ordering of types

Reimplemented from Datatype.

◆ getAddress()

Address TypeSpacebase::getAddress ( uintb  off,
int4  sz,
const Address point 
) const

Construct an Address given an offset.

Return the Address being referred to by a specific offset relative to a pointer with this Datatype

Parameters
offis the offset relative to the pointer
szis the size of offset (as a pointer)
pointis a "context" reference for the request
Returns
the referred to Address

Referenced by RulePtrsubCharConstant::applyOp(), Funcdata::linkSymbolReference(), PrintC::opPtrsub(), and ActionInferTypes::propagateSpacebaseRef().

◆ getMap()

Scope * TypeSpacebase::getMap ( void  ) const

Get the symbol table indexed by this.

This data-type can index either a local or the global scope

Returns
the symbol table Scope

Referenced by RulePtrsubCharConstant::applyOp(), and Funcdata::linkSymbolReference().

◆ getSubType()

Datatype * TypeSpacebase::getSubType ( uintb  off,
uintb *  newoff 
) const
virtual

Recover component data-type one-level down.

Given an offset into this data-type, return the component data-type at that offset. Also, pass back a "renormalized" offset suitable for recursize getSubType() calls: i.e. if the original offset hits the exact start of the sub-type, 0 is passed back. If there is no valid component data-type at the offset, return NULL and pass back the original offset

Parameters
offis the offset into this data-type
newoffis a pointer to the passed-back offset
Returns
a pointer to the component data-type or NULL

Reimplemented from Datatype.

◆ restoreXml()

void TypeSpacebase::restoreXml ( const Element el,
TypeFactory typegrp 
)
privatevirtual

Restore data-type from XML.

Restore a Datatype object from an XML element

Parameters
elis the XML element
typegrpis the underlying TypeFactory that will hold the new object

Reimplemented from Datatype.

Referenced by TypeFactory::restoreXmlTypeNoRef().

◆ saveXml()

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

Serialize the data-type to XML.

Write out a formal description of the data-type as an XML <type> tag. For composite data-types, the description goes down one level, describing the component types only by reference.

Parameters
sis the stream to write to

Reimplemented from Datatype.

References a_v(), AddrSpace::getName(), Datatype::saveXmlBasic(), and spaceid.


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