--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/perfsrv/analyzetool/commandlineengine/inc/catromsymbol.h Fri Sep 17 08:38:31 2010 +0300
@@ -0,0 +1,196 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Defines CATRomSymbol, RofsBinary classes and Symbol
+* structure.
+*
+*/
+
+
+#ifndef __CATROMSYMBOL_H__
+#define __CATROMSYMBOL_H__
+
+#include "ATCommonDefines.h"
+#include "iaddresstoline.h"
+
+const string ROM_SYMBOL_IDENTIFY_STRING = "80";
+const string ROFS_SYMBOL_IDENTIFY_STRING = "00";
+const int IDENTIFY_MAX_LINES_READ = 20;
+
+/**
+* Represents a single symbol in a binary.
+*/
+struct Symbol
+{
+ unsigned long iStartAddress; /** Start address */
+ unsigned long iEndAddress; /** End address */
+ string sFunction; /** Function/Symbol name */
+ /**
+ * Default constructor for structure to set default values
+ */
+ Symbol() { iStartAddress=0; iEndAddress=0; sFunction = ""; }
+ /**
+ * Empty destructor
+ */
+ ~Symbol() {}
+};
+
+
+/**
+* Represents a single binary in ROM/ROFS which
+* contains a collection of Symbols.
+*/
+class RofsBinary {
+public:
+ /**
+ * Constructor
+ */
+ RofsBinary();
+ /**
+ * Constructor
+ * @param sbinary
+ */
+ RofsBinary( const string& sbinary );
+ /**
+ * Destructor
+ */
+ ~RofsBinary();
+
+ // Members
+
+ string m_sBinary; /** Binary / code segment */
+ vector<Symbol*> vSymbols; /** Collection of symbols */
+};
+
+/**
+* Implements IAddressToLine interface to acquire symbol information
+* using memory addresses from rom/rofs symbol files.
+*/
+class CATRomSymbol : public IAddressToLine
+{
+public:
+ /**
+ * Constructor.
+ */
+ CATRomSymbol();
+ /**
+ * Destructor.
+ */
+ virtual ~CATRomSymbol();
+ bool m_bShowProgressMessages; /** "Flag" will we show progress when reading files */
+ /**
+ * Empty functions does nothing returns false always.
+ * @param sString
+ * @param iLong
+ * @return true if successful.
+ */
+ bool Open( const string& sString, const unsigned long iLong);
+ /**
+ * Set symbol files.
+ * This also checks that files exists and identifies them as rom/rofs.
+ * @param vSymbols
+ * @return bool
+ */
+ bool SetSymbols( const vector<string>& vSymbols);
+ /**
+ * Get error string. In case of any method failed use this to acquire details on error.
+ * @return error string.
+ */
+ string GetError( void );
+ /**
+ * Close rom symbol file.
+ * @return true if succesful.
+ */
+ bool Close( void );
+ /**
+ * Locates symbol and binary name for given address if found in rom.
+ * @param result memory address object.
+ * @return true if successful.
+ */
+ bool AddressToLine( CATMemoryAddress* result );
+#ifndef MODULE_TEST
+private:
+#endif
+ /**
+ * Represents the symbol files type
+ * (content is different / format )
+ */
+ enum SYMBOL_FILE_TYPE {
+ SYMBOL_FILE_INVALID = 0, /** not valid */
+ SYMBOL_FILE_ROM, /** rom type */
+ SYMBOL_FILE_ROFS /** rofs type */
+ };
+ /**
+ * Identify symbol file
+ * @param sFile
+ * @return int
+ */
+ int IdentifySymbolFile( const string& sFile );
+ /**
+ * Locate symbol and binary name for given address if found in rom.
+ * @param result
+ * @return bool
+ */
+ bool AddressToLineRom( CATMemoryAddress* result );
+ /**
+ * Locate symbol and binary name for given address if found in rofs.
+ * @param result
+ * @return bool
+ */
+ bool AddressToLineRofs( CATMemoryAddress* result );
+ /**
+ * Reads rom files.
+ * @return bool
+ */
+ bool ReadRomFiles();
+ /**
+ * Read specified rom file
+ * @param sFile
+ * @return bool
+ */
+ bool ReadRomFile( const string& sFile );
+ /**
+ * Read rofs files
+ * @return bool
+ */
+ bool ReadRofsFiles();
+ /**
+ * Read specified rofs file
+ * @param sFile
+ * @return bool
+ */
+ bool ReadRofsFile( const string& sFile );
+ /**
+ * Parse symbol from a line in rom/rofs file.
+ * @param sLine
+ * @param pSymbol
+ */
+ void ParseSymbolFromLine( const string& sLine, Symbol* pSymbol );
+#ifndef MODULE_TEST
+private:
+#endif
+
+ // Members
+
+ bool m_bFilesIdentified; /** Have we identified symbol file(s) */
+ bool m_bSymbolsRead; /** Have we read symbol file(s) */
+ vector<string> m_vRomFiles; /** Rom symbol file(s) */
+ vector<Symbol*> m_vRomCache; /** Cached rom symbols */
+ vector<Symbol*> m_vRomSymbols; /** All rom symbols */
+ unsigned long m_iRomStartAddress; /** Rom start address */
+ unsigned long m_iRomEndAddress; /** Rom end address */
+ vector<string> m_vRofsFiles; /** Rofs symbol file(s) */
+ vector<RofsBinary*> m_vRofsBinaries; /** Rofs binaries */
+ string m_sErrorMessage; /** Error message */
+};
+#endif
\ No newline at end of file