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

Reply via email to