summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYonghong Zhu <yonghong.zhu@intel.com>2016-03-13 18:13:04 +0800
committerHao Wu <hao.a.wu@intel.com>2016-03-15 10:05:06 +0800
commit1ec1dee4b74b6dfd9fc231887e039abd754adfa1 (patch)
tree6174f36dd884c3d298ce3afdace26a8a22598ba6
parent38e1ad2be54d339e6d240d580c0c0a53d7f3b0d2 (diff)
downloadedk2-1ec1dee4b74b6dfd9fc231887e039abd754adfa1.tar.gz
edk2-1ec1dee4b74b6dfd9fc231887e039abd754adfa1.tar.bz2
edk2-1ec1dee4b74b6dfd9fc231887e039abd754adfa1.zip
BaseTools/BPDG: Fix the bug to get the PCD Size
The original bug is only consider int format of PcdSize, but forgot the Hex format. The fix is use the already exist variable PCD.PcdBinSize which done to translate PCD size cover both format. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> (cherry picked from commit 53c1329529e47a7da3a0bb5169b5fe0b44f4307e)
-rw-r--r--BaseTools/Source/Python/BPDG/GenVpd.py30
1 files changed, 15 insertions, 15 deletions
diff --git a/BaseTools/Source/Python/BPDG/GenVpd.py b/BaseTools/Source/Python/BPDG/GenVpd.py
index 003011b709..4ff464756f 100644
--- a/BaseTools/Source/Python/BPDG/GenVpd.py
+++ b/BaseTools/Source/Python/BPDG/GenVpd.py
@@ -2,7 +2,7 @@
# This file include GenVpd class for fix the Vpd type PCD offset, and PcdEntry for describe
# and process each entry of vpd type PCD.
#
-# Copyright (c) 2010 - 2014, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2010 - 2016, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials
# are licensed and made available under the terms and conditions of the BSD License
@@ -410,10 +410,23 @@ class GenVPD :
PCD.PcdUnpackValue = str(PCD.PcdValue)
#
+ # Translate PCD size string to an integer value.
+ PackSize = None
+ try:
+ PackSize = int(PCD.PcdSize, 10)
+ PCD.PcdBinSize = PackSize
+ except:
+ try:
+ PackSize = int(PCD.PcdSize, 16)
+ PCD.PcdBinSize = PackSize
+ except:
+ EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID, "Invalid PCD size value %s at file: %s line: %s" % (PCD.PcdSize, self.InputFileName, PCD.Lineno))
+
+ #
# If value is Unicode string (e.g. L""), then use 2-byte alignment
# If value is byte array (e.g. {}), then use 8-byte alignment
#
- PCD.PcdOccupySize = int(PCD.PcdSize)
+ PCD.PcdOccupySize = PCD.PcdBinSize
if PCD.PcdUnpackValue.startswith("{"):
Alignment = 8
elif PCD.PcdUnpackValue.startswith("L"):
@@ -431,19 +444,6 @@ class GenVPD :
if PCD.PcdOccupySize % Alignment != 0:
PCD.PcdOccupySize = (PCD.PcdOccupySize / Alignment + 1) * Alignment
- #
- # Translate PCD size string to an integer value.
- PackSize = None
- try:
- PackSize = int(PCD.PcdSize, 10)
- PCD.PcdBinSize = PackSize
- except:
- try:
- PackSize = int(PCD.PcdSize, 16)
- PCD.PcdBinSize = PackSize
- except:
- EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID, "Invalid PCD size value %s at file: %s line: %s" % (PCD.PcdSize, self.InputFileName, PCD.Lineno))
-
if PCD._IsBoolean(PCD.PcdValue, PCD.PcdSize):
PCD._PackBooleanValue(PCD.PcdValue)
self.FileLinesList[count] = PCD