#include <LibSymbolInfo.h>
List of all members.
Detailed Description
Definition at line 19 of file LibSymbolInfo.h.
Constructor & Destructor Documentation
| CLibSymbolInfo::CLibSymbolInfo |
( |
) |
|
| CLibSymbolInfo::~CLibSymbolInfo |
( |
) |
[virtual] |
Member Function Documentation
| DWORD CLibSymbolInfo::ConvertBigEndian |
( |
DWORD |
bigEndian ) |
[protected] |
Definition at line 179 of file LibSymbolInfo.cpp.
{
DWORD temp = 0;
temp |= bigEndian >> 24;
temp |= ((bigEndian & 0x00FF0000) >> 8);
temp |= ((bigEndian & 0x0000FF00) << 8);
temp |= ((bigEndian & 0x000000FF) << 24);
return temp;
}
| BOOL CLibSymbolInfo::Dump |
( |
LPTSTR |
lpszLibPathName, |
|
|
std::ostream & |
pFile |
|
) |
| [protected] |
Definition at line 67 of file LibSymbolInfo.cpp.
{
string sBuff;
MEMORY_MAPPED_FILE libFile(lpszLibPathName);
if( FALSE == libFile.IsValid() ) {
m_strErrorMsg = "Unable to access file ";
m_strErrorMsg+= lpszLibPathName;
return FALSE;
}
PSTR pArchiveStartString = (PSTR)libFile.GetBase();
if ( 0 != strncmp( pArchiveStartString, IMAGE_ARCHIVE_START,
IMAGE_ARCHIVE_START_SIZE ) ) {
m_strErrorMsg.assign("Not a valid COFF LIB file.");
return FALSE;
}
PIMAGE_ARCHIVE_MEMBER_HEADER pMbrHdr;
pMbrHdr = MakePtr( PIMAGE_ARCHIVE_MEMBER_HEADER, pArchiveStartString,
IMAGE_ARCHIVE_START_SIZE );
PDWORD pcbSymbols = (PDWORD)(pMbrHdr + 1);
DWORD cSymbols = ConvertBigEndian( *pcbSymbols );
PDWORD pMemberOffsets = pcbSymbols + 1;
PSTR pszSymbolName = MakePtr( PSTR, pMemberOffsets, 4 * cSymbols );
for ( unsigned i = 0; i < cSymbols; i++ )
{
DWORD offset;
offset = ConvertBigEndian( *pMemberOffsets );
if ( IsRegularLibSymbol( pszSymbolName ) ) {
string symbol(pszSymbolName);
if (IsFiltedSymbol(symbol) ) {
pFile << symbol << endl;
}
}
pMemberOffsets++;
pszSymbolName += strlen(pszSymbolName) + 1;
}
return TRUE;
}
| BOOL CLibSymbolInfo::DumpSymbols |
( |
LPTSTR |
lpszLibPathName, |
|
|
std::ostream & |
pFile |
|
) |
| |
| string CLibSymbolInfo::GetLastError |
( |
) |
const |
| BOOL CLibSymbolInfo::IsFiltedSymbol |
( |
std::string & |
pszSymbolName ) |
[protected] |
Definition at line 159 of file LibSymbolInfo.cpp.
{
if ( symbolName.substr(0,2) == "__" )
return FALSE;
if ( symbolName.substr(0,3) == "??_" && symbolName[3] != '0')
return FALSE;
if( symbolName[0] == '_') {
symbolName.erase(0, 1);
}
if (symbolName.find ("detail@boost") != string::npos )
return FALSE;
if (symbolName.find ("details@boost") != string::npos )
return FALSE;
return TRUE;
}
| BOOL CLibSymbolInfo::IsRegularLibSymbol |
( |
PSTR |
pszSymbolName ) |
[protected] |
Definition at line 143 of file LibSymbolInfo.cpp.
{
if ( 0 == strncmp( pszSymbolName, "__IMPORT_DESCRIPTOR_", 20 ) )
return FALSE;
if ( 0 == strncmp( pszSymbolName, "__NULL_IMPORT_DESCRIPTOR", 24 ) )
return FALSE;
if ( strstr( pszSymbolName, "_NULL_THUNK_DATA" ) )
return FALSE;
return TRUE;
}
Member Data Documentation
The documentation for this class was generated from the following files:
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v23r3/GaudiKernel/src/Util/LibSymbolInfo.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v23r3/GaudiKernel/src/Util/LibSymbolInfo.cpp