author | kelvzhu |
Tue, 23 Nov 2010 10:47:23 +0800 | |
changeset 702 | 341ab25bc4ef |
parent 695 | 46ca13b54f56 |
child 714 | e5a58c351011 |
permissions | -rw-r--r-- |
695
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
1 |
/* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
2 |
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
3 |
* All rights reserved. |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
4 |
* This component and the accompanying materials are made available |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
5 |
* under the terms of the License "Eclipse Public License v1.0" |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
6 |
* which accompanies this distribution, and is available |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html". |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
8 |
* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
9 |
* Initial Contributors: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
10 |
* Nokia Corporation - initial contribution. |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
11 |
* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
12 |
* Contributors: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
13 |
* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
14 |
* Description: |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
15 |
* |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
16 |
*/ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
17 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
18 |
#include <vector> |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
19 |
#include <boost/regex.hpp> |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
20 |
#define MAX_LINE 65535 |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
21 |
#include "symbolgenerator.h" |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
22 |
#include "e32image.h" |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
23 |
#include "h_utl.h" |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
24 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
25 |
#if defined(__LINUX__) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
26 |
#define PATH_SEPARATOR '/' |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
27 |
#else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
28 |
#define PATH_SEPARATOR '\\' |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
29 |
#endif |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
30 |
extern TInt gThreadNum; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
31 |
extern TBool gGenBsymbols; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
32 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
33 |
boost::mutex SymbolGenerator::iMutexSingleton; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
34 |
SymbolGenerator* SymbolGenerator::iInst = NULL; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
35 |
SymbolGenerator* SymbolGenerator::GetInstance(){ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
36 |
iMutexSingleton.lock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
37 |
if(iInst == NULL) { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
38 |
iInst = new SymbolGenerator(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
39 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
40 |
iMutexSingleton.unlock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
41 |
return iInst; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
42 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
43 |
void SymbolGenerator::Release() { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
44 |
if(iInst != NULL) { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
45 |
iInst->join(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
46 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
47 |
iMutexSingleton.lock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
48 |
if(iInst != NULL) { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
49 |
delete iInst; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
50 |
iInst = NULL; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
51 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
52 |
iMutexSingleton.unlock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
53 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
54 |
void SymbolGenerator::SetSymbolFileName( const string& fileName ){ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
55 |
if(iSymFile.is_open()) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
56 |
iSymFile.close(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
57 |
if(gGenBsymbols) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
58 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
59 |
string s = fileName.substr(0,fileName.rfind('.'))+".bsym"; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
60 |
if(iImageType == ERofsImage) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
61 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
62 |
printf("* Writing %s - ROFS BSymbol file\n", s.c_str()); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
63 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
64 |
else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
65 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
66 |
printf("* Writing %s - ROM BSymbol file\n", s.c_str()); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
67 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
68 |
iSymFile.open(s.c_str(), ios_base::binary); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
69 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
70 |
else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
71 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
72 |
string s = fileName.substr(0,fileName.rfind('.'))+".symbol"; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
73 |
if(iImageType == ERofsImage) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
74 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
75 |
printf("* Writing %s - ROFS Symbol file\n", s.c_str()); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
76 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
77 |
else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
78 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
79 |
printf("* Writing %s - ROM Symbol file\n", s.c_str()); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
80 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
81 |
iSymFile.open(s.c_str()); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
82 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
83 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
84 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
85 |
void SymbolGenerator::AddFile( const string& fileName, bool isExecutable ){ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
86 |
iMutex.lock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
87 |
iQueueFiles.push(TPlacedEntry(fileName, "" , isExecutable)); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
88 |
iMutex.unlock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
89 |
iCond.notify_all(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
90 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
91 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
92 |
void SymbolGenerator::AddEntry(const TPlacedEntry& aEntry) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
93 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
94 |
iMutex.lock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
95 |
iQueueFiles.push(aEntry); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
96 |
iMutex.unlock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
97 |
iCond.notify_all(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
98 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
99 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
100 |
void SymbolGenerator::SetFinished() |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
101 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
102 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
103 |
iFinished = true; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
104 |
iCond.notify_all(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
105 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
106 |
TPlacedEntry SymbolGenerator::GetNextPlacedEntry() |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
107 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
108 |
TPlacedEntry pe("", "", false); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
109 |
if(1) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
110 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
111 |
boost::mutex::scoped_lock lock(iMutex); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
112 |
while(!iFinished && iQueueFiles.empty()) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
113 |
iCond.wait(lock); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
114 |
if(!iQueueFiles.empty()) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
115 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
116 |
pe = iQueueFiles.front(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
117 |
iQueueFiles.pop(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
118 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
119 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
120 |
return pe; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
121 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
122 |
void SymbolGenerator::thrd_func(){ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
123 |
boost::thread_group threads; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
124 |
SymbolWorker worker; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
125 |
for(int i=0; i < gThreadNum; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
126 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
127 |
threads.create_thread(worker); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
128 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
129 |
threads.join_all(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
130 |
SymbolGenerator::GetInstance()->FlushSymbolFileContent(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
131 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
132 |
SymbolGenerator::SymbolGenerator() : boost::thread(thrd_func),iFinished(false) { |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
133 |
if(gGenBsymbols) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
134 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
135 |
iSymbolType = ESymBsym; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
136 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
137 |
else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
138 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
139 |
iSymbolType = ESymCommon; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
140 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
141 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
142 |
SymbolGenerator::~SymbolGenerator(){ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
143 |
if(joinable()) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
144 |
join(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
145 |
iSymFile.flush(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
146 |
iSymFile.close(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
147 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
148 |
void SymbolGenerator::FlushSymbolFileContent() |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
149 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
150 |
if(iSymbolType == ESymCommon) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
151 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
152 |
return; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
153 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
154 |
TBsymHeader tmpBsymHeader; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
155 |
memset(&tmpBsymHeader, 0, sizeof(tmpBsymHeader)); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
156 |
tmpBsymHeader.iMagic[0] = 'B'; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
157 |
tmpBsymHeader.iMagic[1] = 'S'; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
158 |
tmpBsymHeader.iMagic[2] = 'Y'; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
159 |
tmpBsymHeader.iMagic[3] = 'M'; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
160 |
tmpBsymHeader.iMajorVer[0] = BsymMajorVer >> 8; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
161 |
tmpBsymHeader.iMajorVer[1] = BsymMajorVer & 0xff; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
162 |
tmpBsymHeader.iMinorVer[0] = BsymMinorVer >> 8; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
163 |
tmpBsymHeader.iMinorVer[1] = BsymMinorVer & 0xff; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
164 |
if(ByteOrderUtil::IsLittleEndian()) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
165 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
166 |
tmpBsymHeader.iEndiannessFlag = 0; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
167 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
168 |
else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
169 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
170 |
tmpBsymHeader.iEndiannessFlag = 1; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
171 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
172 |
tmpBsymHeader.iCompressionFlag = 1; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
173 |
//count the space for TDbgUnitEntries and TSymbolEntries |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
174 |
int fileCount = iMapFileInfoSet.size(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
175 |
TUint32 sizeNeeded = fileCount * sizeof(TDbgUnitEntry); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
176 |
for(int i = 0; i < fileCount; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
177 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
178 |
sizeNeeded += iMapFileInfoSet[i].iSymbolPCEntrySet.size() * sizeof(TSymbolEntry); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
179 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
180 |
//write string to the temporary memory area |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
181 |
MemoryWriter mWriter; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
182 |
mWriter.SetOffset(sizeNeeded); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
183 |
mWriter.SetStringTableStart(sizeNeeded); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
184 |
mWriter.AddEmptyString(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
185 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
186 |
//first to prepare the file info entries TDbgUnitEntry |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
187 |
TUint32 startSymbolIndex = 0; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
188 |
for(int i = 0; i < fileCount; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
189 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
190 |
iMapFileInfoSet[i].iDbgUnitPCEntry.iDbgUnitEntry.iStartSymbolIndex = startSymbolIndex; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
191 |
iMapFileInfoSet[i].iDbgUnitPCEntry.iDbgUnitEntry.iPCNameOffset = mWriter.AddString(iMapFileInfoSet[i].iDbgUnitPCEntry.iPCName); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
192 |
iMapFileInfoSet[i].iDbgUnitPCEntry.iDbgUnitEntry.iDevNameOffset = mWriter.AddString(iMapFileInfoSet[i].iDbgUnitPCEntry.iDevName); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
193 |
startSymbolIndex += iMapFileInfoSet[i].iSymbolPCEntrySet.size(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
194 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
195 |
//second to layout the symbols unit for the mapfile |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
196 |
for(int i = 0; i < fileCount; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
197 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
198 |
int symbolcount = iMapFileInfoSet[i].iSymbolPCEntrySet.size(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
199 |
for(int j =0; j< symbolcount; j++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
200 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
201 |
iMapFileInfoSet[i].iSymbolPCEntrySet[j].iSymbolEntry.iScopeNameOffset = mWriter.AddScopeName(iMapFileInfoSet[i].iSymbolPCEntrySet[j].iScopeName); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
202 |
iMapFileInfoSet[i].iSymbolPCEntrySet[j].iSymbolEntry.iNameOffset = mWriter.AddString(iMapFileInfoSet[i].iSymbolPCEntrySet[j].iName); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
203 |
iMapFileInfoSet[i].iSymbolPCEntrySet[j].iSymbolEntry.iSecNameOffset = mWriter.AddString(iMapFileInfoSet[i].iSymbolPCEntrySet[j].iSecName); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
204 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
205 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
206 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
207 |
//write out the BSym file content |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
208 |
char* pstart = mWriter.GetDataPointer(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
209 |
//write out the map file info |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
210 |
int unitlen = sizeof(TDbgUnitEntry); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
211 |
for(int i = 0; i < fileCount; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
212 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
213 |
memcpy(pstart, &iMapFileInfoSet[i].iDbgUnitPCEntry.iDbgUnitEntry, unitlen); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
214 |
pstart += unitlen; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
215 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
216 |
//wirte out the symbol unit info |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
217 |
unitlen = sizeof(TSymbolEntry); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
218 |
for(int i = 0; i < fileCount; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
219 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
220 |
int symbolcount = iMapFileInfoSet[i].iSymbolPCEntrySet.size(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
221 |
for(int j =0; j < symbolcount; j++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
222 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
223 |
memcpy(pstart, &iMapFileInfoSet[i].iSymbolPCEntrySet[j].iSymbolEntry, unitlen); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
224 |
pstart += unitlen; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
225 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
226 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
227 |
//write out the memory out to the symbol file |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
228 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
229 |
int totalPages = (mWriter.GetOffset() + ( BSYM_PAGE_SIZE -1)) / 4096; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
230 |
TUint32 compressInfoLength = sizeof(TCompressedHeaderInfo) + sizeof(TPageInfo)*(totalPages -1); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
231 |
char* tmpBuffer = new char[compressInfoLength]; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
232 |
TCompressedHeaderInfo * pCompressedHeaderInfo = (TCompressedHeaderInfo *) tmpBuffer; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
233 |
pCompressedHeaderInfo->iPageSize = BSYM_PAGE_SIZE; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
234 |
pCompressedHeaderInfo->iTotalPageNumber = totalPages; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
235 |
TPageInfo* tmpPage = &pCompressedHeaderInfo->iPages[0]; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
236 |
for(int i = 0; i < totalPages; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
237 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
238 |
tmpPage->iPageStartOffset = i * BSYM_PAGE_SIZE; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
239 |
if(tmpPage->iPageStartOffset + BSYM_PAGE_SIZE < mWriter.GetOffset()) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
240 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
241 |
tmpPage->iPageDataSize = BSYM_PAGE_SIZE; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
242 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
243 |
else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
244 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
245 |
tmpPage->iPageDataSize = mWriter.GetOffset() - tmpPage->iPageStartOffset; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
246 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
247 |
tmpPage++; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
248 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
249 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
250 |
//prepare the TBsymHeader, TDbgUnitEntry and TSymbolEntry to the memory |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
251 |
tmpBsymHeader.iDbgUnitOffset = sizeof(TBsymHeader) + compressInfoLength; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
252 |
tmpBsymHeader.iDbgUnitCount = fileCount; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
253 |
tmpBsymHeader.iSymbolOffset = fileCount*sizeof(TDbgUnitEntry); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
254 |
tmpBsymHeader.iSymbolCount = startSymbolIndex; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
255 |
tmpBsymHeader.iStringTableOffset = mWriter.GetStringTableStart(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
256 |
tmpBsymHeader.iStringTableBytes = mWriter.GetOffset() - tmpBsymHeader.iStringTableOffset; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
257 |
tmpBsymHeader.iUncompressSize = mWriter.GetOffset(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
258 |
//start the compress threads |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
259 |
Print(EAlways, "Start compress for Bsymbol file\n"); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
260 |
PageCompressWorker compressWorker(pCompressedHeaderInfo, mWriter.GetDataPointer()); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
261 |
boost::thread_group threads; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
262 |
for(int i=0; i < gThreadNum; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
263 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
264 |
threads.create_thread(compressWorker); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
265 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
266 |
threads.join_all(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
267 |
Print(EAlways, "Complete compress for Bsymbol file\n"); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
268 |
//pack all the pages together |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
269 |
tmpPage = &pCompressedHeaderInfo->iPages[0]; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
270 |
TPageInfo* prePage = NULL; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
271 |
char* pchar = mWriter.GetDataPointer(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
272 |
for(int i=0; i < totalPages -1; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
273 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
274 |
prePage = tmpPage; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
275 |
tmpPage++; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
276 |
memcpy(pchar + prePage->iPageStartOffset + prePage->iPageDataSize, pchar + tmpPage->iPageStartOffset, tmpPage->iPageDataSize); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
277 |
tmpPage->iPageStartOffset = prePage->iPageStartOffset + prePage->iPageDataSize; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
278 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
279 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
280 |
tmpBsymHeader.iCompressedSize = tmpPage->iPageStartOffset + tmpPage->iPageDataSize; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
281 |
mWriter.SetOffset(tmpBsymHeader.iCompressedSize); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
282 |
tmpBsymHeader.iCompressInfoOffset = sizeof(TBsymHeader); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
283 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
284 |
iSymFile.write((char*)&tmpBsymHeader, sizeof(TBsymHeader)); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
285 |
iSymFile.write((char*)pCompressedHeaderInfo, compressInfoLength); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
286 |
iSymFile.write(mWriter.GetDataPointer(), mWriter.GetOffset()); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
287 |
delete[] tmpBuffer; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
288 |
for(int i = 0; i < fileCount; i++) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
289 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
290 |
iMapFileInfoSet[i].iSymbolPCEntrySet.clear(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
291 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
292 |
iMapFileInfoSet.clear(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
293 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
294 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
295 |
SymbolWorker::SymbolWorker() |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
296 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
297 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
298 |
SymbolWorker::~SymbolWorker() |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
299 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
300 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
301 |
void SymbolWorker::operator()() |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
302 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
303 |
SymbolProcessUnit* aSymbolProcessUnit; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
304 |
SymbolGenerator* symbolgenerator = SymbolGenerator::GetInstance(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
305 |
if(symbolgenerator->GetImageType() == ERomImage) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
306 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
307 |
aSymbolProcessUnit = new CommenRomSymbolProcessUnit(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
308 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
309 |
else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
310 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
311 |
if(gGenBsymbols) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
312 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
313 |
aSymbolProcessUnit = new BsymRofsSymbolProcessUnit(symbolgenerator); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
314 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
315 |
else |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
316 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
317 |
aSymbolProcessUnit = new CommenRofsSymbolProcessUnit(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
318 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
319 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
320 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
321 |
while(1) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
322 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
323 |
if(symbolgenerator->HasFinished() && symbolgenerator->IsEmpty()) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
324 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
325 |
break; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
326 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
327 |
TPlacedEntry pe = symbolgenerator->GetNextPlacedEntry(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
328 |
if(pe.iFileName.empty()) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
329 |
continue; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
330 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
331 |
aSymbolProcessUnit->ProcessEntry(pe); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
332 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
333 |
symbolgenerator->LockOutput(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
334 |
aSymbolProcessUnit->FlushStdOut(cout); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
335 |
aSymbolProcessUnit->FlushSymbolContent(symbolgenerator->GetOutputFileStream()); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
336 |
symbolgenerator->UnlockOutput(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
337 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
338 |
delete aSymbolProcessUnit; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
339 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
340 |
TCompressedHeaderInfo* PageCompressWorker::pHeaderInfo = NULL; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
341 |
int PageCompressWorker::currentPage = 0; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
342 |
boost::mutex PageCompressWorker::m_mutex; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
343 |
int PageCompressWorker::m_error = 0; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
344 |
char* PageCompressWorker::iChar = NULL; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
345 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
346 |
PageCompressWorker::PageCompressWorker(TCompressedHeaderInfo* aHeaderInfo, char* aChar) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
347 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
348 |
pHeaderInfo = aHeaderInfo; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
349 |
iChar = aChar; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
350 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
351 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
352 |
PageCompressWorker::~PageCompressWorker() {} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
353 |
void PageCompressWorker::operator()() |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
354 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
355 |
int tobecompress = 0; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
356 |
CBytePair bpe; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
357 |
while(1) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
358 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
359 |
m_mutex.lock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
360 |
tobecompress =currentPage; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
361 |
currentPage++; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
362 |
m_mutex.unlock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
363 |
if(tobecompress >= (int) pHeaderInfo->iTotalPageNumber) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
364 |
break; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
365 |
TPageInfo* current = &pHeaderInfo->iPages[0] + tobecompress; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
366 |
TUint8* in = (TUint8*)(iChar + current->iPageStartOffset); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
367 |
TUint8* out = in; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
368 |
TInt outSize = BytePairCompress(out, in, current->iPageDataSize, &bpe); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
369 |
if(outSize == KErrTooBig) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
370 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
371 |
outSize = BSYM_PAGE_SIZE; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
372 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
373 |
if(outSize < 0) |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
374 |
{ |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
375 |
m_mutex.lock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
376 |
m_error = -1; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
377 |
m_mutex.unlock(); |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
378 |
break; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
379 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
380 |
current->iPageDataSize = outSize; |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
381 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
382 |
|
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
383 |
} |
46ca13b54f56
features: bsym for rofsbuild and log input support for rombuild
marvin shi <marvin.shi@nokia.com>
parents:
diff
changeset
|
384 |