Reviewed-by: Liming Gao <[email protected]> > -----Original Message----- > From: Zhu, Yonghong > Sent: Friday, May 06, 2016 5:27 PM > To: [email protected] > Cc: Gao, Liming <[email protected]> > Subject: [Patch] BaseTools: Fix bug in GenFds to handle FV image alignment > > Cover the case that .fv file in the [Binaries] section. > > Cc: Liming Gao <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Yonghong Zhu <[email protected]> > --- > BaseTools/Source/Python/GenFds/FvImageSection.py | 27 > +++++++++++++++++++++++- > 1 file changed, 26 insertions(+), 1 deletion(-) > > diff --git a/BaseTools/Source/Python/GenFds/FvImageSection.py > b/BaseTools/Source/Python/GenFds/FvImageSection.py > index b577de2..748d02f 100644 > --- a/BaseTools/Source/Python/GenFds/FvImageSection.py > +++ b/BaseTools/Source/Python/GenFds/FvImageSection.py > @@ -58,14 +58,39 @@ class FvImageSection(FvImageSectionClassObject): > if IsSect : > return FileList, self.Alignment > > Num = SecNum > > - for FileName in FileList: > + MaxFvAlignment = 0 > + for FvFileName in FileList: > + FvAlignmentValue = 0 > + if os.path.isfile(FvFileName): > + FvFileObj = open (FvFileName,'r+b') > + FvFileObj.seek(0) > + # PI FvHeader is 0x48 byte > + FvHeaderBuffer = FvFileObj.read(0x48) > + # FV alignment position. > + FvAlignmentValue = 1 << (ord (FvHeaderBuffer[0x2E]) & > 0x1F) > + FvFileObj.close() > + if FvAlignmentValue > MaxFvAlignment: > + MaxFvAlignment = FvAlignmentValue > + > OutputFile = os.path.join(OutputPath, ModuleName + 'SEC' + > Num + > Ffs.SectionSuffix.get("FV_IMAGE")) > GenFdsGlobalVariable.GenerateSection(OutputFile, > [FvFileName], > 'EFI_SECTION_FIRMWARE_VOLUME_IMAGE') > OutputFileList.append(OutputFile) > + > + # MaxFvAlignment is larger than or equal to 1K > + if MaxFvAlignment >= 0x400: > + if MaxFvAlignment >= 0x10000: > + #The max alignment supported by FFS is 64K. > + self.Alignment = "64K" > + else: > + self.Alignment = str (MaxFvAlignment / 0x400) + "K" > + else: > + # MaxFvAlignment is less than 1K > + self.Alignment = str (MaxFvAlignment) > + > return OutputFileList, self.Alignment > # > # Generate Fv > # > if self.FvName != None: > -- > 2.6.1.windows.1
_______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

