mirror of https://github.com/acidanthera/audk.git
BaseTools: Enhance GenFv Tool to report error message
When two vtf files in one FV image, no FV file can be generated, but it report the stack trace info. so we enhance the tool to report error message directly but not the stack trace info. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19141 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
0a6e1dd2cf
commit
2ff9e57574
|
@ -2854,17 +2854,18 @@ Returns:
|
|||
fclose (fpin);
|
||||
|
||||
if (FvInfoPtr->IsPiFvImage) {
|
||||
//
|
||||
// Check whether this ffs file is vtf file
|
||||
//
|
||||
if (IsVtfFile (&FfsHeader)) {
|
||||
if (VtfFileFlag) {
|
||||
//
|
||||
// One Fv image can't have two vtf files.
|
||||
//
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
VtfFileFlag = TRUE;
|
||||
//
|
||||
// Check whether this ffs file is vtf file
|
||||
//
|
||||
if (IsVtfFile (&FfsHeader)) {
|
||||
if (VtfFileFlag) {
|
||||
//
|
||||
// One Fv image can't have two vtf files.
|
||||
//
|
||||
Error (NULL, 0, 3000,"Invalid", "One Fv image can't have two vtf files.");
|
||||
return EFI_ABORTED;
|
||||
}
|
||||
VtfFileFlag = TRUE;
|
||||
VtfFileSize = FfsFileSize;
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -181,30 +181,33 @@ class FV (FvClassObject):
|
|||
#
|
||||
# Write the Fv contents to Buffer
|
||||
#
|
||||
FvFileObj = open ( FvOutputFile,'r+b')
|
||||
if os.path.isfile(FvOutputFile):
|
||||
FvFileObj = open ( FvOutputFile,'r+b')
|
||||
|
||||
GenFdsGlobalVariable.VerboseLogger( "\nGenerate %s FV Successfully" %self.UiFvName)
|
||||
GenFdsGlobalVariable.SharpCounter = 0
|
||||
GenFdsGlobalVariable.VerboseLogger( "\nGenerate %s FV Successfully" %self.UiFvName)
|
||||
GenFdsGlobalVariable.SharpCounter = 0
|
||||
|
||||
Buffer.write(FvFileObj.read())
|
||||
FvFileObj.seek(0)
|
||||
# PI FvHeader is 0x48 byte
|
||||
FvHeaderBuffer = FvFileObj.read(0x48)
|
||||
# FV alignment position.
|
||||
FvAlignmentValue = 1 << (ord (FvHeaderBuffer[0x2E]) & 0x1F)
|
||||
# FvAlignmentValue is larger than or equal to 1K
|
||||
if FvAlignmentValue >= 0x400:
|
||||
if FvAlignmentValue >= 0x10000:
|
||||
#The max alignment supported by FFS is 64K.
|
||||
self.FvAlignment = "64K"
|
||||
Buffer.write(FvFileObj.read())
|
||||
FvFileObj.seek(0)
|
||||
# PI FvHeader is 0x48 byte
|
||||
FvHeaderBuffer = FvFileObj.read(0x48)
|
||||
# FV alignment position.
|
||||
FvAlignmentValue = 1 << (ord (FvHeaderBuffer[0x2E]) & 0x1F)
|
||||
# FvAlignmentValue is larger than or equal to 1K
|
||||
if FvAlignmentValue >= 0x400:
|
||||
if FvAlignmentValue >= 0x10000:
|
||||
#The max alignment supported by FFS is 64K.
|
||||
self.FvAlignment = "64K"
|
||||
else:
|
||||
self.FvAlignment = str (FvAlignmentValue / 0x400) + "K"
|
||||
else:
|
||||
self.FvAlignment = str (FvAlignmentValue / 0x400) + "K"
|
||||
# FvAlignmentValue is less than 1K
|
||||
self.FvAlignment = str (FvAlignmentValue)
|
||||
FvFileObj.close()
|
||||
GenFds.ImageBinDict[self.UiFvName.upper() + 'fv'] = FvOutputFile
|
||||
GenFdsGlobalVariable.LargeFileInFvFlags.pop()
|
||||
else:
|
||||
# FvAlignmentValue is less than 1K
|
||||
self.FvAlignment = str (FvAlignmentValue)
|
||||
FvFileObj.close()
|
||||
GenFds.ImageBinDict[self.UiFvName.upper() + 'fv'] = FvOutputFile
|
||||
GenFdsGlobalVariable.LargeFileInFvFlags.pop()
|
||||
GenFdsGlobalVariable.ErrorLogger("Failed to generate %s FV file." %self.UiFvName)
|
||||
return FvOutputFile
|
||||
|
||||
## _GetBlockSize()
|
||||
|
|
Loading…
Reference in New Issue