--- a/imgtools/buildrom/group/release.txt Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/buildrom/group/release.txt Tue Oct 26 11:12:31 2010 +0800
@@ -1,3 +1,8 @@
+Version 3.31.0 (BUILDROM)
+===============
+Released by Lorence Wang, 20/10/2010
+ 1) Volume Serial NO. for FAT image.
+
Version 3.30.0 (BUILDROM)
===============
Released by Lorence Wang, 12/10/2010
--- a/imgtools/buildrom/tools/buildrom.pm Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/buildrom/tools/buildrom.pm Tue Oct 26 11:12:31 2010 +0800
@@ -67,7 +67,7 @@
my $enforceFeatureManager = 0; # Flag to make Feature Manager mandatory if SYMBIAN_FEATURE_MANAGER macro is defined.
my $BuildromMajorVersion = 3 ;
-my $BuildromMinorVersion = 30;
+my $BuildromMinorVersion = 31;
my $BuildromPatchVersion = 0;
@@ -3666,7 +3666,7 @@
{
return $line;
}
- elsif($line =~ /^\s*volume\s*=.*/i)
+ elsif($line =~ /^\s*(volume|volumeid)\s*=.*/i)
{
return $line;
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/imglib/boostlibrary/boost/version.hpp Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,35 @@
+// Boost version.hpp configuration header file ------------------------------//
+
+// (C) Copyright John maddock 1999. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for documentation
+
+#ifndef BOOST_VERSION_HPP
+#define BOOST_VERSION_HPP
+
+//
+// Caution, this is the only boost header that is guarenteed
+// to change with every boost release, including this header
+// will cause a recompile every time a new boost version is
+// released.
+//
+// BOOST_VERSION % 100 is the patch level
+// BOOST_VERSION / 100 % 1000 is the minor version
+// BOOST_VERSION / 100000 is the major version
+
+#define BOOST_VERSION 103900
+
+//
+// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
+// but as a *string* in the form "x_y[_z]" where x is the major version
+// number, y is the minor version number, and z is the patch level if not 0.
+// This is used by <config/auto_link.hpp> to select which library version to link to.
+
+#define BOOST_LIB_VERSION "1_39"
+
+#endif
+
+
+
--- a/imgtools/imglib/compress/byte_pair.h Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/imglib/compress/byte_pair.h Tue Oct 26 11:12:31 2010 +0800
@@ -19,9 +19,10 @@
#define BYTE_PAIR_H
-#ifdef __VC32__
- #ifdef __MSVCDOTNET__
- #include <strstream>
+#ifdef _MSC_VER
+ #if (_MSC_VER > 1200)
+ #define __MSVCDOTNET__ 1
+ #include <sstream>
#include <iomanip>
#else //!__MSVCDOTNET__
#include <strstrea.h>
--- a/imgtools/imglib/host/h_utl.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/imglib/host/h_utl.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -19,11 +19,7 @@
#define __INCLUDE_CAPABILITY_NAMES__
-#if defined(_MSVCDOTNET__) || defined(__TOOLS2__)
-#else //!__MSVCDOTNET__
-#include <string.h>
-#endif //__MSVCDOTNET__
#include <stdarg.h>
#include <stdlib.h>
@@ -33,6 +29,12 @@
#include "h_utl.h"
+#if defined(__MSVCDOTNET__)|| defined(__TOOLS2__)
+
+#else //!__MSVCDOTNET__
+#include <string.h>
+#endif //__MSVCDOTNET__
+
#ifdef __LINUX__
// Convert the supplied string to uppercase, in-place
@@ -155,7 +157,7 @@
TVersion::TVersion(TInt aMajor, TInt aMinor, TInt aBuild)
: iMajor((TInt8)aMajor), iMinor((TInt8)aMinor), iBuild((TInt16)aBuild)
{}
-#ifdef __TOOLS2__
+#if defined(__TOOLS2__ ) || defined(__MSVCDOTNET__ )
istringstream &operator>>(istringstream &is, TVersion &aVersion)
#else
istrstream &operator>>(istrstream &is, TVersion &aVersion)
@@ -164,7 +166,7 @@
// Input a TVersion with syntax: major[.minor][(build)]
//
{
-#ifdef __TOOLS2__
+#if defined(__TOOLS2__ ) || defined(__MSVCDOTNET__ )
string tmp = is.str();
const char *str=tmp.c_str();
#else
@@ -192,7 +194,7 @@
{
cout << "\n Warning: major version must be in range 0 - 127 \n";
}
- char* pMinor = strchr(str, '.');
+ char* pMinor = (char*)strchr(str, '.');
if (pMinor)
{
pMinor++;
@@ -300,7 +302,7 @@
TInt sec=0;
TInt mill=0;
char ch;
- #ifdef __TOOLS2__
+ #if defined(__TOOLS2__) || defined(__MSVCDOTNET__)
istringstream val(aString);
#else
istrstream val(aString,strlen(aString));
--- a/imgtools/imglib/inc/fatdefines.h Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/imglib/inc/fatdefines.h Tue Oct 26 11:12:31 2010 +0800
@@ -16,6 +16,7 @@
*/
#ifndef __FAT_DEFINES_HEADER__
#define __FAT_DEFINES_HEADER__
+#include <time.h>
#include <e32std.h>
struct TFATBootSector {
TUint8 BS_jmpBoot[3];
@@ -130,8 +131,12 @@
TUint16 iDriveSectorSize;
TUint32 iDriveClusterSize;
TUint8 iDriveNoOfFATs;
+ TUint32 iVolumeId;
ConfigurableFatAttributes():iImageSize(0),iDriveSectorSize(512),iDriveClusterSize(0),iDriveNoOfFATs(2){
memcpy(iDriveVolumeLabel,"NO NAME \0",12);
+ time_t rawtime;
+ time(&rawtime);
+ iVolumeId = (TUint32)rawtime;
}
};
#endif
--- a/imgtools/imglib/inc/h_utl.h Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/imglib/inc/h_utl.h Tue Oct 26 11:12:31 2010 +0800
@@ -21,10 +21,11 @@
//
#include <stdio.h>
-#ifdef __VC32__
- #ifdef __MSVCDOTNET__
+#ifdef _MSC_VER
+ #if (_MSC_VER > 1200) //!__MSVCDOTNET__
+ #define __MSVCDOTNET__ 1
#include <iostream>
- #include <strstream>
+ #include <sstream>
#include <fstream>
using namespace std;
#else //!__MSVCDOTNET__
@@ -151,7 +152,7 @@
TAny *operator new(TUint aSize);
void operator delete(TAny *aPtr);
//
-#ifdef __TOOLS2__
+#if defined(__TOOLS2__) || defined(__MSVCDOTNET__)
istringstream &operator>>(istringstream &is, TVersion &aVersion);
#else
istrstream &operator>>(istrstream &is, TVersion &aVersion);
@@ -173,12 +174,12 @@
{
T x;
- #ifdef __TOOLS2__
+ #if defined(__TOOLS2__) || defined(__MSVCDOTNET__)
istringstream val(aStr);
#else
istrstream val((char*)aStr,strlen(aStr));
#endif
- #if defined(__MSVCDOTNET__) || defined (__TOOLS2__)
+ #if defined (__TOOLS2__) || defined(__MSVCDOTNET__)
val >> setbase(0);
#endif //__MSVCDOTNET__
val >> x;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/group/readimage.vcproj Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,542 @@
+<?xml version="1.0" encoding="gb2312"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="readimage"
+ ProjectGUID="{14ADB7DA-3076-4A77-868E-83E04E8D5A13}"
+ RootNamespace="readimage"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="\VCOutput\Bins"
+ IntermediateDirectory="\VCOutput\Int\$(ProjectName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ UseOfATL="0"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../imglib/boostlibrary;../../imglib/boostlibrary/boost;../rofsbuild;../rombuild;../readimage/inc;../rofsbuild/inc;../../imglib/inc;../../sisutils/inc;../../imglib/compress;../../imglib/memmap/include;../../imglib/patchdataprocessor/include;../../imglib/uniconv/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__MSVCDOTNET__;__TOOLS__;__VC32__;_STLP_DEBUG=1;__OPERATOR_NEW_DECLARED__;__SUPPORT_ELF_FILES__;snprintf=_snprintf;PATH_MAX=260"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ TreatWChar_tAsBuiltInType="false"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ DisableSpecificWarnings="4819;4996;4244;4334;4290"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="false"
+ OutputFile="$(OutDir)\$(ProjectName)D.exe"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="../../imglib/boostlibrary/binary/windows;../stlport_5-2-1_vc90_staticlib"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="\VCOutput\Bins"
+ IntermediateDirectory="\VCOutput\Int\$(ProjectName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ UseOfATL="0"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="../../imglib/boostlibrary;../../imglib/boostlibrary/boost;../rofsbuild;../rombuild;../readimage/inc;../rofsbuild/inc;../../imglib/inc;../../sisutils/inc;../../imglib/compress;../../imglib/memmap/include;../../imglib/patchdataprocessor/include;../../imglib/uniconv/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;__MSVCDOTNET__;__TOOLS__;__VC32__;__OPERATOR_NEW_DECLARED__;__SUPPORT_ELF_FILES__;snprintf=_snprintf;PATH_MAX=260"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ TreatWChar_tAsBuiltInType="false"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4819;4996;4244;4334;4290"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../imglib/boostlibrary/binary/windows;../stlport_5-2-1_vc90_staticlib"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\readimage\src\common.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\src\e32_image_reader.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\src\image_handler.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\src\image_reader.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\src\rofs_image_reader.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\src\rom_image_reader.cpp"
+ >
+ </File>
+ <Filter
+ Name="e32image"
+ >
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\compress.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\decode.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\deflate.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\e32image.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\encode.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\inflate.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\panic.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="compress"
+ >
+ <File
+ RelativePath="..\..\imglib\compress\byte_pair.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\compress\pagedcompress.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="e32uid"
+ >
+ <File
+ RelativePath="..\..\imglib\e32uid\e32uid.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="imglib_host"
+ >
+ <File
+ RelativePath="..\..\imglib\host\h_file.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\h_mem.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\h_utl.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\utf16string.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="rofsbuild_cache"
+ >
+ <File
+ RelativePath="..\rofsbuild\src\cache\cache.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cacheablelist.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cacheentry.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cacheexception.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cachegenerator.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cachemanager.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cachevalidator.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="memmap"
+ >
+ <File
+ RelativePath="..\..\imglib\memmap\source\memmap.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\memmap\source\memmaputils.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="patchdataprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\patchdataprocessor\source\patchdataprocessor.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="sisutils"
+ >
+ <File
+ RelativePath="..\..\sisutils\src\pkgfileparser.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\sisutils\src\pkglanguage.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\sisutils\src\sis2iby.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\sisutils\src\sisutils.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="rombuild"
+ >
+ <File
+ RelativePath="..\rombuild\r_global.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="rofsbuild"
+ >
+ <File
+ RelativePath="..\rofsbuild\r_build.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_coreimage.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="uniconv"
+ >
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\readimage\inc\common.h"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\e32_image_reader.h"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\image_handler.h"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\image_reader.h"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\rofs_image_reader.h"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\rom_image_reader.h"
+ >
+ </File>
+ <Filter
+ Name="compress"
+ >
+ <File
+ RelativePath="..\..\imglib\compress\byte_pair.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="e32image"
+ >
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\deflate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\farray.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\huffman.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\panic.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="imglib_inc"
+ >
+ <File
+ RelativePath="..\..\imglib\inc\e32image.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\inc\fatdefines.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\inc\h_utl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\inc\utf16string.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="cache"
+ >
+ <File
+ RelativePath="..\readimage\inc\cache\cache.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\cache\cacheablelist.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\cache\cacheentry.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\cache\cacheexception.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\cache\cachegenerator.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\cache\cachemanager.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\readimage\inc\cache\cachevalidator.hpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="memmap"
+ >
+ <File
+ RelativePath="..\..\imglib\memmap\include\memmap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\memmap\include\memmaputils.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="patchdataprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\patchdataprocessor\include\patchdataprocessor.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="sisutils"
+ >
+ <File
+ RelativePath="..\..\sisutils\inc\pkgfileparser.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\sisutils\inc\pkglanguage.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\sisutils\inc\sis2iby.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\sisutils\inc\sisutils.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="uniconv"
+ >
+ <File
+ RelativePath="..\..\imglib\uniconv\source\uniconv.cpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- a/imgtools/romtools/group/release.txt Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/group/release.txt Tue Oct 26 11:12:31 2010 +0800
@@ -1,3 +1,25 @@
+Version 2.16.1 (ROFSBUILD)
+===============
+Released by Marvin Shi, 25/10/2010
+ 1) ou1cimx1#627682 Rofsbuild hangs with "-loginput" option on linux
+
+=======
+Version 2.16.0 (ROFSBUILD)
+===============
+Released by Marvin Shi and Jason Cui, 21/10/2010
+ 1) Concurrent symbol generation.
+
+Version 2.15.0 (ROFSBUILD)
+===============
+Released by Lorence Wang, 20/10/2010
+ 1) Volume Serial NO. for FAT image.
+
+Version 2.18.4 (ROMBUILD)
+Version 2.14.2 (ROFSBUILD)
+===============
+Released by Ross Qin, 15/10/2010
+ 1) ou1cimx1#616869 Copyright Info missing in symbolgenerator.*/Romtools source codes are not VC friendly
+
Version 2.18.3 (ROMBUILD)
Version 2.14.1 (ROFSBUILD)
===============
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/group/rofsbuild.vcproj Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,546 @@
+<?xml version="1.0" encoding="gb2312"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="rofsbuild"
+ ProjectGUID="{A68ED0C5-60D6-4281-8226-8F9830A424CF}"
+ RootNamespace="rofsbuild"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="\VCOutput\Bins"
+ IntermediateDirectory="\VCOutput\Int\$(ProjectName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ UseOfATL="0"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../imglib/boostlibrary;../../imglib/boostlibrary/boost;../rofsbuild;../rofsbuild/inc;../../imglib/inc;../../imglib/compress;../../imglib/memmap/include;../../imglib/patchdataprocessor/include;../../imglib/parameterfileprocessor/include;../../imglib/uniconv/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__MSVCDOTNET__;__TOOLS__ ;__VC32__;_STLP_DEBUG=1;__OPERATOR_NEW_DECLARED__;"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ TreatWChar_tAsBuiltInType="false"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ DisableSpecificWarnings="4819;4996;4244;4334;4290"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="false"
+ OutputFile="$(OutDir)\$(ProjectName)D.exe"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="../../imglib/boostlibrary/binary/windows;../stlport_5-2-1_vc90_staticlib"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="\VCOutput\Bins"
+ IntermediateDirectory="\VCOutput\Int\$(ProjectName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ UseOfATL="0"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="../../imglib/boostlibrary;../../imglib/boostlibrary/boost;../rofsbuild;../rofsbuild/inc;../../imglib/inc;../../imglib/compress;../../imglib/memmap/include;../../imglib/patchdataprocessor/include;../../imglib/parameterfileprocessor/include;../../imglib/uniconv/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;__MSVCDOTNET__;__TOOLS__ ;__VC32__;__OPERATOR_NEW_DECLARED__;"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ TreatWChar_tAsBuiltInType="false"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4819;4996;4244;4334;4290"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../imglib/boostlibrary/binary/windows;../stlport_5-2-1_vc90_staticlib"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\rofsbuild\fatcluster.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\fatimagegenerator.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\fsnode.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_build.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_coreimage.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_driveimage.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_driveutl.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_obey.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_rofs.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_smrimage.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\rofsbuild.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\symbolgenerator.cpp"
+ >
+ </File>
+ <Filter
+ Name="e32image"
+ >
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\compress.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\decode.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\deflate.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\e32image.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\encode.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\inflate.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\panic.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="compress"
+ >
+ <File
+ RelativePath="..\..\imglib\compress\byte_pair.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\compress\pagedcompress.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="e32uid"
+ >
+ <File
+ RelativePath="..\..\imglib\e32uid\e32uid.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="imglib_host"
+ >
+ <File
+ RelativePath="..\..\imglib\host\h_file.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\h_mem.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\h_utl.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\utf16string.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="cache"
+ >
+ <File
+ RelativePath="..\rofsbuild\src\cache\cache.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cacheablelist.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cacheentry.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cacheexception.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cachegenerator.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cachemanager.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\src\cache\cachevalidator.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="memmap"
+ >
+ <File
+ RelativePath="..\..\imglib\memmap\source\memmap.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\memmap\source\memmaputils.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="patchdataprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\patchdataprocessor\source\patchdataprocessor.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="parameterfileprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\parameterfileprocessor\source\parameterfileprocessor.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="uniconv"
+ >
+ <File
+ RelativePath="..\..\imglib\uniconv\source\uniconv.cpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\rofsbuild\fatcluster.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\fatimagegenerator.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\fsnode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_coreimage.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_driveimage.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_driveutl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_obey.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_rofs.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_romnode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\r_smrimage.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\symbolgenerator.h"
+ >
+ </File>
+ <Filter
+ Name="compress"
+ >
+ <File
+ RelativePath="..\..\imglib\compress\byte_pair.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="e32image"
+ >
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\deflate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\farray.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\huffman.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\panic.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="imglib_inc"
+ >
+ <File
+ RelativePath="..\..\imglib\inc\e32image.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\inc\fatdefines.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\inc\h_utl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\inc\utf16string.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="cache"
+ >
+ <File
+ RelativePath="..\rofsbuild\inc\cache\cache.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\inc\cache\cacheablelist.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\inc\cache\cacheentry.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\inc\cache\cacheexception.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\inc\cache\cachegenerator.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\inc\cache\cachemanager.hpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rofsbuild\inc\cache\cachevalidator.hpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="memmap"
+ >
+ <File
+ RelativePath="..\..\imglib\memmap\include\memmap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\memmap\include\memmaputils.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="patchdataprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\patchdataprocessor\include\patchdataprocessor.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="parameterfileprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\parameterfileprocessor\include\parameterfileprocessor.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="uniconv"
+ >
+ <File
+ RelativePath="..\..\imglib\uniconv\include\uniconv.hpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/group/rombuild.vcproj Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,474 @@
+<?xml version="1.0" encoding="gb2312"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="9.00"
+ Name="rombuild"
+ ProjectGUID="{77D9E2A3-AD01-4691-9137-8DA53692BE9D}"
+ RootNamespace="rombuild"
+ Keyword="Win32Proj"
+ TargetFrameworkVersion="196613"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory="\VCOutput\Bins"
+ IntermediateDirectory="\VCOutput\Int\$(ProjectName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ UseOfATL="0"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="../../imglib/boostlibrary;../../imglib/boostlibrary/boost;../rombuild;../../imglib/inc;../../imglib/compress;../../imglib/memmap/include;../../imglib/patchdataprocessor/include;../../imglib/parameterfileprocessor/include;../../imglib/uniconv/include"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;__MSVCDOTNET__;__TOOLS__ ;__VC32__;_STLP_DEBUG=1;__OPERATOR_NEW_DECLARED__;snprintf=_snprintf"
+ MinimalRebuild="true"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="1"
+ TreatWChar_tAsBuiltInType="false"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="4"
+ DisableSpecificWarnings="4819;4996;4244;4334"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ IgnoreImportLibrary="false"
+ OutputFile="$(OutDir)\$(ProjectName)D.exe"
+ LinkIncremental="2"
+ AdditionalLibraryDirectories="../../imglib/boostlibrary/binary/windows;../stlport_5-2-1_vc90_staticlib"
+ IgnoreDefaultLibraryNames=""
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory="\VCOutput\Bins"
+ IntermediateDirectory="\VCOutput\Int\$(ProjectName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ UseOfATL="0"
+ CharacterSet="2"
+ WholeProgramOptimization="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ EnableIntrinsicFunctions="true"
+ AdditionalIncludeDirectories="../../imglib/boostlibrary;../../imglib/boostlibrary/boost;../rombuild;../../imglib/inc;../../imglib/compress;../../imglib/memmap/include;../../imglib/patchdataprocessor/include;../../imglib/parameterfileprocessor/include;../../imglib/uniconv/include"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;__MSVCDOTNET__;__TOOLS__ ;__VC32__;__OPERATOR_NEW_DECLARED__;snprintf=_snprintf"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="true"
+ TreatWChar_tAsBuiltInType="false"
+ UsePrecompiledHeader="0"
+ WarningLevel="3"
+ DebugInformationFormat="3"
+ DisableSpecificWarnings="4819;4996;4244;4334"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ LinkIncremental="1"
+ AdditionalLibraryDirectories="../../imglib/boostlibrary/binary/windows;../stlport_5-2-1_vc90_staticlib"
+ GenerateDebugInformation="true"
+ SubSystem="1"
+ OptimizeReferences="2"
+ EnableCOMDATFolding="2"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Sources"
+ Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+ >
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\inflate.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_areaset.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_build.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_collapse.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_coreimage.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_coreimagereader.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_dir.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_global.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_header.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_obey.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_rom.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_srec.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\rombuild.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\symbolgenerator.cpp"
+ >
+ </File>
+ <Filter
+ Name="e32image"
+ >
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\compress.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\decode.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\deflate.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\e32image.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\encode.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\panic.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="compress"
+ >
+ <File
+ RelativePath="..\..\imglib\compress\byte_pair.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\compress\pagedcompress.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="e32uid"
+ >
+ <File
+ RelativePath="..\..\imglib\e32uid\e32uid.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="imglib_host"
+ >
+ <File
+ RelativePath="..\..\imglib\host\h_file.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\h_mem.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\h_utl.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\host\utf16string.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="memmap"
+ >
+ <File
+ RelativePath="..\..\imglib\memmap\source\memmap.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\memmap\source\memmaputils.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="parameterfileprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\parameterfileprocessor\source\parameterfileprocessor.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="patchdataprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\patchdataprocessor\source\patchdataprocessor.cpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="uniconv"
+ >
+ <File
+ RelativePath="..\..\imglib\uniconv\source\uniconv.cpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ <Filter
+ Name="Headers"
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+ >
+ <File
+ RelativePath="..\rombuild\r_areaset.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_coreimage.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_coreimagereader.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_dir.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_global.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_mromimage.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_obey.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\r_rom.h"
+ >
+ </File>
+ <File
+ RelativePath="..\rombuild\symbolgenerator.h"
+ >
+ </File>
+ <Filter
+ Name="compress"
+ >
+ <File
+ RelativePath="..\..\imglib\compress\byte_pair.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="e32image"
+ >
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\deflate.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\farray.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\huffman.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\e32image\deflate\panic.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="imglib_inc"
+ >
+ <File
+ RelativePath="..\..\imglib\inc\e32image.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\inc\h_utl.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\inc\utf16string.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="memmap"
+ >
+ <File
+ RelativePath="..\..\imglib\memmap\include\memmap.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\imglib\memmap\include\memmaputils.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="patchdataprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\patchdataprocessor\include\patchdataprocessor.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="parameterfileprocessor"
+ >
+ <File
+ RelativePath="..\..\imglib\parameterfileprocessor\include\parameterfileprocessor.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="uniconv"
+ >
+ <File
+ RelativePath="..\..\imglib\uniconv\include\uniconv.hpp"
+ >
+ </File>
+ </Filter>
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/group/romtools.sln Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,32 @@
+
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual C++ Express 2008
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rombuild", "rombuild.vcproj", "{77D9E2A3-AD01-4691-9137-8DA53692BE9D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rofsbuild", "rofsbuild.vcproj", "{A68ED0C5-60D6-4281-8226-8F9830A424CF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "readimage", "readimage.vcproj", "{14ADB7DA-3076-4A77-868E-83E04E8D5A13}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Release|Win32 = Release|Win32
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {77D9E2A3-AD01-4691-9137-8DA53692BE9D}.Debug|Win32.ActiveCfg = Debug|Win32
+ {77D9E2A3-AD01-4691-9137-8DA53692BE9D}.Debug|Win32.Build.0 = Debug|Win32
+ {77D9E2A3-AD01-4691-9137-8DA53692BE9D}.Release|Win32.ActiveCfg = Release|Win32
+ {77D9E2A3-AD01-4691-9137-8DA53692BE9D}.Release|Win32.Build.0 = Release|Win32
+ {A68ED0C5-60D6-4281-8226-8F9830A424CF}.Debug|Win32.ActiveCfg = Debug|Win32
+ {A68ED0C5-60D6-4281-8226-8F9830A424CF}.Debug|Win32.Build.0 = Debug|Win32
+ {A68ED0C5-60D6-4281-8226-8F9830A424CF}.Release|Win32.ActiveCfg = Release|Win32
+ {A68ED0C5-60D6-4281-8226-8F9830A424CF}.Release|Win32.Build.0 = Release|Win32
+ {14ADB7DA-3076-4A77-868E-83E04E8D5A13}.Debug|Win32.ActiveCfg = Debug|Win32
+ {14ADB7DA-3076-4A77-868E-83E04E8D5A13}.Debug|Win32.Build.0 = Debug|Win32
+ {14ADB7DA-3076-4A77-868E-83E04E8D5A13}.Release|Win32.ActiveCfg = Release|Win32
+ {14ADB7DA-3076-4A77-868E-83E04E8D5A13}.Release|Win32.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
--- a/imgtools/romtools/maksym/maksymrofs.pl Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/maksym/maksymrofs.pl Tue Oct 26 11:12:31 2010 +0800
@@ -15,371 +15,8 @@
# Produces symbolic information given a ROFS log file and .map files for relevant binary files
#
-require 5.003_07;
-no strict 'vars';
-use English;
-use FindBin; # for FindBin::Bin
-
-# Version
-my $MajorVersion = 1;
-my $MinorVersion = 1;
-my $PatchVersion = 0;
-
-# Globals
-my $maksym = "";
-my $rofsbuild;
-my $debug = 0;
-
-&args;
-&main;
+shift @ARGV;
+my $logfile = shift @ARGV;
+my $command = "rofsbuild -loginput=$logfile";
+system ($command);
exit 0;
-
-sub CompareAddrs()
-{
- return -1 if ($a < $b);
- return 1 if ($a > $b);
- return 0;
-}
-
-#
-# main
-#
-sub main()
-{
- open (ROFS, "<$rofsbuild") or die "ERROR: Can't open rofsbuild log file \"$rofsbuild\"\n";
- if ($maksym ne "")
- {
- open (SYM, ">$maksym") or die "ERROR: Can't open output file \"$maksym\"\n";
- print "Creating $maksym...\n"
- }
-
- my $curretnLine;
- while ($currentLine = <ROFS>)
- {
- # Check that the given log file is from a rofs image and set up the name for the symbol file
- if ($currentLine =~ /^Creating Rofs image (\S*)/)
- {
- if ($maksym eq "")
- {
- # For backwards compatibility, replace trailing .img with .symbol
- # if no trailing .img, just append .symbol anyway
- $maksym = $1;
- $maksym =~ s/(\.img)?$/.symbol/i;
- close SYM;
- open (SYM, ">$maksym") or die "ERROR: Can't open output file \"$maksym\"\n";
- print "\nCreating $maksym...\n"
- }
- next;
- }
-
- # found at end of file
- if ($currentLine =~ /^Writing Rom image/)
- {
- close SYM;
- $maksym = "";
- next;
- }
-
- # Data file
- if ($currentLine =~ /^File \'(.*)\' size: \S+\s*$/)
- {
- my $file = $1;
- $file =~ /([^\\]+)$/;
- printf SYM "\nFrom $file\n\n00000000 0000 $1\n";
- }
-
- # Executable file
- elsif ($currentLine =~ /^Compressed executable File \'(.*)\' size: \S+\s*, mode:\S+\s*$/)
- {
- ProcessCompressedLine($1);
- }
- }
- close SYM;
- close ROFS;
-}
-
-sub ProcessCompressedLine
-{
- my ($file) = @_;
-
- my $mapfile;
- my $mapfile2;
- print SYM "\nFrom $file\n\n";
-
- # Look in map file for symbols in .text and relocate them
- $mapfile2 = $file.".map";
- $mapfile = $file;
- $mapfile =~ s/\.\w+$/\.map/;
- if (!(open (MAP, "$mapfile2") || open (MAP, "$mapfile")))
- {
- print "$file\nWarning: Can't open \"$mapfile2\" or \"$mapfile\"\n";
- # couldn't find map file so output in format that is used for non-binary files
- my $BinSize = GetSizeFromBinFile($file);
- $file =~ /([^\\]+)$/;
- printf "00000000 %04x $1\n", $BinSize;
- printf SYM "00000000 %04x $1\n", $BinSize;
- }
- else
- {
- my @maplines;
- while ($_ = <MAP>)
- {
- push @maplines, $_;
- }
- close MAP;
- # See if we're dealing with the RVCT output
- if ($file =~m/ARMV5/i)
- {
- ProcessArmv5File($file, \@maplines);
- }
- elsif( ($file =~ /GCCE/i) || ($file =~ /ARM4/i) )
- {
- ProcessGcceOrArm4File($file, \@maplines);
- }
- else
- {
- print "\nWarning: cannot determine linker type used to create $file\n";
- $file =~ /([^\\]+)$/;
- printf SYM "00000000 0000 $1\n";
- }
- }
-}
-
-sub ProcessArmv5File
-{
- my ($file, $mapLines) = @_;
- my @maplines = @$mapLines;
- if ($maplines[0] !~ /^ARM Linker/)
- {
- print "\nWarning: expecting $file to be generated by ARM linker\n";
- # file not in format produced by ARMV5 linker so treat file as non-binary file
- $file =~ /([^\\]+)$/;
- printf SYM "00000000 0000 $1\n";
- }
- else
- {
- # scroll down to the global symbols
- while ($_ = shift @maplines)
- {
- if ($_ =~ /Global Symbols/)
- {
- last;
- }
- }
-
- my %syms;
- my $baseOffset; # offset to subtract from each address so that the first entry has address 0x0
-
- foreach (@maplines)
- {
- # name address ignore size section
- if (/^\s*(.+)\s*(0x\S+)\s+[^\d]*(\d+)\s+(.*)$/)
- {
- my $sym = $1;
- my $addr = hex($2);
- my $size = sprintf("%04x",$3);
- my $section = $4;
- $size = sprintf("%04x", 8) if ($section =~ /\(StubCode\)/);
-
- # it is possible that there will be more than one entry in a log file for a
- # particular address, this is because aliases are included.
- # The following code checks that the correct function (i.e. the one with
- # non-zero size) is being included in the symbol file.
- if($addr > 0) {
- if( ! defined $baseOffset ) {
- $baseOffset = $addr;
- }
- # no entry at this address so create one regardless of whether size is zero
- # an entry at this address exists, replace if it is an alias
- if( (! exists $syms{$addr-$baseOffset}) || !($size eq "0000")) {
- $syms{$addr - $baseOffset} = "$size $sym $section";
- }
- }
- }
- }
-
- # Write symbols in address order
- my @addrs = sort CompareAddrs keys %syms;
- for ($i = 0; $i < @addrs ; $i++)
- {
- my $thisaddr = $addrs[$i];
- printf SYM "%08x %s\n",
- $thisaddr, $syms{$thisaddr};
- }
- }
-}
-
-sub ProcessGcceOrArm4File
-{
- my ($file, $mapLines) = @_;
- my @maplines = @$mapLines;
- my %syms;
- my $stubhex=1;
-
- # Find text section
- while (($_ = shift @maplines) && !(/^\.text\s+/))
- {
- }
-
- /^\.text\s+(\w+)\s+\w+/ or die "ERROR: Can't get .text section info for \"$file\"\n";
-
- my $imgtext=hex($1);
-
- # Slurp symbols 'til the end of the text section
- foreach (@maplines)
- {
-
- # blank line marks the end of the text section
- last if (/^$/);
-
- # .text <addr> <len> <library(member)>
- # .text$something
- # <addr> <len> <library(member)>
- # <addr> <len> LONG 0x0
-
- if (/^\s(\.text)?\s+(0x\w+)\s+(0x\w+)\s+(.*)$/io)
- {
- my $address = hex($2);
- my $length = hex($3);
- my $libraryfile = $4;
- next if ($libraryfile =~ /^LONG 0x/);
-
- $syms{$address+$length} = ' '; # impossible symbol as end marker
-
- #set $stubhex value as $address if there is a match
- if ($libraryfile =~ /.*lib\(.*d\d*s_?\d{5}.o\)$/io)
- {
- $stubhex=$address;
- }
- next;
- }
-
- # <addr> <symbol name possibly including spaces>
- if (/^\s+(\w+)\s\s+([a-zA-Z_].+)/o)
- {
- my $addr = hex($1);
- my $symbol = $2;
- $symbol = "stub $symbol" if ($addr == $stubhex);
- $syms{$addr} = $symbol;
- next;
- }
- }
-
- # Write symbols in address order
- @addrs = sort CompareAddrs keys %syms;
- for ($i = 0; $i < @addrs - 1; $i++)
- {
- my $symbol = $syms{$addrs[$i]};
- next if ($symbol eq ' ');
- printf SYM "%08x %04x %s\n",
- $addrs[$i] - $imgtext, $addrs[$i+1]-$addrs[$i], $symbol;
- }
- # last address assumed to be imgtext+lentext
-
- close MAP;
-}
-
-#
-# args - get command line args
-#
-sub args
-{
- my $arg;
- my @args;
- my $flag;
-
- &help if (!@ARGV);
-
- while (@ARGV)
- {
- $arg = shift @ARGV;
-
- if ($arg=~/^[\-](\S*)$/)
- {
- $flag=$1;
-
- if ($flag=~/^[\?h]$/i)
- {
- &help;
- }
- elsif ($flag=~/^d$/i)
- {
- $debug = 1;
- }
- else
- {
- print "\nERROR: Unknown flag \"-$flag\"\n";
- &usage;
- exit 1;
- }
- }
- else
- {
- push @args,$arg;
- }
- }
-
- if (@args)
- {
- $rofsbuild = shift @args;
- if (@args)
- {
- $maksym = shift @args;
- if (@args)
- {
- print "\nERROR: Incorrect argument(s) \"@args\"\n";
- &usage;
- exit 1;
- }
- }
- }
-}
-
-sub help ()
-{
- my $build;
-
- print "\nmaksymrofs - Produce symbolic information given a ROFS image V${MajorVersion}.${MinorVersion}.${PatchVersion}\n";
- &usage;
- exit 0;
-}
-
-sub usage ()
-{
- print <<EOF
-
-Usage:
- maksymrofs <logfile> [<outfile>]
-
-Where:
- <logfile> Log file from rofsbuild tool.
- <outfile> Output file. Defaults to imagename.symbol.
-EOF
- ;
- exit 0;
-}
-
-sub GetSizeFromBinFile ()
-{
- my ($file) = @_;
- my $tmpfile = "temp.info";
- system("readimage $file -o $tmpfile");
- return 0 if (!-e $tmpfile);
-
- open (TMP, "<$tmpfile");
- my $line;
- my $size = 0;
- while ($line = <TMP>)
- {
- print $line;
- if ($line =~ /^Code size\W+(\w+)$/)
- {
- $size = hex($1);
- last;
- }
- }
- close TMP;
- unlink $tmpfile;
- return $size;
-}
-
--- a/imgtools/romtools/rofsbuild/fatimagegenerator.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/fatimagegenerator.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -76,9 +76,7 @@
iFatHeader.BS_DrvNum = 0x80 ;
iFatHeader.BS_BootSig = 0x29 ;
- time_t rawtime;
- time(&rawtime);
- *((TUint32*)iFatHeader.BS_VolID) = (TUint32)rawtime;
+ *((TUint32*)iFatHeader.BS_VolID) = aAttr.iVolumeId;
memcpy(iFatHeader.BS_VolLab,aAttr.iDriveVolumeLabel,sizeof(iFatHeader.BS_VolLab));
if(aAttr.iImageSize == 0){
if(aType == EFat32)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/rofsbuild/inc/logging/loggingexception.hpp Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,48 @@
+/*
+* Copyright (c) 1995-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:
+*
+*/
+
+
+#ifndef ROM_TOOLS_ROFSBUILD_LOGGING_LOGGINGEXCEPTION_H_
+#define ROM_TOOLS_ROFSBUILD_LOGGING_LOGGINGEXCEPTION_H_
+
+
+/*
+ * @class LoggingException
+ */
+class LoggingException
+{
+public:
+ LoggingException(int ErrorCode);
+
+ int GetErrorCode(void);
+
+ const char* GetErrorMessage(void);
+
+ static int RESOURCE_ALLOCATION_FAILURE;
+ static int INVALID_LOG_FILENAME ;
+
+ virtual ~LoggingException(void);
+protected:
+ int errcode;
+private:
+ LoggingException(void);
+
+ LoggingException& operator = (const LoggingException&);
+};
+
+
+#endif /* defined ROM_TOOLS_ROFSBUILD_LOGGING_LOGGINGEXCEPTION_H_ */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/rofsbuild/inc/logging/logparser.hpp Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,46 @@
+/*
+* Copyright (c) 1995-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:
+*
+*/
+
+
+#ifndef ROM_TOOLS_ROFSBUILD_LOGGING_LOGPARSER_H_
+#define ROM_TOOLS_ROFSBUILD_LOGGING_LOGPARSER_H_
+
+
+/**
+ * @class LogParser
+ */
+class LogParser
+{
+public:
+ static LogParser* GetInstance(void) throw (LoggingException);
+
+ void ParseSymbol(const char* LogFilename) throw (LoggingException);
+
+ void Cleanup(void);
+protected:
+ static LogParser* Only;
+private:
+ LogParser(void);
+
+ LogParser(const LogParser&);
+
+ LogParser& operator = (const LogParser&);
+};
+
+
+
+#endif /* defined ROM_TOOLS_ROFSBUILD_LOGGING_LOGPARSER_H_ */
--- a/imgtools/romtools/rofsbuild/r_build.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/r_build.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -1071,9 +1071,9 @@
char * buffer = new char [size];
#if defined(__LINUX__)
ostrstream os((char*)aDest, aMaxSize, (ios_base::openmode)(ios_base::out+ios_base::binary));
-#elif defined(__TOOLS2__) && defined (_STLP_THREADS)
+#elif ( defined(__TOOLS2__) || defined(__MSVCDOTNET__)) && defined (_STLP_THREADS)
ostrstream os((char*)buffer, size,(ios_base::out+ios_base::binary));
-#elif defined( __TOOLS2__)
+#elif ( defined(__TOOLS2__) || defined(__MSVCDOTNET__))
ostrstream os((char*)buffer, size,(ios_base::out+ios_base::binary));
#else
ostrstream os( (char*)buffer, size, (ios_base::out+ios_base::binary));
@@ -1119,10 +1119,12 @@
}
}
-#if defined(__TOOLS2__) && defined (_STLP_THREADS)
+#if defined(__TOOLS2__) || defined(__MSVCDOTNET__)
+ #ifdef _STLP_THREADS
ostrstream os((char*)aDest, aMaxSize,(ios_base::out+ios_base::binary));
-#elif __TOOLS2__
+ #else
ostrstream os((char*)aDest, aMaxSize, (_Ios_Openmode)(ios_base::out+ios_base::binary));
+ #endif
#else
ostrstream os((char*)aDest, aMaxSize, (ios_base::out+ios_base::binary));
#endif
--- a/imgtools/romtools/rofsbuild/r_obey.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/r_obey.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -91,6 +91,7 @@
{_K("dataimagename"),1, 1,EKeywordDataImageName, "Data Drive image file name"},
{_K("dataimagefilesystem"),1, 1,EKeywordDataImageFileSystem, "Drive image file system format"},
{_K("dataimagesize"),1, 1,EKeywordDataImageSize, "Maximum size of Data Drive image"},
+ {_K("volumeid"),1, 1,EKeywordDataImageVolumeID, "Volume ID of Data Drive image"},
{_K("volume"),1, -1,EKeywordDataImageVolume, "Volume Label of Data Drive image"},
{_K("sectorsize"),1, 1,EKeywordDataImageSectorSize, "Sector size(in bytes) of Data Drive image"},
{_K("clustersize"),1, 1,EKeywordDataImageClusterSize, "Cluster size(in bytes) of Data Drive image"},
@@ -819,30 +820,33 @@
TUint position = volumeLabel.find(volumeLabelKeyword.c_str(),0,volumeLabelKeyword.size());
position += volumeLabelKeyword.size();
- if (volumeLabel.find('=',position) != string::npos) {
- position=volumeLabel.find('=',position);
- ++position;
+ while (iReader.IsGap(volumeLabel[position]))
+ position ++;
+ volumeLabel = volumeLabel.substr(position);
+
+ if (volumeLabel.find('=',0) != string::npos) {
+ Print(EWarning,"Value for Volume Label includes illegel charactor. Default value is considered.\n");
+ break;
}
- position = volumeLabel.find_first_not_of(' ',position);
+ // Remove the new line character from the end
+ position = volumeLabel.find_first_of("\n");
if (position != string::npos) {
- volumeLabel = volumeLabel.substr(position);
-
- // Remove the new line character from the end
- position = volumeLabel.find_first_of("\r\n");
- if (position != string::npos)
- volumeLabel = volumeLabel.substr(0,position);
- size_t length = volumeLabel.length() ;
- if(length > 11)
- length = 11 ;
- memcpy(iConfigurableFatAttributes.iDriveVolumeLabel,volumeLabel.c_str(),length) ;
- while(length != 11)
- iConfigurableFatAttributes.iDriveVolumeLabel[length++] = ' ';
- iConfigurableFatAttributes.iDriveVolumeLabel[length] = 0;
+ if (position != 0 && volumeLabel[position-1] == '\r')
+ position --;
+ volumeLabel = volumeLabel.substr(0,position);
}
- else {
+ size_t length = volumeLabel.length();
+ if (length == 0) {
Print(EWarning,"Value for Volume Label is not provided. Default value is considered.\n");
+ break;
}
+ if(length > 11)
+ length = 11 ;
+ memcpy(iConfigurableFatAttributes.iDriveVolumeLabel,volumeLabel.c_str(),length) ;
+ while(length != 11)
+ iConfigurableFatAttributes.iDriveVolumeLabel[length++] = ' ';
+ iConfigurableFatAttributes.iDriveVolumeLabel[length] = 0;
break;
}
case EKeywordDataImageSectorSize:
@@ -882,6 +886,21 @@
iConfigurableFatAttributes.iDriveNoOfFATs = noOfFats;
}
break;
+ case EKeywordDataImageVolumeID:
+ {
+ static bool isSet = false;
+ if (isSet)
+ Print(EWarning,"Duplicate setting for volume ID will be ignored.\n");
+ const char* bigString = iReader.Word(1);
+ TUint32 volumeid = 0;
+ TInt res = Val(volumeid,bigString);
+ if (res != KErrNone || volumeid == 0xFFFFFFFF)
+ Print(EWarning,"Invalid Volume ID specified. Default value is considered.\n");
+ else
+ iConfigurableFatAttributes.iVolumeId = volumeid;
+ isSet = true;
+ }
+ break;
default:
// unexpected keyword iReader.Word(0), keep going.
break;
--- a/imgtools/romtools/rofsbuild/r_obey.h Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/r_obey.h Tue Oct 26 11:12:31 2010 +0800
@@ -75,6 +75,7 @@
EKeywordDataImageName,
EKeywordDataImageFileSystem,
EKeywordDataImageSize,
+ EKeywordDataImageVolumeID,
EKeywordDataImageVolume,
EKeywordDataImageSectorSize,
EKeywordDataImageClusterSize,
@@ -158,12 +159,12 @@
void ProcessTime(TInt64& aTime);
static void TimeNow(TInt64& aTime);
+ inline static TBool IsGap(char ch) {
+ return (ch==' ' || ch=='=' || ch=='\t');
+ }
private:
TInt ReadAndParseLine();
TInt Parse();
- inline static TBool IsGap(char ch) {
- return (ch==' ' || ch=='=' || ch=='\t');
- }
static const ObeyFileKeyword iKeywords[];
static const FileAttributeKeyword iAttributeKeywords[];
--- a/imgtools/romtools/rofsbuild/r_rofs.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/r_rofs.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -356,7 +356,7 @@
thrds.join_all();
delete [] workers;
if(iSymGen)
- iSymGen->AddFile("",false);
+ iSymGen->SetFinished();
TUint offset = aBaseOffset;
TUint8* dest = aDestBase;
--- a/imgtools/romtools/rofsbuild/rofsbuild.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/rofsbuild.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -34,6 +34,8 @@
#include "cache/cachevalidator.hpp"
#include "cache/cacheablelist.hpp"
#include "cache/cachemanager.hpp"
+#include "logging/loggingexception.hpp"
+#include "logging/logparser.hpp"
#include <malloc.h>
#ifndef WIN32
@@ -46,7 +48,7 @@
#endif
static const TInt RofsbuildMajorVersion=2;
-static const TInt RofsbuildMinorVersion=14;
+static const TInt RofsbuildMinorVersion=16;
static const TInt RofsbuildPatchVersion=1;
static TBool SizeSummary=EFalse;
static TPrintType SizeWhere=EAlways;
@@ -78,6 +80,7 @@
TBool gSmrImage = EFalse;
string gSmrFileName = "";
static string cmdlogfile = "";
+static string loginput = "";
//Cache global variables
bool gCache = false;
@@ -115,7 +118,8 @@
" -argfile=<FileName> specify argument-file name containing list of command-line arguments\n"
" -lowmem use memory-mapped file for image build to reduce physical memory consumption\n"
" -k to enable keepgoing when duplicate files exist in oby\n"
-" -logfile=<fileName> specify log file\n";
+" -logfile=<fileName> specify log file\n"
+" -loginput=<log filename> specify as input a log file and produce as output symbol file.\n";
char ReallyHelpText[] =
"Log Level:\n"
@@ -325,6 +329,9 @@
else if (strnicmp(argv[i], "-logfile=",9) ==0) {
cmdlogfile = argv[i] + 9;
}
+ else if (strnicmp(argv[i], "-loginput=", 10) == 0) {
+ loginput = argv[i] + 10;
+ }
else {
#ifdef WIN32
Print (EWarning, "Unrecognised option %s\n",argv[i]);
@@ -348,7 +355,7 @@
return;
if((gDriveImage == EFalse) && (gSmrImage == EFalse) &&
- (filename.empty() || (gUseCoreImage && gImageFilename.length() == 0))){
+ (filename.empty() || (gUseCoreImage && gImageFilename.length() == 0)) && (loginput.length() == 0)){
Print (EAlways, HelpText);
if (reallyHelp) {
ObeyFileReader::KeywordHelp();
@@ -487,6 +494,29 @@
gCPUNum = MAXIMUM_THREADS;
PrintVersion();
processCommandLine(argc, argv);
+ if(gThreadNum == 0) {
+ if(gCPUNum > 0) {
+ printf("WARNING: The number of processors (%d) is used as the number of concurrent jobs.\n", gCPUNum);
+ gThreadNum = gCPUNum;
+ }
+ else {
+ printf("WARNING: Can't automatically get the valid number of concurrent jobs and %d is used.\n", DEFAULT_THREADS);
+ gThreadNum = DEFAULT_THREADS;
+ }
+ }
+ if(loginput.length() >= 1)
+ {
+ try
+ {
+ LogParser::GetInstance()->ParseSymbol(loginput.c_str());
+ }
+ catch(LoggingException le)
+ {
+ printf("ERROR: %s\r\n", le.GetErrorMessage());
+ return 1;
+ }
+ return 0;
+ }
//if the user wants to clean up the cache, do it only.
if(gCleanCache){
try {
@@ -515,16 +545,6 @@
if ((!obeyFileName) && (!gDriveFilename.empty()) && (!gSmrFileName.empty())){
return KErrGeneral;
}
- if(gThreadNum == 0) {
- if(gCPUNum > 0) {
- printf("WARNING: The number of processors (%d) is used as the number of concurrent jobs.\n", gCPUNum);
- gThreadNum = gCPUNum;
- }
- else {
- printf("WARNING: Can't automatically get the valid number of concurrent jobs and %d is used.\n", DEFAULT_THREADS);
- gThreadNum = DEFAULT_THREADS;
- }
- }
// Process drive obey files.
if(gDriveImage) {
char temp = 0;
@@ -582,8 +602,9 @@
}
// Process Rofs Obey files.
if(obeyFileName) {
- if (cmdlogfile[cmdlogfile.size()-1] == '\\' || cmdlogfile[cmdlogfile.size()-1] == '/')
- cmdlogfile += "ROFSBUILD.LOG";
+ if (cmdlogfile.empty() || cmdlogfile[cmdlogfile.size()-1] == '\\' || cmdlogfile[cmdlogfile.size()-1] == '/')
+ cmdlogfile += "ROFSBUILD.LOG" ;
+
H.SetLogFile(cmdlogfile.c_str());
ObeyFileReader *reader = new ObeyFileReader(obeyFileName);
if (!reader->Open())
--- a/imgtools/romtools/rofsbuild/rofsbuild.mmp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/rofsbuild.mmp Tue Oct 26 11:12:31 2010 +0800
@@ -25,10 +25,13 @@
SOURCE r_obey.cpp r_build.cpp r_rofs.cpp r_driveimage.cpp r_driveutl.cpp
SOURCE rofsbuild.cpp r_coreimage.cpp r_smrimage.cpp symbolgenerator.cpp
SOURCE fatcluster.cpp fsnode.cpp fatimagegenerator.cpp
+SOURCE symbolprocessunit.cpp
SOURCEPATH ../../imglib/host
SOURCE h_utl.cpp h_file.cpp h_mem.cpp utf16string.cpp
SOURCEPATH ../rofsbuild/src/cache
SOURCE cachemanager.cpp cacheexception.cpp cache.cpp cacheablelist.cpp cachevalidator.cpp cachegenerator.cpp cacheentry.cpp
+SOURCEPATH ../rofsbuild/src/logging
+SOURCE loggingexception.cpp logparser.cpp
// executable compression
SOURCEPATH ../../imglib/e32uid
@@ -50,6 +53,7 @@
USERINCLUDE ../rofsbuild/inc
USERINCLUDE ../../imglib/boostlibrary/
USERINCLUDE ../../imglib/boostlibrary/boost
+USERINCLUDE ../rofsbuild
STATICLIBRARY patchdataprocessor parameterfileprocessor memmap
STATICLIBRARY boost_thread-1.39 boost_filesystem-1.39 boost_regex-1.39 boost_system-1.39 uniconv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/rofsbuild/src/logging/loggingexception.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,59 @@
+/*
+* Copyright (c) 1995-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:
+*
+*/
+
+#include "logging/loggingexception.hpp"
+
+
+int LoggingException::RESOURCE_ALLOCATION_FAILURE = 1;
+int LoggingException::INVALID_LOG_FILENAME = 2;
+
+
+LoggingException::LoggingException(int ErrorCode)
+{
+ this->errcode = ErrorCode;
+
+ return;
+}
+
+
+int LoggingException::GetErrorCode(void)
+{
+ return this->errcode;
+}
+
+
+const char* LoggingException::GetErrorMessage(void)
+{
+ if(this->errcode == LoggingException::RESOURCE_ALLOCATION_FAILURE)
+ return "Not enough system resources to initialize logging module.";
+ else if(this->errcode == LoggingException::INVALID_LOG_FILENAME)
+ return "Invalid log filename as input.";
+// else if(this->errcode == CacheException::CACHE_INVALID)
+// return "Cache is invalid.";
+// else if(this->errcode == CacheException::CACHE_IS_EMPTY)
+// return "Cache is empty.";
+// else if(this->errcode == CacheException::HARDDRIVE_FAILURE)
+// return "A hard drive failure occurred in Cache operations.";
+
+ return "Undefined error type.";
+}
+
+
+LoggingException::~LoggingException(void)
+{
+ return;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/rofsbuild/src/logging/logparser.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 1995-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:
+*
+*/
+
+
+#include <new>
+#include <iostream>
+#include <fstream>
+#include <string>
+using namespace std;
+
+#include "logging/loggingexception.hpp"
+#include "logging/logparser.hpp"
+#include "symbolgenerator.h"
+
+
+LogParser* LogParser::Only = (LogParser*)0;
+
+
+LogParser* LogParser::GetInstance(void) throw (LoggingException)
+{
+ if(! LogParser::Only)
+ {
+ LogParser::Only = new (std::nothrow) LogParser();
+ if(! LogParser::Only)
+ throw LoggingException(LoggingException::RESOURCE_ALLOCATION_FAILURE);
+ }
+
+ return LogParser::Only;
+}
+
+
+void LogParser::ParseSymbol(const char* LogFilename) throw (LoggingException)
+{
+ string linebuf;
+ SymbolGenerator* symgen = SymbolGenerator::GetInstance();
+ symgen->SetSymbolFileName(string(LogFilename));
+
+ ifstream logfd(LogFilename);
+ if(logfd.is_open())
+ {
+ while(! logfd.eof())
+ {
+ getline(logfd, linebuf);
+ if(linebuf.compare(0,4,"File") == 0)
+ {
+ if(linebuf.find("size:", 4) != string::npos)
+ {
+ size_t startpos = linebuf.find('\'') ;
+ size_t endpos = linebuf.rfind('\'');
+ if((startpos!=string::npos) && (endpos!=string::npos))
+ {
+ symgen->AddFile(linebuf.substr(startpos+1,endpos-startpos-1), false);
+ }
+ }
+ }
+ else if(linebuf.compare(0,26,"Compressed executable File") == 0)
+ {
+ if(linebuf.find("size:", 26) != string::npos)
+ {
+ size_t startpos = linebuf.find('\'') ;
+ size_t endpos = linebuf.rfind('\'');
+ if((startpos!=string::npos) && (endpos!=string::npos))
+ {
+ symgen->AddFile(linebuf.substr(startpos+1,endpos-startpos-1), true);
+ }
+ }
+ }
+ }
+ symgen->SetFinished();
+ symgen->Release();
+ }
+ else
+ {
+ throw LoggingException(LoggingException::INVALID_LOG_FILENAME);
+ }
+
+ return;
+}
+
+
+void LogParser::Cleanup(void)
+{
+ return;
+}
+
+
+LogParser::LogParser(void)
+{
+ return;
+}
--- a/imgtools/romtools/rofsbuild/symbolgenerator.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/symbolgenerator.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -1,3 +1,21 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
+#include <vector>
#include <boost/regex.hpp>
#define MAX_LINE 65535
#include "symbolgenerator.h"
@@ -8,6 +26,7 @@
#else
#define PATH_SEPARATOR '\\'
#endif
+extern TInt gThreadNum;
boost::mutex SymbolGenerator::iMutexSingleton;
SymbolGenerator* SymbolGenerator::iInst = NULL;
@@ -20,6 +39,9 @@
return iInst;
}
void SymbolGenerator::Release() {
+ if(iInst != NULL) {
+ iInst->join();
+ }
iMutexSingleton.lock();
if(iInst != NULL) {
delete iInst;
@@ -40,216 +62,71 @@
iMutex.unlock();
iCond.notify_all();
}
-void SymbolGenerator::ProcessExecutable( const string& fileName ){
- char str[MAX_LINE];
- string outString;
- outString = "\nFrom ";
- outString += fileName + "\n\n";
- iSymFile.write(outString.c_str(),outString.length());
- string mapFile2 = fileName+".map";
- size_t dot = fileName.rfind('.');
- string mapFile = fileName.substr(0,dot)+".map";
- ifstream fMap;
- fMap.open(mapFile2.c_str());
- if(!fMap.is_open()) {
- fMap.open(mapFile.c_str());
- }
+void SymbolGenerator::SetFinished()
+{
- if(!fMap.is_open()) {
- printf("%s\nWarning: Can't open \"%s\" or \"%s\"\n",fileName.c_str(),mapFile2.c_str(),mapFile.c_str());
- int binSize = GetSizeFromBinFile(fileName);
- memset(str,0,sizeof(str));
- sprintf(str,"%04x", binSize);
- outString = "00000000 ";
- outString += str;
- outString += " ";
- outString += fileName.substr(fileName.rfind(PATH_SEPARATOR)+1)+"\n";
- iSymFile.write(outString.c_str(),outString.length());
+ iFinished = true;
+ iCond.notify_all();
}
- else {
- if(!fMap.good()) fMap.clear();
- boost::regex regARMV5("ARMV5", boost::regex::icase);
- boost::regex regGCCEoARMV4("(GCCE|ARMV4)", boost::regex::icase);
- boost::cmatch what;
- if(regex_search(fileName, what, regARMV5)) {
- ProcessArmv5File(fileName, fMap);
- }
- else if(regex_search(fileName, what, regGCCEoARMV4)) {
- ProcessGcceOrArm4File(fileName, fMap);
- }
- else {
- printf("\nWarning: cannot determine linker type used to create %s\n",fileName.c_str());
- outString = "00000000 0000 ";
- outString += fileName.substr(fileName.rfind(PATH_SEPARATOR)+1)+"\n";
- iSymFile.write(outString.c_str(),outString.length());
+TPlacedEntry SymbolGenerator::GetNextPlacedEntry()
+{
+ TPlacedEntry pe("", false);
+ if(1)
+ {
+ boost::mutex::scoped_lock lock(iMutex);
+ while(!iFinished && iQueueFiles.empty())
+ iCond.wait(lock);
+ if(!iQueueFiles.empty())
+ {
+ pe = iQueueFiles.front();
+ iQueueFiles.pop();
}
}
-}
-void SymbolGenerator::ProcessDatafile( const string& fileName ){
- string line = "\nFrom "+fileName+"\n\n00000000 0000 "+fileName.substr(fileName.rfind(PATH_SEPARATOR)+1)+"\n";
- iSymFile.write(line.c_str(),line.length());
+ return pe;
}
-void SymbolGenerator::ProcessArmv5File( const string& fileName, ifstream& aMap ){
- aMap.seekg (0, ios::beg);
- char str[MAX_LINE];
- string outString;
- aMap.getline(str,MAX_LINE);
- boost::cmatch what;
- boost::regex reg("^ARM Linker");
- if(!regex_search(str, what, reg)) {
- printf("\nWarning: expecting %s to be generated by ARM linker\n", fileName.c_str());
- outString = "00000000 0000 "+fileName.substr(fileName.rfind(PATH_SEPARATOR)+1)+"\n";
- iSymFile.write(outString.c_str(),outString.length());
- }
- reg.assign("Global Symbols");
- while(aMap.getline(str,MAX_LINE)) {
- if(regex_search(str, what, reg)) {
- break;
- }
+void SymbolGenerator::thrd_func(){
+ boost::thread_group threads;
+ SymbolWorker worker;
+ for(int i=0; i < gThreadNum; i++)
+ {
+ threads.create_thread(worker);
}
-
- reg.assign("^\\s*(.+)\\s*0x(\\S+)\\s+[^\\d]*(\\d+)\\s+(.*)$");
- string sSym,sTmp,sSection;
- unsigned int addr,size,baseOffset = 0;
- map<unsigned int,string> syms;
- char symString[MAX_LINE];
- while(aMap.getline(str,MAX_LINE)) {
- if(regex_search(str, what, reg)) {
- sSym.assign(what[1].first,what[1].second-what[1].first);
- sTmp.assign(what[2].first,what[2].second-what[2].first);
- addr = strtol(sTmp.c_str(), NULL, 16);
- sTmp.assign(what[3].first,what[3].second-what[3].first);
- size = strtol(sTmp.c_str(), NULL, 10);
- sSection.assign(what[4].first,what[4].second-what[4].first);
- if(sSection.find("(StubCode)") != string::npos)
- size = 8;
- if(addr > 0) {
- memset(symString,0,sizeof(symString));
- sprintf(symString,"%04x ",size);
- outString = symString;
- outString += sSym+" ";
- outString += sSection;
- if(baseOffset == 0)
- baseOffset = addr;
- unsigned int k = addr - baseOffset;
- if( (syms.find(k) == syms.end()) || size != 0)
- syms[k] = outString;
+ threads.join_all();
+ }
+SymbolGenerator::SymbolGenerator() : boost::thread(thrd_func),iFinished(false) {
+ }
+SymbolGenerator::~SymbolGenerator(){
+ if(joinable())
+ join();
+ iSymFile.flush();
+ iSymFile.close();
}
- // end of addr>0
- }
+SymbolWorker::SymbolWorker()
+{
// end of regex_search
}
-
- map<unsigned int,string>::iterator it;
- for(it = syms.begin(); it != syms.end(); it++) {
- memset(str,0,sizeof(str));
- sprintf(str,"%08x",it->first);
- outString = str;
- outString += " ";
- outString += it->second+"\n";
- iSymFile.write(outString.c_str(),outString.length());
- }
-}
-void SymbolGenerator::ProcessGcceOrArm4File( const string& fileName, ifstream& aMap ){
- aMap.seekg (0, ios_base::beg);
- char str[MAX_LINE];
- aMap.getline(str,MAX_LINE);
- boost::cmatch what;
- boost::regex reg("^\\.text\\s+");
- while(aMap.getline(str,MAX_LINE)) {
- if(regex_search(str, what, reg)) {
- break;
- }
- }
-
- reg.assign("^\\.text\\s+(\\w+)\\s+\\w+");
- if(!regex_search(str, what, reg)) {
- printf("ERROR: Can't get .text section info for \"%s\"\n",fileName.c_str());
+SymbolWorker::~SymbolWorker()
+{
}
- else {
- string sTmp, sLibFile;
- sTmp.assign(what[1].first,what[1].second-what[1].first);
- unsigned int imgText = strtol(sTmp.c_str(), NULL, 16);
-
- reg.assign("^LONG 0x.*", boost::regex::icase);
- boost::cmatch what1;
- boost::regex reg1("^\\s(\\.text)?\\s+(0x\\w+)\\s+(0x\\w+)\\s+(.*)$", boost::regex::icase);
- boost::regex reg2("^\\s+(\\w+)\\s\\s+([a-zA-Z_].+)", boost::regex::icase);
- boost::regex reg3(".*lib\\(.*d\\d*s_?\\d{5}.o\\)$", boost::regex::icase);
-
- map<unsigned int,string> syms;
- unsigned int addr, len, stubhex;
+void SymbolWorker::operator()()
+{
+ SymbolProcessUnit* aSymbolProcessUnit = new CommenSymbolProcessUnit();
+ SymbolGenerator* symbolgenerator = SymbolGenerator::GetInstance();
- while(aMap.getline(str,MAX_LINE)) {
- if(strlen(str) == 0)
+ while(1)
+ {
+ if(symbolgenerator->HasFinished() && symbolgenerator->IsEmpty())
+ {
+
break;
- else if(regex_search(str, what, reg1)) {
- sLibFile.assign(what[4].first,what[4].second-what[4].first);
- if(!regex_search(sLibFile, what1, reg)) {
- sTmp.assign(what[2].first,what[2].second-what[2].first);
- addr = strtol(sTmp.c_str(), NULL, 16);
- sTmp.assign(what[3].first,what[3].second-what[3].first);
- len = strtol(sTmp.c_str(), NULL, 16);
- syms[addr+len] = "";
- if(regex_search(sLibFile, what, reg3)) {
- stubhex = addr;
}
- }
- }
- else if(regex_search(str, what, reg2)) {
- sTmp.assign(what[1].first,what[1].second-what[1].first);
- addr = strtol(sTmp.c_str(), NULL, 16);
- sTmp.assign(what[2].first,what[2].second-what[2].first);
- syms[addr] = (addr == stubhex)? ("stub "+sTmp) : sTmp;
- }
- }
+
+
+
- map<unsigned int,string>::iterator it = syms.begin();
- map<unsigned int,string>::iterator itp = it++;
- string outString;
- for(; it != syms.end(); itp = it++) {
- if(itp->second != "") {
- memset(str,0,sizeof(str));
- sprintf(str,"%08x %04x ",(itp->first-imgText), (it->first-itp->first));
- outString = str;
- outString += it->second+"\n";
- iSymFile.write(outString.c_str(),outString.length());
- }
- }
- }
-}
-int SymbolGenerator::GetSizeFromBinFile( const string& fileName ){
- TInt ret = 0;
- ifstream aIf(fileName.c_str(), ios_base::binary);
- if( !aIf.is_open() ) {
- printf("Warning: Cannot open file \n");
- }
- else {
- E32ImageFile e32Image;
- TUint32 aSz;
+ TPlacedEntry pe = symbolgenerator->GetNextPlacedEntry();
- aIf.seekg(0,ios_base::end);
- aSz = aIf.tellg();
-
- e32Image.Adjust(aSz);
- e32Image.iFileSize = aSz;
-
- aIf.seekg(0,ios_base::beg);
- aIf >> e32Image;
- ret = e32Image.iOrigHdr->iCodeSize;
- }
- return ret;
-}
-void SymbolGenerator::thrd_func(){
- SymbolGenerator* me = GetInstance();
-
- TPlacedEntry pe("",false);
- while(1) {
- if(1) {
//scope the code block with if(1) for lock
- boost::mutex::scoped_lock lock(me->iMutex);
- while(me->iQueueFiles.empty())
- me->iCond.wait(lock);
/*
if(me->iQueueFiles.empty()) {
boost::this_thread::sleep(boost::posix_time::milliseconds(10));
@@ -257,23 +134,17 @@
}
*/
- pe = me->iQueueFiles.front();
- me->iQueueFiles.pop();
- }
if(pe.iFileName == "")
- break;
+ continue;
else if(pe.iExecutable)
- me->ProcessExecutable(pe.iFileName);
+ aSymbolProcessUnit->ProcessExecutableFile(pe.iFileName);
else
- me->ProcessDatafile(pe.iFileName);
- }
+ aSymbolProcessUnit->ProcessDataFile(pe.iFileName);
+ symbolgenerator->LockOutput();
+ aSymbolProcessUnit->FlushStdOut(cout);
+ aSymbolProcessUnit->FlushSymbolContent(symbolgenerator->GetOutputFileStream());
+ symbolgenerator->UnlockOutput();
}
-SymbolGenerator::SymbolGenerator() : boost::thread(thrd_func) {
+ delete aSymbolProcessUnit;
}
-SymbolGenerator::~SymbolGenerator(){
- if(joinable())
- join();
- iSymFile.flush();
- iSymFile.close();
-}
--- a/imgtools/romtools/rofsbuild/symbolgenerator.h Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rofsbuild/symbolgenerator.h Tue Oct 26 11:12:31 2010 +0800
@@ -1,3 +1,20 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
#ifndef __SYMBOLGENERATOR_H__
#define __SYMBOLGENERATOR_H__
#include <queue>
@@ -6,6 +23,7 @@
using namespace std;
#include <boost/thread/thread.hpp>
#include <boost/thread/condition.hpp>
+#include "symbolprocessunit.h"
struct TPlacedEntry{
@@ -22,22 +40,33 @@
static void Release();
void SetSymbolFileName( const string& fileName );
void AddFile( const string& fileName, bool isExecutable );
+ bool HasFinished() { return iFinished; }
+ void SetFinished();
+ bool IsEmpty() { return iQueueFiles.empty(); }
+ void LockOutput() { iOutputMutex.lock(); }
+ void UnlockOutput() { iOutputMutex.unlock(); }
+ TPlacedEntry GetNextPlacedEntry();
+ ofstream& GetOutputFileStream() { return iSymFile; };
private:
SymbolGenerator();
~SymbolGenerator();
- void ProcessExecutable( const string& fileName );
- void ProcessDatafile( const string& fileName );
- void ProcessArmv5File( const string& fileName, ifstream& aMap );
- void ProcessGcceOrArm4File( const string& fileName, ifstream& aMap );
- int GetSizeFromBinFile( const string& fileName );
static void thrd_func();
queue<TPlacedEntry> iQueueFiles;
boost::mutex iMutex;
+ boost::mutex iOutputMutex;
static boost::mutex iMutexSingleton;
static SymbolGenerator* iInst;
boost::condition_variable iCond;
+ bool iFinished;
ofstream iSymFile;
};
+class SymbolWorker{
+public:
+ SymbolWorker();
+ ~SymbolWorker();
+ void operator()();
+private:
+};
#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/rofsbuild/symbolprocessunit.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,258 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+#include <boost/regex.hpp>
+#include "symbolprocessunit.h"
+#include "e32image.h"
+#define MAX_LINE 65535
+
+#if defined(__LINUX__)
+#define PATH_SEPARATOR '/'
+#else
+#define PATH_SEPARATOR '\\'
+#endif
+
+void CommenSymbolProcessUnit::ProcessExecutableFile(const string& aFile)
+{
+ ResetContentLog();
+ char str[MAX_LINE];
+ string outString;
+ outString = "\nFrom ";
+ outString += aFile + "\n\n";
+ iSymbolContentLog.push_back(outString);
+ string mapFile2 = aFile+".map";
+ size_t dot = aFile.rfind('.');
+ string mapFile = aFile.substr(0,dot)+".map";
+ ifstream fMap;
+ fMap.open(mapFile2.c_str());
+ if(!fMap.is_open()) {
+ fMap.open(mapFile.c_str());
+ }
+
+ if(!fMap.is_open()) {
+ sprintf(str, "%s\nWarning: Can't open \"%s\" or \"%s\"\n",aFile.c_str(),mapFile2.c_str(),mapFile.c_str());
+ iStdoutLog.push_back(str);
+ int binSize = GetSizeFromBinFile(aFile);
+ memset(str,0,sizeof(str));
+ sprintf(str,"%04x", binSize);
+ outString = "00000000 ";
+ outString += str;
+ outString += " ";
+ outString += aFile.substr(aFile.rfind(PATH_SEPARATOR)+1)+"\n";
+ iSymbolContentLog.push_back(outString);
+ }
+ else {
+ if(!fMap.good()) fMap.clear();
+ boost::regex regARMV5("ARMV5", boost::regex::icase);
+ boost::regex regGCCEoARMV4("(GCCE|ARMV4)", boost::regex::icase);
+ boost::cmatch what;
+ if(regex_search(aFile, what, regARMV5)) {
+ ProcessArmv5File(aFile, fMap);
+ }
+ else if(regex_search(aFile, what, regGCCEoARMV4)) {
+ ProcessGcceOrArm4File(aFile, fMap);
+ }
+ else {
+ sprintf(str, "\nWarning: cannot determine linker type used to create %s\n",aFile.c_str());
+ iStdoutLog.push_back(str);
+ outString = "00000000 0000 ";
+ outString += aFile.substr(aFile.rfind(PATH_SEPARATOR)+1)+"\n";
+ iSymbolContentLog.push_back(outString);
+ }
+ }
+}
+void CommenSymbolProcessUnit::ProcessDataFile(const string& aFile)
+{
+ ResetContentLog();
+ string line = "\nFrom "+aFile+"\n\n00000000 0000 "+aFile.substr(aFile.rfind(PATH_SEPARATOR)+1)+"\n";
+ iSymbolContentLog.push_back(line);
+}
+void CommenSymbolProcessUnit::FlushStdOut(ostream& aOut)
+{
+ for(int i = 0; i < (int) iStdoutLog.size(); i++)
+ {
+ aOut << iStdoutLog[i];
+ }
+}
+void CommenSymbolProcessUnit::FlushSymbolContent(ostream &aOut)
+{
+ for(int i = 0; i < (int) iSymbolContentLog.size(); i++)
+ {
+ aOut << iSymbolContentLog[i];
+ }
+}
+void CommenSymbolProcessUnit::ResetContentLog()
+{
+ iStdoutLog.clear();
+ iSymbolContentLog.clear();
+}
+void CommenSymbolProcessUnit::ProcessArmv5File( const string& fileName, ifstream& aMap ){
+ aMap.seekg (0, ios::beg);
+ char str[MAX_LINE];
+ char outbuffer[MAX_LINE];
+ string outString;
+ aMap.getline(str,MAX_LINE);
+ boost::cmatch what;
+ boost::regex reg("^ARM Linker");
+ if(!regex_search(str, what, reg)) {
+ sprintf(outbuffer, "\nWarning: expecting %s to be generated by ARM linker\n", fileName.c_str());
+ iStdoutLog.push_back(outbuffer);
+ outString = "00000000 0000 "+fileName.substr(fileName.rfind(PATH_SEPARATOR)+1)+"\n";
+ iSymbolContentLog.push_back(outString);
+ }
+ reg.assign("Global Symbols");
+ while(aMap.getline(str,MAX_LINE)) {
+ if(regex_search(str, what, reg)) {
+ break;
+ }
+ }
+
+ reg.assign("^\\s*(.+)\\s*0x(\\S+)\\s+[^\\d]*(\\d+)\\s+(.*)$");
+ string sSym,sTmp,sSection;
+ unsigned int addr,size,baseOffset = 0;
+ map<unsigned int,string> syms;
+ char symString[MAX_LINE];
+ while(aMap.getline(str,MAX_LINE)) {
+ if(regex_search(str, what, reg)) {
+ sSym.assign(what[1].first,what[1].second-what[1].first);
+ sTmp.assign(what[2].first,what[2].second-what[2].first);
+ addr = strtol(sTmp.c_str(), NULL, 16);
+ sTmp.assign(what[3].first,what[3].second-what[3].first);
+ size = strtol(sTmp.c_str(), NULL, 10);
+ sSection.assign(what[4].first,what[4].second-what[4].first);
+ if(sSection.find("(StubCode)") != string::npos)
+ size = 8;
+ if(addr > 0) {
+ memset(symString,0,sizeof(symString));
+ sprintf(symString,"%04x ",size);
+ outString = symString;
+ outString += sSym+" ";
+ outString += sSection;
+ if(baseOffset == 0)
+ baseOffset = addr;
+ unsigned int k = addr - baseOffset;
+ if( (syms.find(k) == syms.end()) || size != 0)
+ syms[k] = outString;
+ }
+ // end of addr>0
+ }
+ // end of regex_search
+ }
+
+ map<unsigned int,string>::iterator it;
+ for(it = syms.begin(); it != syms.end(); it++) {
+ memset(str,0,sizeof(str));
+ sprintf(str,"%08x",it->first);
+ outString = str;
+ outString += " ";
+ outString += it->second+"\n";
+ iSymbolContentLog.push_back(outString);
+ }
+}
+void CommenSymbolProcessUnit::ProcessGcceOrArm4File( const string& fileName, ifstream& aMap ){
+ aMap.seekg (0, ios_base::beg);
+ char str[MAX_LINE];
+ char outbuffer[MAX_LINE];
+ aMap.getline(str,MAX_LINE);
+ boost::cmatch what;
+ boost::regex reg("^\\.text\\s+");
+ while(aMap.getline(str,MAX_LINE)) {
+ if(regex_search(str, what, reg)) {
+ break;
+ }
+ }
+
+ reg.assign("^\\.text\\s+(\\w+)\\s+\\w+");
+ if(!regex_search(str, what, reg)) {
+ sprintf(outbuffer, "ERROR: Can't get .text section info for \"%s\"\n",fileName.c_str());
+ iStdoutLog.push_back(outbuffer);
+ }
+ else {
+ string sTmp, sLibFile;
+ sTmp.assign(what[1].first,what[1].second-what[1].first);
+ unsigned int imgText = strtol(sTmp.c_str(), NULL, 16);
+
+ reg.assign("^LONG 0x.*", boost::regex::icase);
+ boost::cmatch what1;
+ boost::regex reg1("^\\s(\\.text)?\\s+(0x\\w+)\\s+(0x\\w+)\\s+(.*)$", boost::regex::icase);
+ boost::regex reg2("^\\s+(\\w+)\\s\\s+([a-zA-Z_].+)", boost::regex::icase);
+ boost::regex reg3(".*lib\\(.*d\\d*s_?\\d{5}.o\\)$", boost::regex::icase);
+
+ map<unsigned int,string> syms;
+ unsigned int addr, len, stubhex;
+
+ while(aMap.getline(str,MAX_LINE)) {
+ if(strlen(str) == 0)
+ break;
+ else if(regex_search(str, what, reg1)) {
+ sLibFile.assign(what[4].first,what[4].second-what[4].first);
+ if(!regex_search(sLibFile, what1, reg)) {
+ sTmp.assign(what[2].first,what[2].second-what[2].first);
+ addr = strtol(sTmp.c_str(), NULL, 16);
+ sTmp.assign(what[3].first,what[3].second-what[3].first);
+ len = strtol(sTmp.c_str(), NULL, 16);
+ syms[addr+len] = "";
+ if(regex_search(sLibFile, what, reg3)) {
+ stubhex = addr;
+ }
+ }
+ }
+ else if(regex_search(str, what, reg2)) {
+ sTmp.assign(what[1].first,what[1].second-what[1].first);
+ addr = strtol(sTmp.c_str(), NULL, 16);
+ sTmp.assign(what[2].first,what[2].second-what[2].first);
+ syms[addr] = (addr == stubhex)? ("stub "+sTmp) : sTmp;
+ }
+ }
+
+ map<unsigned int,string>::iterator it = syms.begin();
+ map<unsigned int,string>::iterator itp = it++;
+ string outString;
+ for(; it != syms.end(); itp = it++) {
+ if(itp->second != "") {
+ memset(str,0,sizeof(str));
+ sprintf(str,"%08x %04x ",(itp->first-imgText), (it->first-itp->first));
+ outString = str;
+ outString += it->second+"\n";
+ iSymbolContentLog.push_back(outString);
+ }
+ }
+ }
+}
+int CommenSymbolProcessUnit::GetSizeFromBinFile( const string& fileName ){
+ TInt ret = 0;
+ char outbuffer[MAX_LINE];
+ ifstream aIf(fileName.c_str(), ios_base::binary);
+ if( !aIf.is_open() ) {
+ printf(outbuffer, "Warning: Cannot open file \n");
+ iStdoutLog.push_back(outbuffer);
+ }
+ else {
+ E32ImageFile e32Image;
+ TUint32 aSz;
+
+ aIf.seekg(0,ios_base::end);
+ aSz = aIf.tellg();
+
+ e32Image.Adjust(aSz);
+ e32Image.iFileSize = aSz;
+
+ aIf.seekg(0,ios_base::beg);
+ aIf >> e32Image;
+ ret = e32Image.iOrigHdr->iCodeSize;
+ }
+ return ret;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imgtools/romtools/rofsbuild/symbolprocessunit.h Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+#ifndef __SYMBOLPROCESSUNIT_H__
+#define __SYMBOLPROCESSUNIT_H__
+#include <vector>
+#include <string>
+#include <iostream>
+#include <fstream>
+using namespace std;
+
+
+typedef vector<string> stringlist;
+
+class SymbolProcessUnit
+{
+public:
+ virtual void ProcessExecutableFile(const string& aFile) = 0;
+ virtual void ProcessDataFile(const string& afile) = 0;
+ virtual void FlushStdOut(ostream& aOut) = 0;
+ virtual void FlushSymbolContent(ostream &aOut) = 0;
+ virtual void ResetContentLog() = 0;
+ virtual ~SymbolProcessUnit() {}
+};
+
+class CommenSymbolProcessUnit : public SymbolProcessUnit
+{
+public:
+ virtual void ProcessExecutableFile(const string& aFile);
+ virtual void ProcessDataFile(const string& afile);
+ virtual void FlushStdOut(ostream& aOut);
+ virtual void FlushSymbolContent(ostream &aOut);
+ virtual void ResetContentLog();
+private:
+ void ProcessArmv5File( const string& fileName, ifstream& aMap );
+ void ProcessGcceOrArm4File( const string& fileName, ifstream& aMap );
+ int GetSizeFromBinFile( const string& fileName );
+private:
+ stringlist iStdoutLog;
+ stringlist iSymbolContentLog;
+};
+#endif
--- a/imgtools/romtools/rombuild/rombuild.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rombuild/rombuild.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -33,7 +33,7 @@
static const TInt RombuildMajorVersion=2;
static const TInt RombuildMinorVersion=18;
-static const TInt RombuildPatchVersion=3;
+static const TInt RombuildPatchVersion=4;
static TBool SizeSummary=EFalse;
static TPrintType SizeWhere=EAlways;
static string compareROMName = "";
--- a/imgtools/romtools/rombuild/symbolgenerator.cpp Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rombuild/symbolgenerator.cpp Tue Oct 26 11:12:31 2010 +0800
@@ -1,3 +1,20 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
#include <e32rom.h>
#include <algorithm>
#include "symbolgenerator.h"
--- a/imgtools/romtools/rombuild/symbolgenerator.h Mon Oct 25 11:53:21 2010 +0800
+++ b/imgtools/romtools/rombuild/symbolgenerator.h Tue Oct 26 11:12:31 2010 +0800
@@ -1,3 +1,20 @@
+/*
+* Copyright (c) 2010 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:
+*
+*/
+
#ifndef __SYMBOLSCREATER_H__
#define __SYMBOLSCREATER_H__
#include <queue>
--- a/sbsv1/abld/group/bld.inf Mon Oct 25 11:53:21 2010 +0800
+++ b/sbsv1/abld/group/bld.inf Tue Oct 26 11:12:31 2010 +0800
@@ -65,6 +65,7 @@
../platform/gccev6.bsf /epoc32/tools/gccev6.bsf
../platform/armv6_abiv1.bsf /epoc32/tools/armv6_abiv1.bsf
../platform/armv7.bsf /epoc32/tools/armv7.bsf
+../platform/armv7smp.bsf /epoc32/tools/armv7smp.bsf
#ifdef SBSV2
#ifndef TOOLS2_LINUX
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sbsv1/abld/platform/armv7smp.bsf Tue Oct 26 11:12:31 2010 +0800
@@ -0,0 +1,27 @@
+#<bsf>#
+# Copyright (c) 2007-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:
+# This BSF file is to support building for ARMV6 architecture. The options specified here are same as for ARMV5 except
+# the --cpu 6 option in INVARIANT_OPTIONS. This specifies to compiler to compile for generic ARMV6. If any other
+# specific options are required such as --cpu ARM1136J-S, etc, then it can be done via a different BSF file
+# NOTE: The options specified here for the compiler disable the unaligned memory access.
+
+CUSTOMIZES ARMV5
+
+INVARIANT_OPTIONS --cpu=7-A $(ENUM_OPTION) $(OWN_LIBRARY_OPTION) $(FPMODE_OPTION) $(EXPORT_VTBL_OPTION) $(VFE_OPTION) $(AAPCS_OPTION) $(NO_UNALIGNED_ACCESS)
+
+# On ARMV7 we use DWARF 3 instead of DWARF 2.
+DEBUG_FORMAT $(DEBUG_FORMAT_DWARF3)
+
+SMP