BaseTools: PI 1.6 to support FV extended header contain FV used size

Per PI 1.6 we added an FV Extended Header entry that would contain the
size of the FV that was in use.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Yonghong Zhu <yonghong.zhu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Yunhua Feng <yunhuax.feng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Yunhua Feng
2017-09-27 21:09:34 +08:00
committed by Yonghong Zhu
parent c46bced224
commit 9425b34925
4 changed files with 39 additions and 4 deletions

View File

@ -51,6 +51,7 @@ class FV (FvClassObject):
self.FvBaseAddress = None
self.FvForceRebase = None
self.FvRegionInFD = None
self.UsedSizeEnable = False
## AddToBuffer()
#
@ -307,6 +308,10 @@ class FV (FvClassObject):
T_CHAR_LF)
if not (self.FvAttributeDict == None):
for FvAttribute in self.FvAttributeDict.keys() :
if FvAttribute == "FvUsedSizeEnable":
if self.FvAttributeDict[FvAttribute].upper() in ('TRUE', '1') :
self.UsedSizeEnable = True
continue
self.FvInfFile.writelines("EFI_" + \
FvAttribute + \
' = ' + \
@ -322,12 +327,22 @@ class FV (FvClassObject):
# Generate FV extension header file
#
if self.FvNameGuid == None or self.FvNameGuid == '':
if len(self.FvExtEntryType) > 0:
if len(self.FvExtEntryType) > 0 or self.UsedSizeEnable:
GenFdsGlobalVariable.ErrorLogger("FV Extension Header Entries declared for %s with no FvNameGuid declaration." % (self.UiFvName))
if self.FvNameGuid <> None and self.FvNameGuid <> '':
TotalSize = 16 + 4
Buffer = ''
if self.UsedSizeEnable:
TotalSize += (4 + 4)
## define EFI_FV_EXT_TYPE_USED_SIZE_TYPE 0x03
#typedef struct
# {
# EFI_FIRMWARE_VOLUME_EXT_ENTRY Hdr;
# UINT32 UsedSize;
# } EFI_FIRMWARE_VOLUME_EXT_ENTRY_USED_SIZE_TYPE;
Buffer += pack('HHL', 8, 3, 0)
if self.FvNameString == 'TRUE':
#
# Create EXT entry for FV UI name