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:
Yonghong Zhu 2015-12-07 09:04:39 +00:00 committed by yzhu52
parent 0a6e1dd2cf
commit 2ff9e57574
2 changed files with 35 additions and 31 deletions

View File

@ -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;
}

View File

@ -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()