diff -r 000000000000 -r 83f4b4db085c toolsandutils/e32tools/elf2e32/source/errorhandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolsandutils/e32tools/elf2e32/source/errorhandler.cpp Tue Feb 02 01:39:43 2010 +0200 @@ -0,0 +1,936 @@ +// Copyright (c) 2004-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: +// Error Handler Operations for elf2e32 tool +// @internalComponent +// @released +// +// + +#ifdef _MSC_VER + #pragma warning(disable: 4514) // unreferenced inline function has been removed + #pragma warning(disable: 4702) // unreachable code + #pragma warning(disable: 4710) // function not inlined +#endif + +#include "errorhandler.h" +#include "messagehandler.h" +#include +#include +using std::cerr; +using std::endl; + +char *errMssgPrefix="elf2e32 : Error: E"; +char *colonSpace=": "; + +/** +ErrorHandler constructor for doing common thing required for derived class functions. +@param aMessageIndex - Message Index +@internalComponent +@released +*/ +ErrorHandler::ErrorHandler(int aMessageIndex) +{ + char mssgNo[MAXMSSGNOLENGTH]; + int mssgIndex; + + iMessageIndex=aMessageIndex; + iMessage=errMssgPrefix; + mssgIndex=BASEMSSGNO+iMessageIndex; + sprintf(mssgNo,"%d",mssgIndex); + iMessage+=mssgNo; + iMessage+=colonSpace; +}; + +/** +ErrorHandler destructor. +@internalComponent +@released +*/ +ErrorHandler::~ErrorHandler() +{ + MessageHandler::CleanUp(); +} + +/** +FileError constructor for initializing message index and argument name. +@param aMessageIndex - Message Index +@param aName - File name +@internalComponent +@released +*/ +FileError:: FileError(int aMessageIndex, char * aName) : ErrorHandler(aMessageIndex), iName(aName) +{ +} + +/** +FileError destructor. +@internalComponent +@released +*/ +FileError:: ~FileError() +{ +} + +/** +Function to report File Errors. +@internalComponent +@released +*/ +void FileError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete[] tempMssg; + } +} + +/** +ELFFormatError constructor for initializing message index and argument name. +@param aMessageIndex - Message Index +@param aName - ELF File name +@internalComponent +@released +*/ +ELFFormatError::ELFFormatError(int aMessageIndex, char * aName) : ErrorHandler(aMessageIndex), iName(aName) +{ + +} + +/** +ELFFormatError destructor. +@internalComponent +@released +*/ +ELFFormatError::~ELFFormatError() +{ + +} + +/** +Function to report ELF Format Errors. +@internalComponent +@released +*/ +void ELFFormatError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +DEFFileError constructor for initializing message index, argument name and line number and token. +@param aMessageIndex - Message Index +@param aName - DEF File name +@param aLineNo - DEF File line number +@param aToken - Token in export entry +@internalComponent +@released +*/ +DEFFileError::DEFFileError(int aMessageIndex, char * aName, int aLineNo,char * aToken) : ErrorHandler(aMessageIndex), iName(aName), iLineNo(aLineNo) +{ + iToken=aToken; + if(iToken[iToken.size()-1]=='\r') + iToken[iToken.size()-1]='\0'; +} + +/** +DEFFileError destructor. +@internalComponent +@released +*/ +DEFFileError::~DEFFileError() +{ +} + +/** +Function to report DEF File Errors. +@internalComponent +@released +*/ +void DEFFileError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+5+strlen(iName.c_str())+strlen(iToken.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str(),iLineNo,iToken.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +ParameterParserError constructor for initializing message index and argument name. +@param aMessageIndex - Message Index +@Param aName - Argument name +@internalComponent +@released +*/ +ParameterParserError::ParameterParserError(int aMessageIndex, char * aName) : ErrorHandler(aMessageIndex), iName(aName) +{ +} + +/** +ParameterParserError destructor. +@internalComponent +@released +*/ +ParameterParserError::~ParameterParserError() +{ +} + +/** +Function to report Parameter Parser Error. +@internalComponent +@released +*/ +void ParameterParserError::Report() +{ + char *tempMssg; + char *errMessage; + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +InvalidArgumentError constructor for initializing message index, argument value and option. +@param aMessageIndex - Message Index +@param aValue - Argument value +@param aOption - Argument option +@internalComponent +@released +*/ +InvalidArgumentError::InvalidArgumentError(int aMessageIndex, const char * aValue, char * aOption) : ErrorHandler(aMessageIndex), iValue(aValue), iOption(aOption) +{ +} + +/** +InvalidArgumentError destructor. +@internalComponent +@released +*/ +InvalidArgumentError::~InvalidArgumentError() +{ +} + +/** +Function to report Invalid Argument Error. +@internalComponent +@released +*/ +void InvalidArgumentError::Report() +{ + char *tempMssg; + char *errMessage; + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iValue.c_str())+strlen(iOption.c_str())]; + sprintf(tempMssg,errMessage,iValue.c_str(),iOption.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +E32ImageCompressionError constructor for initializing message index. +@param aMessageIndex - Message Index +@internalComponent +@released +*/ +E32ImageCompressionError::E32ImageCompressionError(int aMessageIndex) : ErrorHandler(aMessageIndex) +{ +} + +/** +E32ImageCompressionError destructor. +@internalComponent +@released +*/ +E32ImageCompressionError::~E32ImageCompressionError() +{ +} + +/** +Function to report E32 Image Compression Error. +@internalComponent +@released +*/ +void E32ImageCompressionError::Report() +{ + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + iMessage+=errMessage; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + } +} + +/** +CapabilityError constructor for initializing message index. +@param aMessageIndex - Message Index +@internalComponent +@released +*/ +CapabilityError::CapabilityError(int aMessageIndex) : ErrorHandler(aMessageIndex) +{ +} + +/** +CapabilityError destructor. +@internalComponent +@released +*/ +CapabilityError::~CapabilityError() +{ +} + +/** +Function to report Capability Error. +@internalComponent +@released +*/ +void CapabilityError::Report() +{ + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + iMessage+=errMessage; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + } +} + +/** +UnrecognisedCapabilityError constructor for initializing message index and argument name. +@param aMessageIndex - Message Index +@param aName - Capability +@internalComponent +@released +*/ +UnrecognisedCapabilityError::UnrecognisedCapabilityError(int aMessageIndex, char * aName) : CapabilityError(aMessageIndex), iName(aName) +{ +} + +/** +UnrecognisedCapabilityError destructor. +@internalComponent +@released +*/ +UnrecognisedCapabilityError::~UnrecognisedCapabilityError() +{ +} + +/** +Function to report Unrecognised Capability Error. +@internalComponent +@released +*/ +void UnrecognisedCapabilityError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +ELFFileError constructor for initializing message index and argument name. +@param aMessageIndex - Message Index +@param aName - ELF File name +@internalComponent +@released +*/ +ELFFileError::ELFFileError(int aMessageIndex, const char * aName) : ErrorHandler(aMessageIndex), iName(aName) +{ +} + +/** +ELFFileError destructor. +@internalComponent +@released +*/ +ELFFileError::~ELFFileError() +{ +} + +/** +Function to report ELF File Error. +@internalComponent +@released +*/ +void ELFFileError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +UndefinedSymbolError constructor for initializing message index, argument name and symbol name. +@param aMessageIndex - Message Index +@param aName - File Name +@param aSymbolName - Symbol Name +@internalComponent +@released +*/ +UndefinedSymbolError::UndefinedSymbolError(int aMessageIndex, char * aName, char *aSymbolName) : ELFFileError(aMessageIndex,aName), iSymbolName(aSymbolName) +{ +} + +/** +UndefinedSymbolError destructor. +@internalComponent +@released +*/ +UndefinedSymbolError::~UndefinedSymbolError() +{ +} + +/** +Function to report Undefined Symbol Error. +@internalComponent +@released +*/ +void UndefinedSymbolError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iSymbolName.c_str())+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iSymbolName.c_str(),iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +SymbolMissingFromElfError constructor for initializing message index, symbol name list and argument name. +@param aMessageIndex - Message Index +@param aSymbolList - List of symbols +@param aName - File Name +@internalComponent +@released +*/ +SymbolMissingFromElfError::SymbolMissingFromElfError(int aMessageIndex, list &aSymbolList, const char * aName) : ELFFileError(aMessageIndex,aName) +{ + + std::list::iterator aItr = aSymbolList.begin(); + std::list::iterator last = aSymbolList.end(); + + while(aItr != last) + { + iSymbolNames+=*aItr; + aItr++; + if(aItr != last) + { + iSymbolNames+=","; + } + } + +} + +/** +SymbolMissingFromElfError destructor. +@internalComponent +@released +*/ +SymbolMissingFromElfError::~SymbolMissingFromElfError() +{ +} + +/** +Function to report Symbol Missing From Elf Error. +@internalComponent +@released +*/ +void SymbolMissingFromElfError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iSymbolNames.c_str())+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iSymbolNames.c_str(),iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +MemoryAllocationError constructor for initializing message index and argument name. +@param aMessageIndex - Message Index +@param aName - File Name +@internalComponent +@released +*/ +MemoryAllocationError::MemoryAllocationError(int aMessageIndex, char * aName) : ErrorHandler(aMessageIndex), iName(aName) +{ +} + +/** +MemoryAllocationError destructor. +@internalComponent +@released +*/ +MemoryAllocationError::~MemoryAllocationError() +{ +} + +/** +Function to report Memory Allocation Error. +@internalComponent +@released +*/ +void MemoryAllocationError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +E32ImageError constructor for initializing message index. +@param aMessageIndex - Message Index +@internalComponent +@released +*/ +E32ImageError::E32ImageError(int aMessageIndex) : ErrorHandler(aMessageIndex) +{ +} + +/** +E32ImageError destructor. +@internalComponent +@released +*/ +E32ImageError::~E32ImageError() +{ +} + +/** +Function to report E32 Image Error. +@internalComponent +@released +*/ +void E32ImageError::Report() +{ + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + iMessage+=errMessage; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + } +} + +/** +InvalidInvocationError constructor for initializing message index. +@param aMessageIndex - Message Index +@internalComponent +@released +*/ +InvalidInvocationError::InvalidInvocationError(int aMessageIndex) : ErrorHandler(aMessageIndex) +{ +} + +/** +InvalidInvocationError destructor. +@internalComponent +@released +*/ +InvalidInvocationError::~InvalidInvocationError() +{ +} + +/** +Function to report Invalid Invocation Error. +@internalComponent +@released +*/ +void InvalidInvocationError::Report() +{ + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + iMessage+=errMessage; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + } +} + +/** +TargetTypeError constructor for initializing message index. +@param aMessageIndex - Message Index +@internalComponent +@released +*/ +TargetTypeError::TargetTypeError(int aMessageIndex) : ErrorHandler(aMessageIndex) +{ +} + +/** +TargetTypeError destructor. +@internalComponent +@released +*/ +TargetTypeError::~TargetTypeError() +{ +} + +/** +Function to report Target Type Error. +@internalComponent +@released +*/ +void TargetTypeError::Report() +{ + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + iMessage+=errMessage; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + } +} + +/** +UnsupportedTargetTypeError constructor for initializing message index and argument name. +@param aMessageIndex - Message Index +@param aName - Target type name +@internalComponent +@released +*/ +UnsupportedTargetTypeError::UnsupportedTargetTypeError(int aMessageIndex, char * aName) : TargetTypeError(aMessageIndex), iName(aName) +{ +} + +/** +UnsupportedTargetTypeError destructor. +@internalComponent +@released +*/ +UnsupportedTargetTypeError::~UnsupportedTargetTypeError() +{ +} + +/** +Function to report Unsupported Target Type Error. +@internalComponent +@released +*/ +void UnsupportedTargetTypeError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +MessageError constructor for initializing message index and index value. +@param aMessageIndex - Message Index +@param aIndexValue - Value of Index +@internalComponent +@released +*/ +MessageError::MessageError(int aMessageIndex, int aIndexValue) : ErrorHandler(aMessageIndex), iIndexValue(aIndexValue) +{ +} + +/** +MessageError destructor. +@internalComponent +@released +*/ +MessageError::~MessageError() +{ +} + +/** +Function to report Message Errors. +@internalComponent +@released +*/ +void MessageError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+5]; + sprintf(tempMssg,errMessage,iIndexValue); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +NoMessageFileError constructor for initializing message index. +@param aMessageIndex - Message Index +@internalComponent +@released +*/ +NoMessageFileError::NoMessageFileError(int aMessageIndex) : ErrorHandler(aMessageIndex) +{ +} + +/** +NoMessageFileError destructor. +@internalComponent +@released +*/ +NoMessageFileError::~NoMessageFileError() +{ +} + +/** +Function to report No Message File Error. +@internalComponent +@released +*/ +void NoMessageFileError::Report() +{ + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + iMessage+=errMessage; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + } +} + +/** +SysDefMismatchError constructor for initializing message index, symbol name list and argument name. +@param aMessageIndex - Message Index +@param aSymbolList - list of symbols +@param aName - sysdef +@internalComponent +@released +*/ +SysDefMismatchError::SysDefMismatchError(int aMessageIndex, list &aSymbolList, const char * aName) : ErrorHandler(aMessageIndex), iName(aName) +{ + + std::list::iterator aItr = aSymbolList.begin(); + std::list::iterator last = aSymbolList.end(); + + while(aItr != last) + { + iSymbolNames+=*aItr; + aItr++; + if(aItr != last) + { + iSymbolNames+=","; + } + } + +} + +/** +SysDefMismatchError destructor. +@internalComponent +@released +*/ +SysDefMismatchError::~SysDefMismatchError() +{ +} + +/** +Function to report SysDef Mismatch Error. +@internalComponent +@released +*/ +void SysDefMismatchError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iSymbolNames.c_str())+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iSymbolNames.c_str(),iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +InvalidE32ImageError constructor for initializing message index and argument name. +@param aMessageIndex - Message Index +@param aName - E32Image File name +@internalComponent +@released +*/ +InvalidE32ImageError::InvalidE32ImageError(int aMessageIndex, char * aName) : ErrorHandler(aMessageIndex), iName(aName) +{ +} + +/** +InvalidE32ImageError destructor. +@internalComponent +@released +*/ +InvalidE32ImageError::~InvalidE32ImageError() +{ +} + +/** +Function to report Invalid E32 Image Error. +@internalComponent +@released +*/ +void InvalidE32ImageError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +/** +ImportRelocationError constructor for initializing message index, argument name and symbol name. +@param aMessageIndex - Message Index +@param aName - File Name +@param aSymbolName - Symbol Name +@internalComponent +@released +*/ +ImportRelocationError::ImportRelocationError(int aMessageIndex, char * aName, char *aSymbolName) : ELFFileError(aMessageIndex,aName), iSymbolName(aSymbolName) +{ +} + +/** +ImportRelocationError destructor. +@internalComponent +@released +*/ +ImportRelocationError::~ImportRelocationError() +{ +} + +/** +Function to report Import Relocations references to Data Segment Error +@internalComponent +@released +*/ +void ImportRelocationError::Report() +{ + char *tempMssg; + char *errMessage; + + errMessage=MessageHandler::GetInstance()->GetMessageString(iMessageIndex); + if(errMessage) + { + tempMssg = new char[strlen(errMessage)+strlen(iSymbolName.c_str())+strlen(iName.c_str())]; + sprintf(tempMssg,errMessage,iSymbolName.c_str(),iName.c_str()); + iMessage+=tempMssg; + MessageHandler::GetInstance()->Output(iMessage.c_str()); + delete tempMssg; + } +} + +