diff -r 3ff3fecb12fe -r 6a82cd05fb1e memana/analyzetoolclient/commandlineengine/internal/inc/CATModule2.h --- a/memana/analyzetoolclient/commandlineengine/internal/inc/CATModule2.h Thu Feb 11 15:52:57 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,547 +0,0 @@ -/* -* 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: Class representing a module in project (sbs2). -* -*/ - - -// Note, module testing methods are not declared as friend. -#ifndef __CATMODULE2_H__ -#define __CATMODULE2_H__ - -// Includes. -#include "ATCommonDefines.h" -#include "CATBase.h" -#include "CATMmp.h" - -// Forward declarations. -class CATMemoryAddress; -class IAddressToLine; - -/** -* CATModule2 represents a module (single binary) in project. -* This class is used with the SBS v.2. -* @author -*/ -class CATModule2 : public CATBase -{ - -public: - /** - * Constructor. - */ - CATModule2(void); - - /** - * Destructor. - */ - ~CATModule2(void); - - /** - * Read modules attributes from SBS v.1 makefile. - * Also copies makefile to temporary directory if successful. - */ - bool ReadMakeFile(); - - /** - * Read modules attributes from SBS v.1 makefile. - * From make file which is in modules temporary directory. - */ - bool ReadMakeFileFromTemp(); - - /** - * Add sources using line where source files separated by spaces. - * @param sSourceLine. - */ - void AddSources(string& sSourceLine); - - /** - * Add sources by giving source file and its corresponding listing file. - * @param sSourceFile - * @param sLstFile - */ - void AddSource(const string& sSourceFile, const string& sLstFile); - - /** - * Create AT temporary cpp file for module. - * @param sS60FileName. - * @param eLoggingMode. - * @param eBuildType. - * @param iAllocCallStackSize. - * @param iFreeCallStackSize. - * @return true if successful. - */ - bool CreateTempCpp(const string& sS60FileName - , int eLoggingMode - , int eBuildType - , int iAllocCallStackSize - , int iFreeCallStackSize ); - - /** - * Add AT changes to modules mmp file. - * @return true if successful. - */ - bool ModifyMmp(); - - /** - * Restore any changes made to modules mmp file. - * @return true if successful. - */ - bool RestoreMmp(); - - /** - * Verify tha mmp does not contain AnalyzeTool made changes. - * If it does contain them will remove them manually or using backup. - * @return true if successful. - */ - bool VerifyAndRecoverMmp(); - - /** - * Copy modules releasables to its temporary dir. - * This includes map & lst files. - * @return true if successful. - */ - bool CopyReleasables(); - - /** - * Copy modules listing files to given directory. - * After copy they will be deleted. - * @param sDir target directory. - * @return true if successful. - */ - bool CopyLstFilesToDir( const string& sDir ); - - /** - * Delete modules lst files from their source - * directories. - * @return true if succesfful. - */ - bool DeleteLstFilesFromSrc(); - - /** - * Clean modules temporary directory of files, - * not defined in UNDELETE list. - * @return true if successful - */ - bool CleanTemporaryDir(); - - /** - * Delete modules temporary directory. - * @return true if successful. - */ - bool DeleteTemporaryDir(); - - /** - * Locate codeline of given memory address. - * Given address must be calculated to correspond map file addresses. - * @param pMemoryAddress object where to store results. - * @return true if successful. - */ - bool AddressToLine(CATMemoryAddress* pMemoryAddress); - - /** - * Check does modules symbol file(s) exist. - * @return true if it exists. - */ - bool SymbolFileExist( void ); - - /** - * Check does modules map file(s) exists. - * @return true if it exists. - */ - bool MapFileExist( void ); - - /** - * Check does modules binary file(s) exist. - * @return true if it exists. - */ - bool BinaryFileExist( void ); - -#ifndef MODULE_TEST -private: -#endif - - /** - * Read modules attributes from make file. - */ - bool ReadMakeFilePrivate(); - - /** - * Locate codeline of given memory address (winscw platform). - * Given address must be calculated to correspond map file addresses. - * @param pMemoryAddress object where to store results. - * @return true if successful. - */ - bool AddressToLineWinscw(CATMemoryAddress* pMemoryAddress ); - - /** - * Locate codeline of given memory address (armv5 platform). - * Given address must be calculated to correspond map file addresses. - * @param pMemoryAddress object where to store results. - * @return true if successful. - */ - bool AddressToLineArmv5(CATMemoryAddress* pMemoryAddress ); - - /** - * Locate codeline of given memory address. - * Given address must be calculated to correspond map file addresses. - * @param pMemoryAddress object where to store results. - * @return true if successful. - */ - bool AddressToLineAddr2lineExe( CATMemoryAddress* pMemoryAddress ); - - /** - * Search map file data (symbols) using given address. - * @param iAddress memory address. - * @return index of the symbol or -1 if not found. - */ - int GetSymbolIndexUsingAddress(unsigned long iAddress) const; - - /** - * Search listing files data using the given symbol name. - * @param sSymbolName symbols name to find. - * @return index of the found lst data or -1 if not found. - */ - int GetLineInFileIndexUsingSymbolName(const string& sSymbolName) const; - - /** - * Search the exact code line from given file. - * @param sFileName listing file to search from. - * @param iLine functions line number. - * @param iFromFuncAddress how many bytes from functions start. - * @return line number or -1 if not found. - */ - int FindLeakCodeLine( string& sFileName, int iLine, unsigned long iFromFuncAddress ) const; - -public: - - /** - * Set used build system (CATProject::BUILD_SYSTEM). - * @param eBuildSystem. - */ - void SetBuildSystem( int eBuildSystem ); - - /** - * Get defined build system. - * @return int CATProject::BUILD_SYSTEM - */ - int GetBuildSystem( void ) const ; - - /** - * Set SBS v.1 makefile. - * @param sMakeFile - */ - void SetMakeFile( const string& sMakeFile ); - - /** - * Get SBS v.1 makefile. - * @return string makefile. - */ - string GetMakeFile( void ) const; - - /** - * Initialize module ready for locating code lines. - * with memory addresses (reads map and listing files). - * return true if successful. - */ - bool InitializeAddressToLine(); - - /** - * Set modules mmp file. - * This also creates temporary dir if it is missing. - * @return true if successful. - */ - bool SetMmpFile(const string& sMmpFile); - - /** - * Create modules own temporary directory. - * @return true if successful. - */ - bool CreateTemporaryDirectory(); - - /** - * Get modules mmp file. - * @return mmp file. - */ - string GetMmpFile() const; - - /** - * Get modules atool_temp directory path. - * @return atool_temp directory path. - */ - string GetTempPath() const; - - /** - * Get S60 logging file name. - * @return s60 logging file name. - */ - string GetS60FileName() const; - - /** - * Set target binary name. - * @param sTarget binary file name. - */ - void SetTarget(const string& sTarget); - - /** - * Get target binary name. - * @return modules binary file name. - */ - string GetTarget() const; - - /** - * Set binary target type. - * @param sTargetType binary target type. - */ - void SetTargetType(const string& sTargetType); - - /** - * Get binary target type. - * @return binary target type. - */ - string GetTargetType() const; - - /** - * Set requested binary target file extension. - * @param sRequestedTargetExt binary target file extension. - */ - void SetRequestedTargetExt( const string& sRequestedTargetExt ); - - /** - * Get requested binary target file extension. - * @return binary target file extension. - */ - string GetRequestedTargetExt() const; - - /** - * Get full name of modules binary. - * @return modules binary files full name. - */ - string GetBinaryName() const; - - /** - * Set variant platform. - * @param sVariantPlatform variant platform. - */ - void SetVariantPlatform(const string& sVariantPlatform); - - /** - * Get variant platform. - * @return variant platform. - */ - string GetVariantPlatform() const; - - /** - * Set variant type. - * @param sVariantType variant type. - */ - void SetVariantType(const string& sVariantType); - - /** - * Get variant type. - * @return variant type. - */ - string GetVariantType() const; - - /** - * Set feature variant. - * @param sFeatureVariant feature variant. - */ - void SetFeatureVariant(const string& sFeatureVariant); - - /** - * Get feature variant. - * @return feature variant. - */ - string GetFeatureVariant() const; - - /** - * Set feature variant name. - * @param sFeatureVariantName feature variant name. - */ - void SetFeatureVariantName(const string& sFeatureVariantName); - - /** - * Get feature variant name. - * @return feature variant name. - */ - string GetFeatureVariantName() const; - - /** - * Set release path. - * @param sReleasePath release path. - */ - void SetReleasePath(const string& sReleasePath); - - /** - * Get release path. - * @return release path. - */ - string GetReleasePath() const; - - /** - * Set full variant path. - * @param sFullVariantPath full variant path. - */ - void SetFullVariantPath(const string& sFullVariantPath); - - /** - * Get full variant path. - * @return full variant path. - */ - string GetFullVariantPath() const; - - /** - * Set compile definition(s) of the module. - * @param sCompileDefinitions - */ - void SetCompileDefinitions( const string& sCompileDefinitions ); - - /** - * Get compile definition(s) of the module. - * @return compile definition(s). - */ - string GetCompileDefinitions() const; - - /** - * Is modules target type udeb? - * @return true if modules target type is udeb. - */ - bool IsUDEB() const; - - /** - * Is module build successfully? - * This includes check of listing and map files from temporary directory. - * @return true if module build successfully. - */ - bool IsMakeSuccessfull(); - - /** - * Get error string. This includes possible erros what are generated when - * IsMakeSuccesfull is called. - * @return error string. - */ - string GetErrors() const; - - /** - * Create build complete file to modules temporary directory. - * @return true if build complete file created successfully. - */ - bool CreateBuildCompleteFile( void ); - - /** - * Read map file (armv5 platform). - * @return true if map file read successfully. - */ - bool ReadMapFileArmv5(); - - /** - * Set compile info text - * @param sCompileInfoText - */ - void SetCompileInfoText( string sCompileInfoText ); - - /** - * Get compile info text - * @return compile info text - */ - string GetCompileInfoText() const; - -#ifndef MODULE_TEST -private: -#endif - - /** - * Struct for saving source information - * sCpp is source file. - * sLst sources corresponding lst file. - * bStatic true if source information from static library. - */ - struct SOURCE - { - bool bStatic; - string sCpp; - string sLst; - SOURCE() : bStatic(false), sCpp(""), sLst("") {} - }; - - // Build system - int m_eBuildSystem; - // Sbs v.1 makefile - string m_sMakeFile; - // Mmp file. - CATMmp m_Mmp; - // Temporary directory with path. - string m_sTempPath; - // Target. - string m_sTarget; - // Target type. - string m_sTargetType; - // True target extension. - string m_sRequestedTargetExt; - // Variant platform. - string m_sVariantPlatform; - // Variant type. - string m_sVariantType; - // Feature variant. - string m_sFeatureVariant; - // Feature variant name. - string m_sFeatureVariantName; - // Release path (releasables). - string m_sReleasePath; - // Full variant path (path to releasables). - string m_sFullVariantPath; - // String to store information of compile - string m_sCompileInfoText; - // String to store possible error messages. - string m_sErrors; - // Compile definition(s) - string m_sCompileDefinitions; - // Source files. - vector m_vSources; - // Listing data. - vector m_vLineInFile; - // Modules map data (symbols). - vector m_vMapFileFuncList; - // S60 logging mode filename. - string m_sS60FileName; - // Is all data loaded for address to code line functions. - bool m_bAddressToLineInitialized; - // Read listing files (armv5 platform). - bool ReadListingFilesArmv5(); - // Get listing file name of given source file. - string GetLstNameOfSource(string sSource) const; - // Copy listing files to temporary directory. - bool CopyLstFilesToTemp(); - // Copy map file to temporary directory. - bool CopyMapFileToTemp(); - // Get full map file name. - string GetMapFile() const; - // Get full symbol file name. - string GetSymbolFile() const; - // Get full binary file name. - string GetBinaryFile() const; - // Helper function to check is platform armv5. - bool IsPlatformArmv5() const; - // Get "unique" id of module - string GetUniqueId() const; - // Sbs v.1 variant urel label. - string m_sFeatureVariantURELLabel; - // Sbs v.1 variant udeb label. - string m_sFeatureVariantUDEBLabel; - // Object used to get codelines of memory addresses. - IAddressToLine* m_pAddressToLine; -}; -#endif -//EOF