| 502 | } |
| 503 | |
| 504 | void BlCvParser::FinishModule(PESectionHeader* sectHeaderArr, const BfSizedVectorRef<BlObjectDataSectInfo>& sectInfos, PE_SymInfo* objSyms, const BfSizedVectorRef<BlObjectDataSymInfo>& syms) |
| 505 | { |
| 506 | if (mCurModule == NULL) |
| 507 | return; |
| 508 | |
| 509 | mCurModule->mObjSyms = objSyms; |
| 510 | if (!syms.empty()) |
| 511 | mCurModule->mSymInfo.insert(mCurModule->mSymInfo.begin(), syms.begin(), syms.end()); |
| 512 | for (auto sectInfo : sectInfos) |
| 513 | mCurModule->mSectInfos.push_back(sectInfo); |
| 514 | mSyms = &syms; |
| 515 | |
| 516 | // |
| 517 | { |
| 518 | BL_AUTOPERF("BlCvParser::FinishModule ParseTypeData"); |
| 519 | for (auto sect : mTypeSects) |
| 520 | { |
| 521 | ParseTypeData((uint8*)mCurModule->mObjectData->mData + sect->mPointerToRawData, sect->mSizeOfRawData); |
| 522 | } |
| 523 | } |
| 524 | |
| 525 | // |
| 526 | { |
| 527 | BL_AUTOPERF("BlCvParser::FinishModule ParseSymbolData"); |
| 528 | for (auto sect : mSymSects) |
| 529 | { |
| 530 | ParseSymbolData( |
| 531 | (uint8*)mCurModule->mObjectData->mData + sect->mPointerToRawData, sect->mSizeOfRawData, |
| 532 | (uint8*)mCurModule->mObjectData->mData + sect->mPointerToRelocations, sect->mNumberOfRelocations); |
| 533 | } |
| 534 | } |
| 535 | |
| 536 | mCodeView->mModuleWorkThread.Add(mCurModule); |
| 537 | } |