From 815ada26cb7069d1121153c4e661e796c9e1da25 Mon Sep 17 00:00:00 2001
From: Yonghong Zhu <yonghong.zhu@intel.com>
Date: Wed, 9 Mar 2016 14:03:39 +0800
Subject: BaseTools: report warning if VOID* PCD with {} value is not 8-byte
 aligned

For VOID* Pcd with {} value, If platform developer wants to put in a
specific hex offset value that is not 8-byte aligned for VOID * then we
allow it with a warning message.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
---
 BaseTools/Source/Python/BPDG/GenVpd.py | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

(limited to 'BaseTools/Source/Python/BPDG/GenVpd.py')

diff --git a/BaseTools/Source/Python/BPDG/GenVpd.py b/BaseTools/Source/Python/BPDG/GenVpd.py
index ee7e04295f..003011b709 100644
--- a/BaseTools/Source/Python/BPDG/GenVpd.py
+++ b/BaseTools/Source/Python/BPDG/GenVpd.py
@@ -420,8 +420,16 @@ class GenVPD :
                     Alignment = 2
                 else:
                     Alignment = 1
-                if PCD.PcdOccupySize % Alignment != 0:
-                    PCD.PcdOccupySize = (PCD.PcdOccupySize / Alignment + 1) * Alignment
+
+                if PCD.PcdOffset != '*':
+                    if PCD.PcdOccupySize % Alignment != 0:
+                        if PCD.PcdUnpackValue.startswith("{"):
+                            EdkLogger.warn("BPDG", "The offset value of PCD %s is not 8-byte aligned!" %(PCD.PcdCName), File=self.InputFileName)
+                        else:
+                            EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID, 'The offset value of PCD %s should be %s-byte aligned.' % (PCD.PcdCName, Alignment))
+                else:
+                    if PCD.PcdOccupySize % Alignment != 0:
+                        PCD.PcdOccupySize = (PCD.PcdOccupySize / Alignment + 1) * Alignment
 
                 #
                 # Translate PCD size string to an integer value.
-- 
cgit v1.2.3