summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python/GenFds/Fv.py
diff options
context:
space:
mode:
authorYunhua Feng <yunhuax.feng@intel.com>2017-09-27 21:09:34 +0800
committerYonghong Zhu <yonghong.zhu@intel.com>2017-10-03 08:18:15 +0800
commit9425b34925d0cf1b96aaf2c316d3299df9780252 (patch)
tree8a93f62f10bbaf83ce771654bdbc3bba29e0af19 /BaseTools/Source/Python/GenFds/Fv.py
parentc46bced224b42d5a03bc8b207167829aa4e7bc5b (diff)
downloadedk2-9425b34925d0cf1b96aaf2c316d3299df9780252.tar.gz
edk2-9425b34925d0cf1b96aaf2c316d3299df9780252.tar.bz2
edk2-9425b34925d0cf1b96aaf2c316d3299df9780252.zip
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>
Diffstat (limited to 'BaseTools/Source/Python/GenFds/Fv.py')
-rw-r--r--BaseTools/Source/Python/GenFds/Fv.py17
1 files changed, 16 insertions, 1 deletions
diff --git a/BaseTools/Source/Python/GenFds/Fv.py b/BaseTools/Source/Python/GenFds/Fv.py
index 4b03adc1c8..45f6696a5f 100644
--- a/BaseTools/Source/Python/GenFds/Fv.py
+++ b/BaseTools/Source/Python/GenFds/Fv.py
@@ -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