| 6275 | } |
| 6276 | |
| 6277 | void COFF::ProcessDebugInfo() |
| 6278 | { |
| 6279 | BP_ZONE("COFF::ProcessDebugInfo"); |
| 6280 | |
| 6281 | if ((!mCvTypeSectionData.IsEmpty()) && (!mCvCompileUnitData.IsEmpty())) |
| 6282 | { |
| 6283 | auto linkedModule = (COFF*)GetLinkedModule(); |
| 6284 | int startingTypeIdx = (int)linkedModule->mTypes.size(); |
| 6285 | |
| 6286 | InitCvTypes(); |
| 6287 | |
| 6288 | for (auto entry : mCvTypeSectionData) |
| 6289 | { |
| 6290 | uint8* data = entry.mData; |
| 6291 | GET_INTO(uint32, infoType); |
| 6292 | BF_ASSERT(infoType == CV_SIGNATURE_C13); |
| 6293 | |
| 6294 | CvInitStreamRaw(mCvTypeSectionReader, entry.mData + 4, entry.mSize - 4); |
| 6295 | ParseTypeData(mCvTypeSectionReader, 0); |
| 6296 | } |
| 6297 | |
| 6298 | FixTypes(startingTypeIdx); |
| 6299 | linkedModule->MapTypes(startingTypeIdx); |
| 6300 | |
| 6301 | CvCompileUnit* compileUnit = NULL; |
| 6302 | for (auto entry : mCvCompileUnitData) |
| 6303 | { |
| 6304 | compileUnit = ParseCompileUnit(NULL, compileUnit, entry.mData, entry.mSize); |
| 6305 | } |
| 6306 | if (compileUnit != NULL) |
| 6307 | { |
| 6308 | compileUnit->mLanguage = DbgLanguage_Beef; |
| 6309 | mMasterCompileUnit->mLanguage = DbgLanguage_Beef; |
| 6310 | MapCompileUnitMethods(compileUnit); |
| 6311 | mEndTypeIdx = (int)linkedModule->mTypes.size(); |
| 6312 | } |
| 6313 | } |
| 6314 | } |
| 6315 | |
| 6316 | void COFF::FinishHotSwap() |
| 6317 | { |