SgAsmGenericHeader Class Reference

#include <Cxx_Grammar.h>

Inheritance diagram for SgAsmGenericHeader:

Inheritance graph
[legend]
Collaboration diagram for SgAsmGenericHeader:

Collaboration graph
[legend]
List of all members.

Public Types

typedef SgAsmGenericSection base_node_type
 static_variant = V_SgAsmGenericHeader
enum  { static_variant = V_SgAsmGenericHeader }
 static variant value More...

Public Member Functions

virtual SgNodecopy (SgCopyHelp &help) const
 SgAsmGenericHeader (SgAsmGenericFile *ef)
virtual ~SgAsmGenericHeader ()
virtual bool reallocate ()
 Allow all sections to reallocate themselves.
virtual void unparse (std::ostream &) const
 Unparse headers and all they point to.
virtual void dump (FILE *, const char *prefix, ssize_t idx) const
virtual const char * format_name () const
void add_dll (SgAsmGenericDLL *dll)
 Add a new DLL to the header DLL list.
std::vector< SgAsmGenericDLL * > & get_dlls ()
std::vector< unsigned char > & get_magic ()
rose_addr_t get_entry_rva () const
 Returns the RVA (relative to the header's base virtual address) of the first entry point.
void add_entry_rva (const rose_rva_t &rva)
SgAsmExecutableFileFormat::ByteOrder get_sex () const
size_t get_word_size () const
void add_section (SgAsmGenericSection *)
 Adds a new section to the header.
void remove_section (SgAsmGenericSection *)
 Removes a secton from the header's section list.
SgAsmGenericSectionPtrList get_mapped_sections () const
 Returns the list of sections that are memory mapped.
SgAsmGenericSectionPtrList get_sections_by_id (int id) const
 Returns sections in this header that have the specified ID.
SgAsmGenericSectionPtrList get_sections_by_name (std::string, char sep=0) const
 Returns sections in this header that have the specified name.
SgAsmGenericSectionPtrList get_sections_by_offset (rose_addr_t offset, rose_addr_t size) const
 Returns sectons in this header that contain all of the specified portion of the file.
SgAsmGenericSectionPtrList get_sections_by_rva (rose_addr_t rva) const
 Returns sections that have a preferred mapping that includes the specified relative virtual address.
SgAsmGenericSectionPtrList get_sections_by_va (rose_addr_t va, bool use_preferred) const
 Returns sections having a preferred or actual mapping that includes the specified virtual address.
SgAsmGenericSectionget_section_by_id (int id, size_t *nfound=0) const
 Returns single section in this header that has the specified ID.
SgAsmGenericSectionget_section_by_name (const std::string &, char sep=0, size_t *nfound=0) const
 Returns single section in this header that has the specified name.
SgAsmGenericSectionget_section_by_offset (rose_addr_t offset, rose_addr_t size, size_t *nfound=0) const
 Returns single section in this header that contains all of the specified portion of the file.
SgAsmGenericSectionget_section_by_rva (rose_addr_t rva, size_t *nfound=0) const
 Returns the single section having a preferred mapping that includes the specified relative virtual address.
SgAsmGenericSectionget_section_by_va (rose_addr_t va, bool use_preferred, size_t *nfound=0) const
 Returns the section having a preferred or actual mapping that includes the specified virtual address.
SgAsmGenericSectionget_best_section_by_va (rose_addr_t va, bool use_preferred, size_t *nfound=0) const
 Like SgAsmGenericFile::get_best_section_by_va() except considers only sections defined in this header.
virtual std::string class_name () const
 Copies AST (whole subtree, depending on the SgCopyHelp class returns a string representing the class name.
virtual VariantT variantT () const
 returns new style SageIII enum values
void * operator new (size_t size)
 returns pointer to newly allocated IR node
void operator delete (void *pointer, size_t size)
 deallocated memory for IR node (returns memory to memory pool for reuse)
void operator delete (void *pointer)
virtual std::vector< SgNode * > get_traversalSuccessorContainer ()
 FOR INTERNAL USE within ROSE traverals mechanism only.
virtual std::vector< std::string > get_traversalSuccessorNamesContainer ()
 FOR INTERNAL USE within ROSE traverals mechanism only.
virtual size_t get_numberOfTraversalSuccessors ()
virtual SgNodeget_traversalSuccessorByIndex (size_t idx)
virtual size_t get_childIndex (SgNode *child)
virtual RTIReturnType roseRTI ()
 FOR INTERNAL USE Access to Runtime Type Information (RTI) for this IR nodes.
virtual const char * sage_class_name () const ROSE_DEPRECATED_FUNCTION
void executeVisitorMemberFunction (ROSE_VisitorPattern &visitor)
 FOR INTERNAL USE Support for visitor pattern.
virtual void accept (ROSE_VisitorPattern &visitor)
 DXN (08/09/2010): support for the classic visitor pattern done in GoF.
virtual bool isInMemoryPool ()
 FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the heap.
virtual void checkDataMemberPointersIfInMemoryPool ()
 FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the heap.
virtual std::vector< std::pair<
SgNode *, std::string > > 
returnDataMemberPointers () const
 FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools
virtual void processDataMemberReferenceToPointers (ReferenceToPointerHandler *)
 FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools
virtual long getChildIndex (SgNode *childNode) const
 FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR node.
 SgAsmGenericHeader (const SgAsmGenericHeaderStorageClass &source)
SgAsmGenericHeaderaddRegExpAttribute (std::string s, AstRegExAttribute *a)
 Support for AST matching using regular expression.
SgAsmGenericFormatget_exec_format () const
void set_exec_format (SgAsmGenericFormat *exec_format)
SgCharList get_magic () const
void set_magic (SgCharList magic)
SgAsmGenericFormat::InsSetArchitecture get_isa () const
void set_isa (SgAsmGenericFormat::InsSetArchitecture isa)
rose_addr_t get_base_va () const
 Returns base virtual address for a section, or zero if the section is not associated with a header.
void set_base_va (rose_addr_t base_va)
const SgRVAListget_entry_rvas () const
SgRVAListget_entry_rvas ()
SgAsmGenericDLLListget_dlls () const
void set_dlls (SgAsmGenericDLLList *dlls)
SgAsmGenericSectionListget_sections () const
void set_sections (SgAsmGenericSectionList *sections)
 SgAsmGenericHeader ()

Static Public Member Functions

static size_t numberOfNodes ()
 Returns the total number of IR nodes of this type.
static size_t memoryUsage ()
 Returns the size in bytes of the total memory allocated for all IR nodes of this type.
static void traverseMemoryPoolNodes (ROSE_VisitTraversal &visit)
 FOR INTERNAL USE Support for visitor pattern.
static void traverseMemoryPoolVisitorPattern (ROSE_VisitorPattern &visitor)
 FOR INTERNAL USE Support for visitor pattern.
static void visitRepresentativeNode (ROSE_VisitTraversal &visit)
 FOR INTERNAL USE Support for type-based traversal.

Protected Attributes

SgAsmGenericFormatp_exec_format
SgCharList p_magic
SgAsmGenericFormat::InsSetArchitecture p_isa
rose_addr_t p_base_va
SgRVAList p_entry_rvas
SgAsmGenericDLLListp_dlls
SgAsmGenericSectionListp_sections

Private Member Functions

void ctor ()
 Constructor.

Friends

class AST_FILE_IO
class SgAsmGenericHeaderStorageClass
class AstSpecificDataManagingClass
class AstSpecificDataManagingClassStorageClass
SgAsmGenericHeaderisSgAsmGenericHeader (SgNode *s)
 Casts pointer from base class to derived class.
const SgAsmGenericHeaderisSgAsmGenericHeader (const SgNode *s)
 Casts pointer from base class to derived class (for const pointers).
SgAsmGenericHeaderSgAsmGenericHeader_getPointerFromGlobalIndex (unsigned long globalIndex)
 Constructor for use by AST File I/O MechanismTypedef used for low level memory access. Typedef used to hold memory addresses as values. Methods to find the pointer to a global and local index.
unsigned long SgAsmGenericHeader_getNumberOfValidNodesAndSetGlobalIndexInFreepointer (unsigned long)
 Get the size of the memory pool.
void SgAsmGenericHeader_clearMemoryPool ()
void SgAsmGenericHeader_extendMemoryPoolForFileIO (unsigned long)
void SgAsmGenericHeader_getNextValidPointer (std::pair< SgAsmGenericHeader *, std::vector< unsigned char * >::const_iterator > &)
void SgAsmGenericHeader_resetValidFreepointers ()

Member Typedef Documentation

typedef SgAsmGenericSection SgAsmGenericHeader::base_node_type

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.


Member Enumeration Documentation

anonymous enum

static variant value

Enumerator:
static_variant 


Constructor & Destructor Documentation

SgAsmGenericHeader::SgAsmGenericHeader ( SgAsmGenericFile ef  )  [inline, explicit]

SgAsmGenericHeader::~SgAsmGenericHeader (  )  [virtual]

SgAsmGenericHeader::SgAsmGenericHeader ( const SgAsmGenericHeaderStorageClass &  source  ) 

SgAsmGenericHeader::SgAsmGenericHeader (  ) 


Member Function Documentation

virtual SgNode* SgAsmGenericHeader::copy ( SgCopyHelp help  )  const [virtual]

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

bool SgAsmGenericHeader::reallocate (  )  [virtual]

Allow all sections to reallocate themselves.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

void SgAsmGenericHeader::unparse ( std::ostream &   )  const [virtual]

Unparse headers and all they point to.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

void SgAsmGenericHeader::dump ( FILE *  ,
const char *  prefix,
ssize_t  idx 
) const [virtual]

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual const char* SgAsmGenericHeader::format_name (  )  const [virtual]

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

void SgAsmGenericHeader::add_dll ( SgAsmGenericDLL dll  ) 

Add a new DLL to the header DLL list.

std::vector<SgAsmGenericDLL*>& SgAsmGenericHeader::get_dlls (  )  [inline]

std::vector<unsigned char>& SgAsmGenericHeader::get_magic (  )  [inline]

rose_addr_t SgAsmGenericHeader::get_entry_rva (  )  const

Returns the RVA (relative to the header's base virtual address) of the first entry point.

If there are no entry points defined then return a zero RVA.

void SgAsmGenericHeader::add_entry_rva ( const rose_rva_t rva  )  [inline]

SgAsmExecutableFileFormat::ByteOrder SgAsmGenericHeader::get_sex (  )  const

size_t SgAsmGenericHeader::get_word_size (  )  const

void SgAsmGenericHeader::add_section ( SgAsmGenericSection section  ) 

Adds a new section to the header.

This is called implicitly by the section constructor.

void SgAsmGenericHeader::remove_section ( SgAsmGenericSection  ) 

Removes a secton from the header's section list.

SgAsmGenericSectionPtrList SgAsmGenericHeader::get_mapped_sections (  )  const

Returns the list of sections that are memory mapped.

SgAsmGenericSectionPtrList SgAsmGenericHeader::get_sections_by_id ( int  id  )  const

Returns sections in this header that have the specified ID.

SgAsmGenericSectionPtrList SgAsmGenericHeader::get_sections_by_name ( std::string  name,
char  sep = 0 
) const

Returns sections in this header that have the specified name.

If 'SEP' is a non-null string then ignore any part of name at and after SEP.

SgAsmGenericSectionPtrList SgAsmGenericHeader::get_sections_by_offset ( rose_addr_t  offset,
rose_addr_t  size 
) const

Returns sectons in this header that contain all of the specified portion of the file.

SgAsmGenericSectionPtrList SgAsmGenericHeader::get_sections_by_rva ( rose_addr_t  rva  )  const

Returns sections that have a preferred mapping that includes the specified relative virtual address.

SgAsmGenericSectionPtrList SgAsmGenericHeader::get_sections_by_va ( rose_addr_t  va,
bool  use_preferred 
) const

Returns sections having a preferred or actual mapping that includes the specified virtual address.

If use_preferred is set, then the condition is evaluated by looking at the section's preferred mapping, otherwise the actual mapping is used. If an actual mapping is used, the specified virtual address must be part of the actual mapped section, not merely in the memory region that was also mapped to satisfy alignment constraints.

SgAsmGenericSection * SgAsmGenericHeader::get_section_by_id ( int  id,
size_t *  nfound = 0 
) const

Returns single section in this header that has the specified ID.

SgAsmGenericSection * SgAsmGenericHeader::get_section_by_name ( const std::string &  ,
char  sep = 0,
size_t *  nfound = 0 
) const

Returns single section in this header that has the specified name.

SgAsmGenericSection * SgAsmGenericHeader::get_section_by_offset ( rose_addr_t  offset,
rose_addr_t  size,
size_t *  nfound = 0 
) const

Returns single section in this header that contains all of the specified portion of the file.

SgAsmGenericSection * SgAsmGenericHeader::get_section_by_rva ( rose_addr_t  rva,
size_t *  nfound = 0 
) const

Returns the single section having a preferred mapping that includes the specified relative virtual address.

If there are no sections or multiple sections satisfying this condition then a null pointer is returned.

SgAsmGenericSection * SgAsmGenericHeader::get_section_by_va ( rose_addr_t  va,
bool  use_preferred,
size_t *  nfound = 0 
) const

Returns the section having a preferred or actual mapping that includes the specified virtual address.

If use_preferred is set, then the condition is evaluated by looking at the section's preferred mapping, otherwise the actual mapping is used. If an actual mapping is used, the specified virtual address must be part of the actual mapped section, not merely in the memory region that was also mapped to satisfy alignment constraints. If there are no sections or multiple sections satisfying this condition then a null pointer is returned.

SgAsmGenericSection * SgAsmGenericHeader::get_best_section_by_va ( rose_addr_t  va,
bool  use_preferred,
size_t *  nfound = 0 
) const

Like SgAsmGenericFile::get_best_section_by_va() except considers only sections defined in this header.

void SgAsmGenericHeader::ctor (  )  [private]

Constructor.

Headers (SgAsmGenericHeader and derived classes) set the file/header relationship--a bidirectional link between this new header and the single file that contains this new header. This new header points to its file and the file contains a list that points to this new header. The header-to-file half of the link is deleted by the default destructor by virtue of being a simple pointer, but we also need to delete the other half of the link in the destructors.

Reimplemented in SgAsmPEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual std::string SgAsmGenericHeader::class_name (  )  const [virtual]

Copies AST (whole subtree, depending on the SgCopyHelp class returns a string representing the class name.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual VariantT SgAsmGenericHeader::variantT (  )  const [virtual]

returns new style SageIII enum values

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

void* SgAsmGenericHeader::operator new ( size_t  size  ) 

returns pointer to newly allocated IR node

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

void SgAsmGenericHeader::operator delete ( void *  pointer,
size_t  size 
)

deallocated memory for IR node (returns memory to memory pool for reuse)

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

void SgAsmGenericHeader::operator delete ( void *  pointer  ) 

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

static size_t SgAsmGenericHeader::numberOfNodes (  )  [static]

Returns the total number of IR nodes of this type.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

static size_t SgAsmGenericHeader::memoryUsage (  )  [static]

Returns the size in bytes of the total memory allocated for all IR nodes of this type.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual std::vector<SgNode*> SgAsmGenericHeader::get_traversalSuccessorContainer (  )  [virtual]

FOR INTERNAL USE within ROSE traverals mechanism only.

This function builds and returns a copy of ordered container holding pointers to children of this node in a traversal. It is associated with the definition of a tree that is travered by the AST traversal mechanism; a tree that is embeded in the AST (which is a more general graph). This function is used within the implementation of the AST traversal and has a semantics may change in subtle ways that makes it difficult to use in user code. It can return unexpected data members and thus the order and the number of elements is unpredicable and subject to change.

Warning:
This function can return unexpected data members and thus the order and the number of elements is unpredicable and subject to change.
Returns:
Returns ordered STL Container of pointers to children nodes in AST.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual std::vector<std::string> SgAsmGenericHeader::get_traversalSuccessorNamesContainer (  )  [virtual]

FOR INTERNAL USE within ROSE traverals mechanism only.

This function builds and returns a copy of ordered container holding strings used to name data members that are traversed in the IR node. It is associated with the definition of a tree that is travered by the AST traversal mechanism; a tree that is embeded in the AST (which is a more general graph). This function is used within the implementation of the AST traversal and has a semantics may change in subtle ways that makes it difficult to use in user code. It can return unexpected data members and thus the order and the number of elements is unpredicable and subject to change.

Warning:
This function can return unexpected data members and thus the order and the number of elements is unpredicable and subject to change.
Each string is a name of a member variable holding a pointer to a child in the AST. The names are the same as used in the generated enums for accessing attributes in a traversal. The order is the same in which they are traversed and the same in which the access enums are defined. Therefore this method can be used to get the corresponding name (string) of an access enum which allows to produce more meaningful messages for attribute computations.

Returns:
Returns ordered STL container of names (strings) of access names to children nodes in AST.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual size_t SgAsmGenericHeader::get_numberOfTraversalSuccessors (  )  [virtual]

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual SgNode* SgAsmGenericHeader::get_traversalSuccessorByIndex ( size_t  idx  )  [virtual]

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual size_t SgAsmGenericHeader::get_childIndex ( SgNode child  )  [virtual]

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual RTIReturnType SgAsmGenericHeader::roseRTI (  )  [virtual]

FOR INTERNAL USE Access to Runtime Type Information (RTI) for this IR nodes.

This function provides runtime type information for accessing the structure of the current node. It is useful for generating code which would dump out or rebuild IR nodes.

Returns:
Returns a RTIReturnType object (runtime type information).

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual const char* SgAsmGenericHeader::sage_class_name (  )  const [virtual]

returns a C style string (char*) representing the class name

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

void SgAsmGenericHeader::executeVisitorMemberFunction ( ROSE_VisitorPattern visitor  ) 

FOR INTERNAL USE Support for visitor pattern.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual void SgAsmGenericHeader::accept ( ROSE_VisitorPattern visitor  )  [virtual]

DXN (08/09/2010): support for the classic visitor pattern done in GoF.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

static void SgAsmGenericHeader::traverseMemoryPoolNodes ( ROSE_VisitTraversal visit  )  [static]

FOR INTERNAL USE Support for visitor pattern.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

static void SgAsmGenericHeader::traverseMemoryPoolVisitorPattern ( ROSE_VisitorPattern visitor  )  [static]

FOR INTERNAL USE Support for visitor pattern.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

static void SgAsmGenericHeader::visitRepresentativeNode ( ROSE_VisitTraversal visit  )  [static]

FOR INTERNAL USE Support for type-based traversal.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual bool SgAsmGenericHeader::isInMemoryPool (  )  [virtual]

FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the heap.

The AST File I/O depends upon the allocation of IR nodes being from the heap, stack based or global IR nodes should not appear in the AST if it will be written out to a file and read back in. To enforce this concept, this function implements a test to verify that the IR node can be found on the heap and is part of a larger test of the whole AST. This test must pass before the AST can be written out to a file. This is part of a compromise in the design of the AST File I/O to support binary streaming of data to files; for performance. It is also rather difficult, but possible, to build a useful AST with IR nodes allocated on the stack or frm global scope, this test filters out such cased from being used with the AST File I/O mechanism.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual void SgAsmGenericHeader::checkDataMemberPointersIfInMemoryPool (  )  [virtual]

FOR INTERNAL USE This is used in internal tests to verify that all IR nodes are allocated from the heap.

The AST File I/O depends upon the allocation of IR nodes being from the heap, stack based or global IR nodes should not appear in the AST if it will be written out to a file and read back in. To enforce this concept, this function implements a test to verify that the IR node can be found on the heap and is part of a larger test of the whole AST. This test must pass before the AST can be written out to a file. This is part of a compromise in the design of the AST File I/O to support binary streaming of data to files; for performance. It is also rather difficult, but possible, to build a useful AST with IR nodes allocated on the stack or frm global scope, this test filters out such cased from being used with the AST File I/O mechanism.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual std::vector<std::pair<SgNode*,std::string> > SgAsmGenericHeader::returnDataMemberPointers (  )  const [virtual]

FOR INTERNAL USE Returns STL vector of pairs of SgNode* and strings for use in AST tools

This functions is part of general support for many possible tools to operate on the AST. The forms a list of ALL IR node pointers used by each IR node, and is a supperset of the get_traversalSuccessorContainer(). It is (I think) less than the set of pointers used by the AST file I/O. This is part of work implemented by Andreas, and support tools such as the AST graph generation.

Warning:
This function can return unexpected data members and thus the order and the number of elements is unpredicable and subject to change.
Returns:
STL vector of pairs of SgNode* and strings

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual void SgAsmGenericHeader::processDataMemberReferenceToPointers ( ReferenceToPointerHandler *   )  [virtual]

FOR INTERNAL USE Processes pairs of references to SgNode* and strings for use in AST tools

This functions similar to returnDataMemberPointers() except that it passes references to a handler object. As a result there is FAR more damage that can be done by using this function, but it is type-safe. This is provided for support of internal tools that operate on the AST, e.g the AST Merge mechanism.

Warning:
This function can return unexpected data members and thus the order and the number of elements is unpredicable and subject to change.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

virtual long SgAsmGenericHeader::getChildIndex ( SgNode childNode  )  const [virtual]

FOR INTERNAL USE Returns a unique index value for the childNode in the list of children at this IR node.

This function returns a unique value for the input childNode in set of children at this IR node. Note that a negative value indicates that the input node is not a child. This is the basis for the implementation of the isChild(SgNode*) member function. Data members that are NULL in the IR node are counted internally (so that this function returns value that could be statically defined, and so are not dynamically determined).

Warning:
The mapping on children to integer values could change from release to release of ROSE.
Returns:
long

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

SgAsmGenericHeader* SgAsmGenericHeader::addRegExpAttribute ( std::string  s,
AstRegExAttribute a 
)

Support for AST matching using regular expression.

This support is incomplete and the subject of current research to define RegEx trees to support inexact matching.

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

SgAsmGenericFormat* SgAsmGenericHeader::get_exec_format (  )  const

void SgAsmGenericHeader::set_exec_format ( SgAsmGenericFormat exec_format  ) 

SgCharList SgAsmGenericHeader::get_magic (  )  const

void SgAsmGenericHeader::set_magic ( SgCharList  magic  ) 

SgAsmGenericFormat::InsSetArchitecture SgAsmGenericHeader::get_isa (  )  const

void SgAsmGenericHeader::set_isa ( SgAsmGenericFormat::InsSetArchitecture  isa  ) 

rose_addr_t SgAsmGenericHeader::get_base_va (  )  const

Returns base virtual address for a section, or zero if the section is not associated with a header.

Reimplemented from SgAsmGenericSection.

void SgAsmGenericHeader::set_base_va ( rose_addr_t  base_va  ) 

const SgRVAList& SgAsmGenericHeader::get_entry_rvas (  )  const

SgRVAList& SgAsmGenericHeader::get_entry_rvas (  ) 

SgAsmGenericDLLList* SgAsmGenericHeader::get_dlls (  )  const

void SgAsmGenericHeader::set_dlls ( SgAsmGenericDLLList dlls  ) 

SgAsmGenericSectionList* SgAsmGenericHeader::get_sections (  )  const

void SgAsmGenericHeader::set_sections ( SgAsmGenericSectionList sections  ) 


Friends And Related Function Documentation

friend class AST_FILE_IO [friend]

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

friend class SgAsmGenericHeaderStorageClass [friend]

friend class AstSpecificDataManagingClass [friend]

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

friend class AstSpecificDataManagingClassStorageClass [friend]

Reimplemented from SgAsmGenericSection.

Reimplemented in SgAsmPEFileHeader, SgAsmLEFileHeader, SgAsmNEFileHeader, SgAsmDOSFileHeader, and SgAsmElfFileHeader.

SgAsmGenericHeader* isSgAsmGenericHeader ( SgNode s  )  [friend]

Casts pointer from base class to derived class.

const SgAsmGenericHeader* isSgAsmGenericHeader ( const SgNode s  )  [friend]

Casts pointer from base class to derived class (for const pointers).

SgAsmGenericHeader* SgAsmGenericHeader_getPointerFromGlobalIndex ( unsigned long  globalIndex  )  [friend]

Constructor for use by AST File I/O MechanismTypedef used for low level memory access. Typedef used to hold memory addresses as values. Methods to find the pointer to a global and local index.

unsigned long SgAsmGenericHeader_getNumberOfValidNodesAndSetGlobalIndexInFreepointer ( unsigned  long  )  [friend]

Get the size of the memory pool.

It actually returns the size of the whole blocks allocated, no matter they contain valid pointers or not.

void SgAsmGenericHeader_clearMemoryPool (  )  [friend]

void SgAsmGenericHeader_extendMemoryPoolForFileIO ( unsigned  long  )  [friend]

void SgAsmGenericHeader_getNextValidPointer ( std::pair< SgAsmGenericHeader *, std::vector< unsigned char * >::const_iterator > &   )  [friend]

void SgAsmGenericHeader_resetValidFreepointers (  )  [friend]


Member Data Documentation

SgAsmGenericFormat* SgAsmGenericHeader::p_exec_format [protected]

SgCharList SgAsmGenericHeader::p_magic [protected]

SgAsmGenericFormat::InsSetArchitecture SgAsmGenericHeader::p_isa [protected]

rose_addr_t SgAsmGenericHeader::p_base_va [protected]

SgRVAList SgAsmGenericHeader::p_entry_rvas [protected]

SgAsmGenericDLLList* SgAsmGenericHeader::p_dlls [protected]

SgAsmGenericSectionList* SgAsmGenericHeader::p_sections [protected]


The documentation for this class was generated from the following files:
Generated on Tue Jan 31 05:37:07 2012 for ROSE by  doxygen 1.4.7