Fix DxeIpl module bugs: DxeCoreFileName should be from the Dxe Core ffs file that contain DxeCore Pe Data.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@543 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
lgao4 2006-06-16 14:45:03 +00:00
parent c965d3aff4
commit 6326ee4e47
3 changed files with 31 additions and 17 deletions

View File

@ -102,9 +102,9 @@ DxeLoadCore (
EFI_STATUS EFI_STATUS
PeiProcessFile ( PeiProcessFile (
IN UINT16 SectionType, IN UINT16 SectionType,
IN EFI_FFS_FILE_HEADER *FfsFileHeader, IN OUT EFI_FFS_FILE_HEADER **RealFfsFileHeader,
OUT VOID **Pe32Data OUT VOID **Pe32Data
); );
EFI_STATUS EFI_STATUS

View File

@ -470,12 +470,12 @@ Returns:
&FfsFileHeader &FfsFileHeader
); );
if (!EFI_ERROR (Status)) { if (!EFI_ERROR (Status)) {
CopyMem (FileName, &FfsFileHeader->Name, sizeof (EFI_GUID));
Status = PeiProcessFile ( Status = PeiProcessFile (
SectionType, SectionType,
FfsFileHeader, &FfsFileHeader,
Pe32Data Pe32Data
); );
CopyMem (FileName, &FfsFileHeader->Name, sizeof (EFI_GUID));
return Status; return Status;
} }
Hob.Raw = GET_NEXT_HOB (Hob); Hob.Raw = GET_NEXT_HOB (Hob);
@ -683,7 +683,7 @@ Returns:
// //
Status = PeiProcessFile ( Status = PeiProcessFile (
EFI_SECTION_PE32, EFI_SECTION_PE32,
FfsHeader, &FfsHeader,
&Pe32Data &Pe32Data
); );
@ -706,9 +706,9 @@ Returns:
EFI_STATUS EFI_STATUS
PeiProcessFile ( PeiProcessFile (
IN UINT16 SectionType, IN UINT16 SectionType,
IN EFI_FFS_FILE_HEADER *FfsFileHeader, IN OUT EFI_FFS_FILE_HEADER **RealFfsFileHeader,
OUT VOID **Pe32Data OUT VOID **Pe32Data
) )
/*++ /*++
@ -756,6 +756,9 @@ Returns:
EFI_GUID TempGuid; EFI_GUID TempGuid;
EFI_FIRMWARE_VOLUME_HEADER *FvHeader; EFI_FIRMWARE_VOLUME_HEADER *FvHeader;
EFI_COMPRESSION_SECTION *CompressionSection; EFI_COMPRESSION_SECTION *CompressionSection;
EFI_FFS_FILE_HEADER *FfsFileHeader;
FfsFileHeader = *RealFfsFileHeader;
Status = PeiServicesFfsFindSectionData ( Status = PeiServicesFfsFindSectionData (
EFI_SECTION_COMPRESSION, EFI_SECTION_COMPRESSION,
@ -950,7 +953,11 @@ Returns:
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
} }
return PeiProcessFile (SectionType, FfsFileHeader, Pe32Data); //
// Reture the FfsHeader that contain Pe32Data.
//
*RealFfsFileHeader = FfsFileHeader;
return PeiProcessFile (SectionType, RealFfsFileHeader, Pe32Data);
} }
} }
// //

View File

@ -445,12 +445,12 @@ Returns:
&FfsFileHeader &FfsFileHeader
); );
if (!EFI_ERROR (Status)) { if (!EFI_ERROR (Status)) {
CopyMem (FileName, &FfsFileHeader->Name, sizeof (EFI_GUID));
Status = PeiProcessFile ( Status = PeiProcessFile (
SectionType, SectionType,
FfsFileHeader, &FfsFileHeader,
Pe32Data Pe32Data
); );
CopyMem (FileName, &FfsFileHeader->Name, sizeof (EFI_GUID));
return Status; return Status;
} }
Hob.Raw = GET_NEXT_HOB (Hob); Hob.Raw = GET_NEXT_HOB (Hob);
@ -662,7 +662,7 @@ Returns:
// //
Status = PeiProcessFile ( Status = PeiProcessFile (
EFI_SECTION_PE32, EFI_SECTION_PE32,
FfsHeader, &FfsHeader,
&Pe32Data &Pe32Data
); );
@ -686,9 +686,9 @@ Returns:
EFI_STATUS EFI_STATUS
PeiProcessFile ( PeiProcessFile (
IN UINT16 SectionType, IN UINT16 SectionType,
IN EFI_FFS_FILE_HEADER *FfsFileHeader, IN OUT EFI_FFS_FILE_HEADER **RealFfsFileHeader,
OUT VOID **Pe32Data OUT VOID **Pe32Data
) )
/*++ /*++
@ -736,6 +736,9 @@ Returns:
EFI_GUID TempGuid; EFI_GUID TempGuid;
EFI_FIRMWARE_VOLUME_HEADER *FvHeader; EFI_FIRMWARE_VOLUME_HEADER *FvHeader;
EFI_COMPRESSION_SECTION *CompressionSection; EFI_COMPRESSION_SECTION *CompressionSection;
EFI_FFS_FILE_HEADER *FfsFileHeader;
FfsFileHeader = *RealFfsFileHeader;
Status = PeiServicesFfsFindSectionData ( Status = PeiServicesFfsFindSectionData (
EFI_SECTION_COMPRESSION, EFI_SECTION_COMPRESSION,
@ -930,7 +933,11 @@ Returns:
return EFI_NOT_FOUND; return EFI_NOT_FOUND;
} }
return PeiProcessFile (SectionType, FfsFileHeader, Pe32Data); //
// Reture the FfsHeader that contain Pe32Data.
//
*RealFfsFileHeader = FfsFileHeader;
return PeiProcessFile (SectionType, RealFfsFileHeader, Pe32Data);
} }
} }
// //