Reviewed-by: Liming Gao <liming....@intel.com>

-----Original Message-----
From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Yingke 
Liu
Sent: Wednesday, July 22, 2015 3:52 PM
To: edk2-devel@lists.01.org
Subject: [edk2] [Patch] BaseTools: Add a keyword FvNameString in FDF

The keyword with value TRUE OR FALSE is used to indicate whether the FV UI name 
is included in FV EXT header as a entry or not.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yingke Liu <yingke.d....@intel.com>
---
 .../Source/Python/CommonDataClass/FdfClass.py      |  1 +
 BaseTools/Source/Python/GenFds/FdfParser.py        | 20 ++++++++++-
 BaseTools/Source/Python/GenFds/Fv.py               | 39 +++++++++++-----------
 3 files changed, 40 insertions(+), 20 deletions(-)

diff --git a/BaseTools/Source/Python/CommonDataClass/FdfClass.py 
b/BaseTools/Source/Python/CommonDataClass/FdfClass.py
index f758d35..96a630f 100644
--- a/BaseTools/Source/Python/CommonDataClass/FdfClass.py
+++ b/BaseTools/Source/Python/CommonDataClass/FdfClass.py
@@ -58,6 +58,7 @@ class FvClassObject:
         # FvAttributeDict[attribute] = TRUE/FALSE (1/0)
         self.FvAttributeDict = {}
         self.FvNameGuid = None
+        self.FvNameString = None
         self.AprioriSectionList = []
         self.FfsList = []
         self.BsBaseAddress = None
diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py 
b/BaseTools/Source/Python/GenFds/FdfParser.py
index 2313174..6585bfe 100644
--- a/BaseTools/Source/Python/GenFds/FdfParser.py
+++ b/BaseTools/Source/Python/GenFds/FdfParser.py
@@ -2072,9 +2072,12 @@ class FdfParser:
             if not (self.__GetBlockStatement(FvObj) or 
self.__GetFvBaseAddress(FvObj) or 
                 self.__GetFvForceRebase(FvObj) or self.__GetFvAlignment(FvObj) 
or 
                 self.__GetFvAttributes(FvObj) or self.__GetFvNameGuid(FvObj) 
or 
-                self.__GetFvExtEntryStatement(FvObj)):
+                self.__GetFvExtEntryStatement(FvObj) or 
self.__GetFvNameString(FvObj)):
                 break
 
+        if FvObj.FvNameString == 'TRUE' and not FvObj.FvNameGuid:
+            raise Warning("FvNameString found but FvNameGuid was not 
+ found", self.FileName, self.CurrentLineNumber)
+
         self.__GetAprioriSection(FvObj, FvObj.DefineVarDict.copy())
         self.__GetAprioriSection(FvObj, FvObj.DefineVarDict.copy())
 
@@ -2229,6 +2232,21 @@ class FdfParser:
 
         return True
 
+    def __GetFvNameString(self, FvObj):
+
+        if not self.__IsKeyword( "FvNameString"):
+            return False
+
+        if not self.__IsToken( "="):
+            raise Warning("expected '='", self.FileName, 
+ self.CurrentLineNumber)
+
+        if not self.__GetNextToken() or self.__Token not in ('TRUE', 'FALSE'):
+            raise Warning("expected TRUE or FALSE for FvNameString", 
+ self.FileName, self.CurrentLineNumber)
+
+        FvObj.FvNameString = self.__Token
+
+        return True
+
     def __GetFvExtEntryStatement(self, FvObj):
 
         if not self.__IsKeyword( "FV_EXT_ENTRY"):
diff --git a/BaseTools/Source/Python/GenFds/Fv.py 
b/BaseTools/Source/Python/GenFds/Fv.py
index 8f341d3..d770582 100644
--- a/BaseTools/Source/Python/GenFds/Fv.py
+++ b/BaseTools/Source/Python/GenFds/Fv.py
@@ -296,25 +296,26 @@ class FV (FvClassObject):
         if self.FvNameGuid <> None and self.FvNameGuid <> '':
             TotalSize = 16 + 4
             Buffer = ''
-            #
-            # Create EXT entry for FV UI name
-            # This GUID is used: A67DF1FA-8DE8-4E98-AF09-4BDF2EFFBC7C
-            #
-            FvUiLen = len(self.UiFvName)
-            TotalSize += (FvUiLen + 16 + 4)
-            Guid = FV_UI_EXT_ENTY_GUID.split('-')
-            #
-            # Layout:
-            #   EFI_FIRMWARE_VOLUME_EXT_ENTRY : size 4
-            #   GUID                          : size 16
-            #   FV UI name
-            #
-            Buffer += (pack('HH', (FvUiLen + 16 + 4), 0x0002)
-                       + pack('=LHHBBBBBBBB', int(Guid[0], 16), int(Guid[1], 
16), int(Guid[2], 16),
-                              int(Guid[3][-4:-2], 16), int(Guid[3][-2:], 16), 
int(Guid[4][-12:-10], 16),
-                              int(Guid[4][-10:-8], 16), int(Guid[4][-8:-6], 
16), int(Guid[4][-6:-4], 16),
-                              int(Guid[4][-4:-2], 16), int(Guid[4][-2:], 16))
-                       + self.UiFvName)
+            if self.FvNameString == 'TRUE':
+                #
+                # Create EXT entry for FV UI name
+                # This GUID is used: A67DF1FA-8DE8-4E98-AF09-4BDF2EFFBC7C
+                #
+                FvUiLen = len(self.UiFvName)
+                TotalSize += (FvUiLen + 16 + 4)
+                Guid = FV_UI_EXT_ENTY_GUID.split('-')
+                #
+                # Layout:
+                #   EFI_FIRMWARE_VOLUME_EXT_ENTRY : size 4
+                #   GUID                          : size 16
+                #   FV UI name
+                #
+                Buffer += (pack('HH', (FvUiLen + 16 + 4), 0x0002)
+                           + pack('=LHHBBBBBBBB', int(Guid[0], 16), 
int(Guid[1], 16), int(Guid[2], 16),
+                                  int(Guid[3][-4:-2], 16), int(Guid[3][-2:], 
16), int(Guid[4][-12:-10], 16),
+                                  int(Guid[4][-10:-8], 16), 
int(Guid[4][-8:-6], 16), int(Guid[4][-6:-4], 16),
+                                  int(Guid[4][-4:-2], 16), int(Guid[4][-2:], 
16))
+                           + self.UiFvName)
 
             for Index in range (0, len(self.FvExtEntryType)):
                 if self.FvExtEntryType[Index] == 'FILE':
--
1.9.5.msysgit.0

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to