]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/AutoGen/GenPcdDb.py
BaseTools: Update the FV region name as upper letter
[mirror_edk2.git] / BaseTools / Source / Python / AutoGen / GenPcdDb.py
index 20f4a23371e6f5c0611fda2faf08fda6e4246ad2..d5997f0e66aaf16d7a6f112f6bbcecb927a3b4e9 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # Routines for generating Pcd Database\r
 #\r
-# Copyright (c) 2013 - 2015, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2013 - 2016, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -784,11 +784,11 @@ def BuildExDataBase(Dict):
  \r
     DbTotal = [InitValueUint64, VardefValueUint64, InitValueUint32, VardefValueUint32, VpdHeadValue, ExMapTable, \r
                LocalTokenNumberTable, GuidTable, StringHeadValue,  PcdNameOffsetTable,VariableTable,SkuTable, StringTableLen, PcdTokenTable,PcdCNameTable, \r
-               SizeTableValue, InitValueUint16, VardefValueUint16,InitValueUint8, VardefValueUint8, InitValueBoolean,\r
+               SizeTableValue, InitValueUint16, VardefValueUint16, InitValueUint8, VardefValueUint8, InitValueBoolean,\r
                VardefValueBoolean, SkuidValue, SkuIndexValue, UnInitValueUint64, UnInitValueUint32, UnInitValueUint16, UnInitValueUint8, UnInitValueBoolean]\r
     DbItemTotal = [DbInitValueUint64, DbVardefValueUint64, DbInitValueUint32, DbVardefValueUint32, DbVpdHeadValue, DbExMapTable, \r
                DbLocalTokenNumberTable, DbGuidTable, DbStringHeadValue,  DbPcdNameOffsetTable,DbVariableTable,DbSkuTable, DbStringTableLen, DbPcdTokenTable, DbPcdCNameTable, \r
-               DbSizeTableValue, DbInitValueUint16, DbVardefValueUint16,DbInitValueUint8, DbVardefValueUint8, DbInitValueBoolean,\r
+               DbSizeTableValue, DbInitValueUint16, DbVardefValueUint16, DbInitValueUint8, DbVardefValueUint8, DbInitValueBoolean,\r
                DbVardefValueBoolean, DbSkuidValue, DbSkuIndexValue, DbUnInitValueUint64, DbUnInitValueUint32, DbUnInitValueUint16, DbUnInitValueUint8, DbUnInitValueBoolean]\r
     \r
     # SkuidValue is the last table in the init table items\r
@@ -836,6 +836,9 @@ def BuildExDataBase(Dict):
                 DbOffset += DbItemTotal[DbIndex].GetInterOffset(Offset)\r
                 break\r
             DbOffset += DbItemTotal[DbIndex].GetListSize()\r
+            if DbIndex + 1 == InitTableNum:\r
+                if DbOffset % 8:\r
+                    DbOffset += (8 - DbOffset % 8)\r
         else:\r
             assert(False)\r
 \r
@@ -867,6 +870,9 @@ def BuildExDataBase(Dict):
                     DbOffset += DbItemTotal[DbIndex].GetInterOffset(VariableOffset)\r
                     break\r
                 DbOffset += DbItemTotal[DbIndex].GetListSize()\r
+                if DbIndex + 1 == InitTableNum:\r
+                    if DbOffset % 8:\r
+                        DbOffset += (8 - DbOffset % 8)\r
             else:\r
                 assert(False)\r
             if isinstance(VariableRefTable[0],list):\r
@@ -908,6 +914,8 @@ def BuildExDataBase(Dict):
     for Item in (DbUnInitValueUint64, DbUnInitValueUint32, DbUnInitValueUint16, DbUnInitValueUint8, DbUnInitValueBoolean):\r
         UninitDataBaseSize += Item.GetListSize()\r
     \r
+    if (DbTotalLength - UninitDataBaseSize) % 8:\r
+        DbTotalLength += (8 - (DbTotalLength - UninitDataBaseSize) % 8)\r
     # Construct the database buffer\r
     Guid = "{0x3c7d193c, 0x682c, 0x4c14, 0xa6, 0x8f, 0x55, 0x2d, 0xea, 0x4f, 0x43, 0x7e}"\r
     Guid = StringArrayToList(Guid)\r
@@ -977,6 +985,10 @@ def BuildExDataBase(Dict):
         b = Item.PackData()\r
         Buffer += b  \r
         if Index == InitTableNum:\r
+            if len(Buffer) % 8:\r
+                for num in range(8 - len(Buffer) % 8):\r
+                    b = pack('=B', Pad)\r
+                    Buffer += b\r
             break        \r
     return Buffer\r
 \r
@@ -1129,6 +1141,16 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
         CName = Pcd.TokenCName\r
         TokenSpaceGuidCName = Pcd.TokenSpaceGuidCName\r
 \r
+        for PcdItem in GlobalData.MixedPcd:\r
+            if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName) in GlobalData.MixedPcd[PcdItem]:\r
+                CName = PcdItem[0]\r
+\r
+        if GlobalData.BuildOptionPcd:\r
+            for PcdItem in GlobalData.BuildOptionPcd:\r
+                if (Pcd.TokenSpaceGuidCName, CName) == (PcdItem[0], PcdItem[1]):\r
+                    Pcd.DefaultValue = PcdItem[2]\r
+                    break\r
+\r
         EdkLogger.debug(EdkLogger.DEBUG_3, "PCD: %s %s (%s : %s)" % (CName, TokenSpaceGuidCName, Pcd.Phase, Phase))\r
 \r
         if Pcd.Phase == 'PEI':\r
@@ -1331,7 +1353,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
                         Dict['STRING_TABLE_VALUE'].append(DefaultValueBinStructure)\r
                     elif Sku.DefaultValue[0] == '"':\r
                         DefaultValueBinStructure = StringToArray(Sku.DefaultValue)\r
-                        Size = len(Sku.DefaultValue) -2 + 1\r
+                        Size = len(Sku.DefaultValue) - 2 + 1\r
                         Dict['STRING_TABLE_VALUE'].append(DefaultValueBinStructure)\r
                     elif Sku.DefaultValue[0] == '{':\r
                         DefaultValueBinStructure = StringToArray(Sku.DefaultValue)\r
@@ -1363,7 +1385,7 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
                         Pcd.InitString = 'INIT'\r
                     else:\r
                         if int(Sku.DefaultValue, 0) != 0:\r
-                            Pcd.InitString = 'INIT'              \r
+                            Pcd.InitString = 'INIT'\r
                 #\r
                 # For UNIT64 type PCD's value, ULL should be append to avoid\r
                 # warning under linux building environment.\r
@@ -1452,6 +1474,17 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
         if len(Pcd.SkuInfoList) > 1:\r
             Dict['PCD_ORDER_TOKEN_NUMBER_MAP'][GeneratedTokenNumber] = SkuEnablePcdIndex\r
             SkuEnablePcdIndex += 1\r
+\r
+        for PcdItem in GlobalData.MixedPcd:\r
+            if (Pcd.TokenCName, Pcd.TokenSpaceGuidCName) in GlobalData.MixedPcd[PcdItem]:\r
+                CName = PcdItem[0]\r
+\r
+        if GlobalData.BuildOptionPcd:\r
+            for PcdItem in GlobalData.BuildOptionPcd:\r
+                if (Pcd.TokenSpaceGuidCName, CName) == (PcdItem[0], PcdItem[1]):\r
+                    Pcd.DefaultValue = PcdItem[2]\r
+                    break\r
+\r
         EdkLogger.debug(EdkLogger.DEBUG_1, "PCD = %s.%s" % (CName, TokenSpaceGuidCName))\r
         EdkLogger.debug(EdkLogger.DEBUG_1, "phase = %s" % Phase)\r
         EdkLogger.debug(EdkLogger.DEBUG_1, "GeneratedTokenNumber = %s" % str(GeneratedTokenNumber))\r