diff -r c7c26511138f -r 360bd6b35136 imgtools/romtools/readimage/src/e32_image_reader.cpp --- a/imgtools/romtools/readimage/src/e32_image_reader.cpp Wed Jun 16 16:51:40 2010 +0300 +++ b/imgtools/romtools/readimage/src/e32_image_reader.cpp Wed Jun 23 16:56:47 2010 +0800 @@ -1,133 +1,133 @@ -/* -* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of the License "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: -* @internalComponent -* @released -* -*/ - - -#include "e32_image_reader.h" - -E32ImageReader::E32ImageReader(char *aFile):ImageReader(aFile) -{ -} - -E32ImageReader::E32ImageReader():ImageReader(NULL) -{ -} - - -E32ImageReader::~E32ImageReader() -{ - delete iE32Image; -} - -void E32ImageReader::ReadImage() -{ - ifstream aIf(iImgFileName.c_str(), ios::binary | ios::in); - if( !aIf.is_open() ) - { - throw ImageReaderException(iImgFileName.c_str(), "Cannot open file "); - } - - iE32Image = new E32ImageFile(); - - TUint32 aSz; - - aIf.seekg(0,ios::end); - aSz = aIf.tellg(); - - iE32Image->Adjust(aSz); - iE32Image->iFileSize = aSz; - - aIf.seekg(0,ios::beg); - aIf >> *iE32Image; -} - -void E32ImageReader::Validate() -{ -} - -void E32ImageReader::ProcessImage() -{ -} - -void E32ImageReader::Dump() -{ - *out << "Image Name................." << iImgFileName.c_str() << endl; - DumpE32Attributes(*iE32Image); -} - -void E32ImageReader::DumpE32Attributes(E32ImageFile& aE32Image) -{ - bool aContinue = true; - - DumpInHex("Size", aE32Image.iSize ) << endl; - DumpInHex("Uids",aE32Image.iOrigHdr->iUid1); - DumpInHex(" ",aE32Image.iOrigHdr->iUid2, aContinue); - DumpInHex(" ",aE32Image.iOrigHdr->iUid3, aContinue); - DumpInHex(" ",aE32Image.iOrigHdr->iUidChecksum, aContinue) << endl; - - - DumpInHex("Entry point", aE32Image.iOrigHdr->iEntryPoint ) << endl; - DumpInHex("Code start addr" ,aE32Image.iOrigHdr->iCodeBase)<< endl; - DumpInHex("Data start addr" ,aE32Image.iOrigHdr->iDataBase) << endl; - DumpInHex("Text size" ,aE32Image.iOrigHdr->iTextSize) << endl; - DumpInHex("Code size" ,aE32Image.iOrigHdr->iCodeSize) << endl; - DumpInHex("Data size" ,aE32Image.iOrigHdr->iDataSize) << endl; - DumpInHex("Bss size" ,aE32Image.iOrigHdr->iBssSize) << endl; - DumpInHex("Total data size" ,(aE32Image.iOrigHdr->iBssSize + aE32Image.iOrigHdr->iDataSize)) << endl; - DumpInHex("Heap min" ,aE32Image.iOrigHdr->iHeapSizeMin) << endl; - DumpInHex("Heap max" ,aE32Image.iOrigHdr->iHeapSizeMax) << endl; - DumpInHex("Stack size" ,aE32Image.iOrigHdr->iStackSize) << endl; - DumpInHex("Export directory" ,aE32Image.iOrigHdr->iExportDirOffset) << endl; - DumpInHex("Export dir count" ,aE32Image.iOrigHdr->iExportDirCount) << endl; - DumpInHex("Flags" ,aE32Image.iOrigHdr->iFlags) << endl; - - TUint aHeaderFmt = E32ImageHeader::HdrFmtFromFlags(aE32Image.iOrigHdr->iFlags); - - if (aHeaderFmt >= KImageHdrFmt_V) - { - // - // Important. Don't change output format of following security info - // because this is relied on by used by "Symbian Signed". - // - E32ImageHeaderV* v = aE32Image.iHdr; - DumpInHex("Secure ID", v->iS.iSecureId) << endl; - DumpInHex("Vendor ID", v->iS.iVendorId) << endl; - DumpInHex("Capability", v->iS.iCaps[1]); - DumpInHex(" ", v->iS.iCaps[0], aContinue) << endl; - - } - - *out << "Tools Version..............." << dec << (TUint)aE32Image.iOrigHdr->iToolsVersion.iMajor; - *out << "."; - out->width (2); - *out << dec << (TUint)aE32Image.iOrigHdr->iToolsVersion.iMinor ; - *out << "(" << dec << aE32Image.iOrigHdr->iToolsVersion.iBuild << ")" << endl; - - *out << "Module Version.............." << dec << (aE32Image.iOrigHdr->iModuleVersion >> 16) << endl; - DumpInHex("Compression", aE32Image.iOrigHdr->iCompressionType) << endl; - - if( aHeaderFmt >= KImageHdrFmt_V ) - { - E32ImageHeaderV* v = aE32Image.iHdr; - DumpInHex("Exception Descriptor", v->iExceptionDescriptor) << endl; - DumpInHex("Code offset", v->iCodeOffset) << endl; - } - - *out << "Priority...................." << dec << aE32Image.iOrigHdr->iProcessPriority << endl; - DumpInHex("Dll ref table size", aE32Image.iOrigHdr->iDllRefTableCount) << endl << endl << endl; -} +/* +* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* @internalComponent +* @released +* +*/ + + +#include "e32_image_reader.h" + +E32ImageReader::E32ImageReader(const char* aFile):ImageReader(aFile) +{ +} + +E32ImageReader::E32ImageReader():ImageReader("") +{ +} + + +E32ImageReader::~E32ImageReader() +{ + delete iE32Image; +} + +void E32ImageReader::ReadImage() +{ + ifstream aIf(iImgFileName.c_str(), ios_base::binary | ios_base::in); + if( !aIf.is_open() ) + { + throw ImageReaderException(iImgFileName.c_str(), "Cannot open file "); + } + + iE32Image = new E32ImageFile(); + + TUint32 aSz; + + aIf.seekg(0,ios_base::end); + aSz = aIf.tellg(); + + iE32Image->Adjust(aSz); + iE32Image->iFileSize = aSz; + + aIf.seekg(0,ios_base::beg); + aIf >> *iE32Image; +} + +void E32ImageReader::Validate() +{ +} + +void E32ImageReader::ProcessImage() +{ +} + +void E32ImageReader::Dump() +{ + *out << "Image Name................." << iImgFileName.c_str() << endl; + DumpE32Attributes(*iE32Image); +} + +void E32ImageReader::DumpE32Attributes(E32ImageFile& aE32Image) +{ + bool aContinue = true; + + DumpInHex("Size", aE32Image.iSize ) << endl; + DumpInHex("Uids",aE32Image.iOrigHdr->iUid1); + DumpInHex(" ",aE32Image.iOrigHdr->iUid2, aContinue); + DumpInHex(" ",aE32Image.iOrigHdr->iUid3, aContinue); + DumpInHex(" ",aE32Image.iOrigHdr->iUidChecksum, aContinue) << endl; + + + DumpInHex("Entry point", aE32Image.iOrigHdr->iEntryPoint ) << endl; + DumpInHex("Code start addr" ,aE32Image.iOrigHdr->iCodeBase)<< endl; + DumpInHex("Data start addr" ,aE32Image.iOrigHdr->iDataBase) << endl; + DumpInHex("Text size" ,aE32Image.iOrigHdr->iTextSize) << endl; + DumpInHex("Code size" ,aE32Image.iOrigHdr->iCodeSize) << endl; + DumpInHex("Data size" ,aE32Image.iOrigHdr->iDataSize) << endl; + DumpInHex("Bss size" ,aE32Image.iOrigHdr->iBssSize) << endl; + DumpInHex("Total data size" ,(aE32Image.iOrigHdr->iBssSize + aE32Image.iOrigHdr->iDataSize)) << endl; + DumpInHex("Heap min" ,aE32Image.iOrigHdr->iHeapSizeMin) << endl; + DumpInHex("Heap max" ,aE32Image.iOrigHdr->iHeapSizeMax) << endl; + DumpInHex("Stack size" ,aE32Image.iOrigHdr->iStackSize) << endl; + DumpInHex("Export directory" ,aE32Image.iOrigHdr->iExportDirOffset) << endl; + DumpInHex("Export dir count" ,aE32Image.iOrigHdr->iExportDirCount) << endl; + DumpInHex("Flags" ,aE32Image.iOrigHdr->iFlags) << endl; + + TUint aHeaderFmt = E32ImageHeader::HdrFmtFromFlags(aE32Image.iOrigHdr->iFlags); + + if (aHeaderFmt >= KImageHdrFmt_V) + { + // + // Important. Don't change output format of following security info + // because this is relied on by used by "Symbian Signed". + // + E32ImageHeaderV* v = aE32Image.iHdr; + DumpInHex("Secure ID", v->iS.iSecureId) << endl; + DumpInHex("Vendor ID", v->iS.iVendorId) << endl; + DumpInHex("Capability", v->iS.iCaps[1]); + DumpInHex(" ", v->iS.iCaps[0], aContinue) << endl; + + } + + *out << "Tools Version..............." << dec << (TUint)aE32Image.iOrigHdr->iToolsVersion.iMajor; + *out << "."; + out->width (2); + *out << dec << (TUint)aE32Image.iOrigHdr->iToolsVersion.iMinor ; + *out << "(" << dec << aE32Image.iOrigHdr->iToolsVersion.iBuild << ")" << endl; + + *out << "Module Version.............." << dec << (aE32Image.iOrigHdr->iModuleVersion >> 16) << endl; + DumpInHex("Compression", aE32Image.iOrigHdr->iCompressionType) << endl; + + if( aHeaderFmt >= KImageHdrFmt_V ) + { + E32ImageHeaderV* v = aE32Image.iHdr; + DumpInHex("Exception Descriptor", v->iExceptionDescriptor) << endl; + DumpInHex("Code offset", v->iCodeOffset) << endl; + } + + *out << "Priority...................." << dec << aE32Image.iOrigHdr->iProcessPriority << endl; + DumpInHex("Dll ref table size", aE32Image.iOrigHdr->iDllRefTableCount) << endl << endl << endl; +}