mirror of https://github.com/acidanthera/audk.git
Enhance the check for debug data before get the PdbPointer.
Signed-off-by: Dong Eric <eric.dong@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13961 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
6c2f76ed70
commit
36b48bf641
|
@ -631,6 +631,12 @@ PeCoffLoaderGetImageInfo (
|
|||
}
|
||||
return Status;
|
||||
}
|
||||
|
||||
//
|
||||
// From PeCoff spec, when DebugEntry.RVA == 0 means this debug info will not load into memory.
|
||||
// Here we will always load EFI_IMAGE_DEBUG_TYPE_CODEVIEW type debug info. so need adjust the
|
||||
// ImageContext->ImageSize when DebugEntry.RVA == 0.
|
||||
//
|
||||
if (DebugEntry.Type == EFI_IMAGE_DEBUG_TYPE_CODEVIEW) {
|
||||
ImageContext->DebugDirectoryEntryRva = (UINT32) (DebugDirectoryEntryRva + Index);
|
||||
if (DebugEntry.RVA == 0 && DebugEntry.FileOffset != 0) {
|
||||
|
@ -1437,14 +1443,26 @@ PeCoffLoaderLoadImage (
|
|||
|
||||
switch (*(UINT32 *) ImageContext->CodeView) {
|
||||
case CODEVIEW_SIGNATURE_NB10:
|
||||
if (DebugEntry->SizeOfData < sizeof (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY)) {
|
||||
ImageContext->ImageError = IMAGE_ERROR_UNSUPPORTED;
|
||||
return RETURN_UNSUPPORTED;
|
||||
}
|
||||
ImageContext->PdbPointer = (CHAR8 *)ImageContext->CodeView + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_NB10_ENTRY);
|
||||
break;
|
||||
|
||||
case CODEVIEW_SIGNATURE_RSDS:
|
||||
if (DebugEntry->SizeOfData < sizeof (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY)) {
|
||||
ImageContext->ImageError = IMAGE_ERROR_UNSUPPORTED;
|
||||
return RETURN_UNSUPPORTED;
|
||||
}
|
||||
ImageContext->PdbPointer = (CHAR8 *)ImageContext->CodeView + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_RSDS_ENTRY);
|
||||
break;
|
||||
|
||||
case CODEVIEW_SIGNATURE_MTOC:
|
||||
if (DebugEntry->SizeOfData < sizeof (EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY)) {
|
||||
ImageContext->ImageError = IMAGE_ERROR_UNSUPPORTED;
|
||||
return RETURN_UNSUPPORTED;
|
||||
}
|
||||
ImageContext->PdbPointer = (CHAR8 *)ImageContext->CodeView + sizeof (EFI_IMAGE_DEBUG_CODEVIEW_MTOC_ENTRY);
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in New Issue