diff -r fa7a3cc6effd -r 6d08f4a05d93 imgtools/romtools/rombuild/symbolgenerator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imgtools/romtools/rombuild/symbolgenerator.h Fri Jun 25 18:11:34 2010 +0800 @@ -0,0 +1,51 @@ +#ifndef __SYMBOLSCREATER_H__ +#define __SYMBOLSCREATER_H__ +#include +#include +#include +#include +#include + +using namespace std; + +#include +#include + +struct SymGenContext { + const char* iFileName ; + TUint32 iTotalSize ; + TUint32 iCodeAddress; + TUint32 iDataAddress; + TUint32 iDataBssLinearBase; + TInt iTextSize; + TInt iDataSize; + TInt iBssSize; + TInt iTotalDataSize; + TBool iExecutable ; +}; + +class SymbolGenerator { +public : + SymbolGenerator(const char* aSymbolFileName, int aMultiThreadsCount = 1); + ~SymbolGenerator(); + void AddEntry(const SymGenContext& aEntry); + void WaitThreads(); +private : + SymbolGenerator(); + SymbolGenerator& operator = (const SymbolGenerator& aRight); + static void ThreadFunc(SymbolGenerator* aInst); + bool ProcessEntry(const SymGenContext& aContext); + bool ProcessARMV5Map(ifstream& aStream, const SymGenContext& aContext); + bool ProcessGCCMap(ifstream& aStream, const SymGenContext& aContext); + bool ProcessX86Map(ifstream& aStream, const SymGenContext& aContext); + ofstream iOutput ; + boost::thread_group iThreads ; + boost::condition_variable iCond; + boost::mutex iQueueMutex; + boost::mutex iFileMutex ; + queue iEntries ; + vector iErrMsgs ; + +}; + +#endif //__ROMSYMBOLGENERATOR_H__