BaseTools/Build: The PCD value in uninitialized data range should be natural aligned.
authorBob Feng <bob.c.feng@intel.com>
Tue, 12 May 2015 00:58:20 +0000 (00:58 +0000)
committerbobfeng <bobfeng@Edk2>
Tue, 12 May 2015 00:58:20 +0000 (00:58 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: "Bob Feng" <bob.c.feng@intel.com>
Reviewed-by: "Liu, Yingke D" <yingke.d.liu@intel.com>
Tested-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17416 6f19259b-4bc3-4df7-8a09-765794883524

BaseTools/Source/Python/AutoGen/GenPcdDb.py

index 20f4a23371e6f5c0611fda2faf08fda6e4246ad2..d07ac60ef363884a59e7b490724eea6284ebc05e 100644 (file)
@@ -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