diff -r 818fe0ed324b -r df89378e9223 imgtools/romtools/readimage/src/rom_image_reader.cpp --- a/imgtools/romtools/readimage/src/rom_image_reader.cpp Thu Nov 18 16:02:32 2010 +0800 +++ b/imgtools/romtools/readimage/src/rom_image_reader.cpp Tue Nov 30 13:59:58 2010 +0800 @@ -568,12 +568,18 @@ DumpInHex("Stack size", aRomImgEntry->iStackSize) << endl; TDllRefTable *aRefTbl = NULL; - - if( aRomImgEntry->iDllRefTable ) { - TUint32 aOff = (TUint32)aRomImgEntry->iDllRefTable - iImageHeader->iRomHdr->iRomBase; - aRefTbl = (TDllRefTable*) ((char*)iImageHeader->iRomHdr + aOff); - TUint32 aVirtualAddr = (TUint32)aRefTbl->iEntry[0]; - DumpInHex("Dll ref table", aVirtualAddr) << endl; + + if( aRomImgEntry->iDllRefTable ) { + TUint32 aOff = (TUint32)aRomImgEntry->iDllRefTable - iImageHeader->iRomHdr->iRomBase; + if(static_cast(aOff) > 0) { + aRefTbl = (TDllRefTable*) (iRomLayoutData + aOff); + TUint32 aVirtualAddr = reinterpret_cast(aRefTbl->iEntry[0]); + DumpInHex("Dll ref table", aVirtualAddr) << endl; + + } + else { + DumpInHex("Error Dll ref table", 0) << endl; + } } DumpInHex("Export directory", aRomImgEntry->iExportDir) << endl; @@ -607,11 +613,13 @@ if(stricmp(iE32ImgFileName.c_str(), aEntry->Name()) == 0){ TUint aSectionOffset = aRomImgEntry->iCodeAddress - iImageHeader->iRomHdr->iRomBase; TUint* aCodeSection = (TUint*)((char*)iImageHeader->iRomHdr + aSectionOffset); + //TUint* aCodeSection = (TUint*)(iRomLayoutData + aSectionOffset); *out << "\nCode (Size=0x" << hex << aRomImgEntry->iCodeSize << ")" << endl; DumpData(aCodeSection, aRomImgEntry->iCodeSize); aSectionOffset = aRomImgEntry->iDataAddress - iImageHeader->iRomHdr->iRomBase; TUint* aDataSection = (TUint*)((char*)iImageHeader->iRomHdr + aSectionOffset); + //TUint* aDataSection = (TUint*)(iRomLayoutData + aSectionOffset); if( aRomImgEntry->iDataSize){ *out << "\nData (Size=0x" << hex << aRomImgEntry->iDataSize << ")" << endl; DumpData(aDataSection, aRomImgEntry->iDataSize);