Reviewed-by: Liming Gao <[email protected]>
> -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Yonghong Zhu > Sent: Sunday, March 13, 2016 6:16 PM > To: [email protected] > Subject: [edk2] [Patch] 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 <[email protected]> > --- > BaseTools/Source/Python/BPDG/GenVpd.py | 30 +++++++++++++++-------- > ------- > 1 file changed, 15 insertions(+), 15 deletions(-) > > diff --git a/BaseTools/Source/Python/BPDG/GenVpd.py > b/BaseTools/Source/Python/BPDG/GenVpd.py > index 003011b..4ff4647 100644 > --- a/BaseTools/Source/Python/BPDG/GenVpd.py > +++ b/BaseTools/Source/Python/BPDG/GenVpd.py > @@ -1,10 +1,10 @@ > ## @file > # 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 > # which accompanies this distribution. The full text of the license may be > found at > # http://opensource.org/licenses/bsd-license.php > @@ -408,14 +408,27 @@ class GenVPD : > # This information will be useful while generate the output > map file. > # > 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"): > Alignment = 2 > else: > @@ -429,23 +442,10 @@ class GenVPD : > 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. > - 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 > count += 1 > continue > -- > 2.6.1.windows.1 > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

