mirror of https://github.com/acidanthera/audk.git
BaseTools GenFw: Fix the issue to update the wrong size as SectionSize
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1603 CLANG9 generated PE image exposes below two issues. 1. SectionSize is used to copy PE section data. It should be smaller than section raw size. 2. The real data is required to be copied. So, copy the min size of VirtualSize and SizeOfRawData. Signed-off-by: Liming Gao <liming.gao@intel.com> Cc: Bob Feng <bob.c.feng@intel.com> Reviewed-by: Philippe Mathieu-Daude <philmd@redhat.com>
This commit is contained in:
parent
15330934dc
commit
3d312a1fec
|
@ -653,7 +653,11 @@ PeCoffConvertImageToXip (
|
|||
//
|
||||
// Make the size of raw data in section header alignment.
|
||||
//
|
||||
SectionHeader->SizeOfRawData = (SectionHeader->Misc.VirtualSize + PeHdr->Pe32.OptionalHeader.FileAlignment - 1) & (~(PeHdr->Pe32.OptionalHeader.FileAlignment - 1));
|
||||
SectionSize = (SectionHeader->Misc.VirtualSize + PeHdr->Pe32.OptionalHeader.FileAlignment - 1) & (~(PeHdr->Pe32.OptionalHeader.FileAlignment - 1));
|
||||
if (SectionSize < SectionHeader->SizeOfRawData) {
|
||||
SectionHeader->SizeOfRawData = SectionSize;
|
||||
}
|
||||
|
||||
SectionHeader->PointerToRawData = SectionHeader->VirtualAddress;
|
||||
}
|
||||
|
||||
|
@ -999,7 +1003,7 @@ Returns:
|
|||
CopyMem (
|
||||
FileBuffer + SectionHeader->PointerToRawData,
|
||||
(VOID*) (UINTN) (ImageContext.ImageAddress + SectionHeader->VirtualAddress),
|
||||
SectionHeader->SizeOfRawData
|
||||
SectionHeader->SizeOfRawData < SectionHeader->Misc.VirtualSize ? SectionHeader->SizeOfRawData : SectionHeader->Misc.VirtualSize
|
||||
);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue