Dyninst::SymtabAPI::Archive Class Reference

#include <Archive.h>

Inheritance diagram for Dyninst::SymtabAPI::Archive:
Dyninst::AnnotatableSparse

Public Types

typedef dyn_hash_map< void
*, void *, void_ptr_hasher
annos_by_type_t
typedef std::vector
< annos_by_type_t * > 
annos_t

Public Member Functions

 ~Archive ()
bool getMember (Symtab *&img, string &member_name)
bool getMemberByOffset (Symtab *&img, Offset memberOffset)
bool getMemberByGlobalSymbol (Symtab *&img, string &symbol_name)
bool getAllMembers (vector< Symtab * > &members)
bool isMemberInArchive (string &member_name)
bool findMemberWithDefinition (Symtab *&obj, string &name)
std::string name ()
bool getMembersBySymbol (string name, std::vector< Symtab * > &matches)
template<class T >
AN_INLINE bool addAnnotation (const T *a, AnnotationClass< T > &a_id)
bool operator== (AnnotatableSparse &cmp)
template<class T >
AN_INLINE bool getAnnotation (T *&a, AnnotationClass< T > &a_id) const
template<class T >
bool removeAnnotation (AnnotationClass< T > &a_id)
void serializeAnnotations (SerializerBase *sb, const char *)
void annotationsReport ()

Static Public Member Functions

static bool openArchive (Archive *&img, string filename)
static bool openArchive (Archive *&img, char *mem_image, size_t image_size)
static SymtabError getLastError ()
static string printError (SymtabError err)

Private Member Functions

 Archive (string &filename, bool &err)
 Archive (char *mem_image, size_t image_size, bool &err)
bool parseMember (Symtab *&img, ArchiveMember *member)
bool parseSymbolTable ()

Private Attributes

MappedFilemf
void * basePtr
dyn_hash_map< string,
ArchiveMember * > 
membersByName
dyn_hash_map< Offset,
ArchiveMember * > 
membersByOffset
std::multimap< string,
ArchiveMember * > 
membersBySymbol
bool symbolTableParsed

Static Private Attributes

static vector< Archive * > allArchives
static SymtabError serr
static std::string errMsg

Detailed Description

Definition at line 74 of file Archive.h.


Member Typedef Documentation

typedef dyn_hash_map<void *, void *, void_ptr_hasher> Dyninst::AnnotatableSparse::annos_by_type_t [inherited]

Definition at line 505 of file Annotatable.h.

typedef std::vector<annos_by_type_t *> Dyninst::AnnotatableSparse::annos_t [inherited]

Definition at line 508 of file Annotatable.h.


Constructor & Destructor Documentation

Archive::~Archive (  ) 

Definition at line 297 of file Archive.C.

References allArchives, MappedFile::closeMappedFile(), membersByName, and mf.

Dyninst::SymtabAPI::Archive::Archive ( string &  filename,
bool &  err 
) [private]

Referenced by openArchive().

Archive::Archive ( char *  mem_image,
size_t  image_size,
bool &  err 
) [private]

Definition at line 97 of file Archive-elf.C.

References errMsg, Dyninst::SymtabAPI::Obj_Parsing, and serr.


Member Function Documentation

template<class T >
AN_INLINE bool Dyninst::AnnotatableSparse::addAnnotation ( const T *  a,
AnnotationClass< T > &  a_id 
) [inline, inherited]
void Dyninst::AnnotatableSparse::annotationsReport (  )  [inline, inherited]
bool Dyninst::SymtabAPI::Archive::findMemberWithDefinition ( Symtab *&  obj,
string &  name 
)
bool Archive::getAllMembers ( vector< Symtab * > &  members  ) 

Definition at line 243 of file Archive.C.

References membersByName, and parseMember().

template<class T >
AN_INLINE bool Dyninst::AnnotatableSparse::getAnnotation ( T *&  a,
AnnotationClass< T > &  a_id 
) const [inline, inherited]
SymtabError Archive::getLastError (  )  [static]

Definition at line 61 of file Archive.C.

References serr.

bool Archive::getMember ( Symtab *&  img,
string &  member_name 
)
bool Archive::getMemberByGlobalSymbol ( Symtab *&  img,
string &  symbol_name 
)
bool Archive::getMemberByOffset ( Symtab *&  img,
Offset  memberOffset 
)
bool Dyninst::SymtabAPI::Archive::getMembersBySymbol ( string  name,
std::vector< Symtab * > &  matches 
)
bool Dyninst::SymtabAPI::Archive::isMemberInArchive ( string &  member_name  ) 
std::string Archive::name (  ) 

Definition at line 84 of file Archive.C.

References MappedFile::filename(), and mf.

Referenced by Dyninst::SymtabAPI::emitElfStatic::resolveSymbols().

bool Archive::openArchive ( Archive *&  img,
char *  mem_image,
size_t  image_size 
) [static]

Definition at line 116 of file Archive.C.

References allArchives, and Archive().

static bool Dyninst::SymtabAPI::Archive::openArchive ( Archive *&  img,
string  filename 
) [static]
bool Dyninst::AnnotatableSparse::operator== ( AnnotatableSparse cmp  )  [inline, inherited]
bool Archive::parseMember ( Symtab *&  img,
ArchiveMember member 
) [private]
bool Archive::parseSymbolTable (  )  [private]

This method is architecture specific

Post-condition: sets serr and errMsg if there is an error

Definition at line 152 of file Archive-elf.C.

References basePtr, errMsg, membersByOffset, membersBySymbol, Dyninst::SymtabAPI::Obj_Parsing, serr, and symbolTableParsed.

Referenced by getMemberByGlobalSymbol().

std::string Archive::printError ( SymtabError  err  )  [static]
template<class T >
bool Dyninst::AnnotatableSparse::removeAnnotation ( AnnotationClass< T > &  a_id  )  [inline, inherited]
void Dyninst::AnnotatableSparse::serializeAnnotations ( SerializerBase sb,
const char *   
) [inline, inherited]

Field Documentation

std::vector< Archive * > Archive::allArchives [static, private]

Definition at line 129 of file Archive.h.

Referenced by openArchive(), and ~Archive().

Definition at line 118 of file Archive.h.

Referenced by parseMember(), and parseSymbolTable().

std::string Archive::errMsg [static, private]
dyn_hash_map<string, ArchiveMember *> Dyninst::SymtabAPI::Archive::membersByName [private]

Definition at line 120 of file Archive.h.

Referenced by getAllMembers(), getMember(), and ~Archive().

Definition at line 121 of file Archive.h.

Referenced by getMemberByOffset(), and parseSymbolTable().

std::multimap<string, ArchiveMember *> Dyninst::SymtabAPI::Archive::membersBySymbol [private]

Definition at line 122 of file Archive.h.

Referenced by getMemberByGlobalSymbol(), and parseSymbolTable().

Definition at line 113 of file Archive.h.

Referenced by name(), and ~Archive().

SymtabError Archive::serr [static, private]

Definition at line 125 of file Archive.h.

Referenced by getMemberByGlobalSymbol(), and parseSymbolTable().


The documentation for this class was generated from the following files:
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 12 Jul 2013 for SymtabAPI by  doxygen 1.6.1