* Re: [edk2-devel] [PATCH] IntelFsp2Pkg: FSP Python scripts to support 3.x.
2019-06-28 2:28 ` [edk2-devel] [PATCH] IntelFsp2Pkg: FSP Python scripts to support 3.x Zeng, Star
@ 2019-06-28 2:56 ` Chiu, Chasel
0 siblings, 0 replies; 2+ messages in thread
From: Chiu, Chasel @ 2019-06-28 2:56 UTC (permalink / raw)
To: Zeng, Star, devel@edk2.groups.io; +Cc: Ma, Maurice, Desimone, Nathaniel L
Yes. It works! I will update patch.
Thanks!
Chasel
> -----Original Message-----
> From: Zeng, Star
> Sent: Friday, June 28, 2019 10:28 AM
> To: devel@edk2.groups.io; Chiu, Chasel <chasel.chiu@intel.com>
> Cc: Ma, Maurice <maurice.ma@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>; Zeng, Star <star.zeng@intel.com>
> Subject: RE: [edk2-devel] [PATCH] IntelFsp2Pkg: FSP Python scripts to support
> 3.x.
>
> It is ok to directly use below code without python version check?
>
> + for loop in range(int(unit)):
> + bytearray.append("0x%02X" % (value & 0xFF))
> + value = value >> 8
>
>
> Thanks,
> Star
> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Chiu,
> Chasel
> Sent: Monday, June 24, 2019 10:35 PM
> To: devel@edk2.groups.io
> Cc: Ma, Maurice <maurice.ma@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>; Zeng, Star <star.zeng@intel.com>
> Subject: [edk2-devel] [PATCH] IntelFsp2Pkg: FSP Python scripts to support 3.x.
>
> https://bugzilla.tianocore.org/show_bug.cgi?id=1930
>
> Updated FSP Python scripts to support both 2.x and 3.x.
>
> Test:
> . Verified with Python 2.7.12 and 3.6.6.
> . Verified tool result is the same before the change.
> . Both py -2 and py -3 built binary can boot.
>
> Cc: Maurice Ma <maurice.ma@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Cc: Star Zeng <star.zeng@intel.com>
> Signed-off-by: Chasel Chiu <chasel.chiu@intel.com>
> ---
> IntelFsp2Pkg/Tools/GenCfgOpt.py | 70
> ++++++++++++++++++++++++++++++++++++++--------------------------------
> IntelFsp2Pkg/Tools/PatchFv.py | 36 +++++++++++++++++++++++-------------
> IntelFsp2Pkg/Tools/SplitFspBin.py | 74
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
> -----
> 3 files changed, 116 insertions(+), 64 deletions(-)
>
> diff --git a/IntelFsp2Pkg/Tools/GenCfgOpt.py
> b/IntelFsp2Pkg/Tools/GenCfgOpt.py index 450c4e3eb9..e0441966ac 100644
> --- a/IntelFsp2Pkg/Tools/GenCfgOpt.py
> +++ b/IntelFsp2Pkg/Tools/GenCfgOpt.py
> @@ -1,6 +1,6 @@
> ## @ GenCfgOpt.py
> #
> -# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2014 - 2019, Intel Corporation. All rights
> +reserved.<BR>
> # SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -10,6 +10,7 @@
> import re import sys import struct
> from datetime import date
> +from functools import reduce
>
> # Generated file copyright header
>
> @@ -90,11 +91,11 @@ class CLogicalExpression:
> self.string = ''
>
> def errExit(self, err = ''):
> - print "ERROR: Express parsing for:"
> - print " %s" % self.string
> - print " %s^" % (' ' * self.index)
> + print ("ERROR: Express parsing for:")
> + print (" %s" % self.string)
> + print (" %s^" % (' ' * self.index))
> if err:
> - print "INFO : %s" % err
> + print ("INFO : %s" % err)
> raise SystemExit
>
> def getNonNumber (self, n1, n2):
> @@ -338,15 +339,15 @@ EndList
> else:
> Error = 0
> if self.Debug:
> - print "INFO : Macro dictionary:"
> + print ("INFO : Macro dictionary:")
> for Each in self._MacroDict:
> - print " $(%s) = [ %s ]" % (Each , self._MacroDict[Each])
> + print (" $(%s) = [ %s ]" % (Each , self._MacroDict[Each]))
> return Error
>
> def EvaulateIfdef (self, Macro):
> Result = Macro in self._MacroDict
> if self.Debug:
> - print "INFO : Eval Ifdef [%s] : %s" % (Macro, Result)
> + print ("INFO : Eval Ifdef [%s] : %s" % (Macro, Result))
> return Result
>
> def ExpandMacros (self, Input):
> @@ -359,7 +360,7 @@ EndList
> Line = Line.replace(Each, self._MacroDict[Variable])
> else:
> if self.Debug:
> - print "WARN : %s is not defined" % Each
> + print ("WARN : %s is not defined" % Each)
> Line = Line.replace(Each, Each[2:-1])
> return Line
>
> @@ -372,7 +373,7 @@ EndList
> Line = Line.replace(PcdName, self._PcdsDict[PcdName])
> else:
> if self.Debug:
> - print "WARN : %s is not defined" % PcdName
> + print ("WARN : %s is not defined" % PcdName)
> return Line
>
> def EvaluateExpress (self, Expr):
> @@ -381,7 +382,7 @@ EndList
> LogExpr = CLogicalExpression()
> Result = LogExpr.evaluateExpress (ExpExpr)
> if self.Debug:
> - print "INFO : Eval Express [%s] : %s" % (Expr, Result)
> + print ("INFO : Eval Express [%s] : %s" % (Expr, Result))
> return Result
>
> def FormatListValue(self, ConfigDict):
> @@ -406,9 +407,14 @@ EndList
> bytearray = []
> for each in dataarray:
> value = each
> - for loop in xrange(unit):
> - bytearray.append("0x%02X" % (value & 0xFF))
> - value = value >> 8
> + if sys.version_info < (3,0):
> + for loop in xrange(unit):
> + bytearray.append("0x%02X" % (value & 0xFF))
> + value = value >> 8
> + else:
> + for loop in range(int(unit)):
> + bytearray.append("0x%02X" % (value & 0xFF))
> + value = value >> 8
> newvalue = '{' + ','.join(bytearray) + '}'
> ConfigDict['value'] = newvalue
> return ""
> @@ -548,7 +554,7 @@ EndList
> if Match:
> self._MacroDict[Match.group(1)] = Match.group(2)
> if self.Debug:
> - print "INFO : DEFINE %s = [ %s ]" % (Match.group(1),
> Match.group(2))
> + print ("INFO : DEFINE %s = [ %s ]" %
> + (Match.group(1), Match.group(2)))
> elif IsPcdSect:
> #gSiPkgTokenSpaceGuid.PcdTxtEnable|FALSE
> #gSiPkgTokenSpaceGuid.PcdOverclockEnable|TRUE
> @@ -556,7 +562,7 @@ EndList
> if Match:
> self._PcdsDict[Match.group(1)] = Match.group(2)
> if self.Debug:
> - print "INFO : PCD %s = [ %s ]" % (Match.group(1),
> Match.group(2))
> + print ("INFO : PCD %s = [ %s ]" %
> + (Match.group(1), Match.group(2)))
> i = 0
> while i < len(BuildOptionPcd):
> Match = re.match("\s*([\w\.]+)\s*\=\s*(\w+)",
> BuildOptionPcd[i]) @@ -774,7 +780,7 @@ EndList
> bitsvalue = bitsvalue[::-1]
> bitslen = len(bitsvalue)
> if start > bitslen or end > bitslen:
> - print "Invalid bits offset [%d,%d] for %s" % (start, end,
> subitem['name'])
> + print ("Invalid bits offset [%d,%d] for %s" % (start, end,
> + subitem['name']))
> raise SystemExit
> return hex(int(bitsvalue[start:end][::-1], 2))
>
> @@ -1031,7 +1037,7 @@ EndList
>
> if Match and Match.group(3) == 'END':
> if (StructName != Match.group(1)) or (VariableName !=
> Match.group(2)):
> - print "Unmatched struct name '%s' and '%s' !" % (StructName,
> Match.group(1))
> + print ("Unmatched struct name '%s' and '%s' !" %
> + (StructName, Match.group(1)))
> else:
> if IsUpdHdrDefined != True or IsUpdHeader != True:
> NewTextBody.append ('} %s;\n\n' % StructName) @@
> -1464,11 +1470,11 @@ EndList
>
>
> def Usage():
> - print "GenCfgOpt Version 0.53"
> - print "Usage:"
> - print " GenCfgOpt UPDTXT PlatformDscFile BuildFvDir [-D
> Macros]"
> - print " GenCfgOpt HEADER PlatformDscFile BuildFvDir InputHFile
> [-D Macros]"
> - print " GenCfgOpt GENBSF PlatformDscFile BuildFvDir BsfOutFile
> [-D Macros]"
> + print ("GenCfgOpt Version 0.54")
> + print ("Usage:")
> + print (" GenCfgOpt UPDTXT PlatformDscFile BuildFvDir
> [-D Macros]")
> + print (" GenCfgOpt HEADER PlatformDscFile BuildFvDir InputHFile
> [-D Macros]")
> + print (" GenCfgOpt GENBSF PlatformDscFile BuildFvDir BsfOutFile
> [-D Macros]")
>
> def Main():
> #
> @@ -1489,7 +1495,7 @@ def Main():
> else:
> DscFile = sys.argv[2]
> if not os.path.exists(DscFile):
> - print "ERROR: Cannot open DSC file '%s' !" % DscFile
> + print ("ERROR: Cannot open DSC file '%s' !" % DscFile)
> return 2
>
> OutFile = ''
> @@ -1501,7 +1507,7 @@ def Main():
> Start = 5
> if argc > Start:
> if GenCfgOpt.ParseMacros(sys.argv[Start:]) != 0:
> - print "ERROR: Macro parsing failed !"
> + print ("ERROR: Macro parsing failed !")
> return 3
>
> FvDir = sys.argv[3]
> @@ -1509,11 +1515,11 @@ def Main():
> os.makedirs(FvDir)
>
> if GenCfgOpt.ParseDscFile(DscFile, FvDir) != 0:
> - print "ERROR: %s !" % GenCfgOpt.Error
> + print ("ERROR: %s !" % GenCfgOpt.Error)
> return 5
>
> if GenCfgOpt.UpdateSubRegionDefaultValue() != 0:
> - print "ERROR: %s !" % GenCfgOpt.Error
> + print ("ERROR: %s !" % GenCfgOpt.Error)
> return 7
>
> if sys.argv[1] == "UPDTXT":
> @@ -1521,23 +1527,23 @@ def Main():
> if Ret != 0:
> # No change is detected
> if Ret == 256:
> - print "INFO: %s !" % (GenCfgOpt.Error)
> + print ("INFO: %s !" % (GenCfgOpt.Error))
> else :
> - print "ERROR: %s !" % (GenCfgOpt.Error)
> + print ("ERROR: %s !" % (GenCfgOpt.Error))
> return Ret
> elif sys.argv[1] == "HEADER":
> if GenCfgOpt.CreateHeaderFile(OutFile) != 0:
> - print "ERROR: %s !" % GenCfgOpt.Error
> + print ("ERROR: %s !" % GenCfgOpt.Error)
> return 8
> elif sys.argv[1] == "GENBSF":
> if GenCfgOpt.GenerateBsfFile(OutFile) != 0:
> - print "ERROR: %s !" % GenCfgOpt.Error
> + print ("ERROR: %s !" % GenCfgOpt.Error)
> return 9
> else:
> if argc < 5:
> Usage()
> return 1
> - print "ERROR: Unknown command '%s' !" % sys.argv[1]
> + print ("ERROR: Unknown command '%s' !" % sys.argv[1])
> Usage()
> return 1
> return 0
> diff --git a/IntelFsp2Pkg/Tools/PatchFv.py b/IntelFsp2Pkg/Tools/PatchFv.py
> index 19bffd146a..2332fa92f2 100644
> --- a/IntelFsp2Pkg/Tools/PatchFv.py
> +++ b/IntelFsp2Pkg/Tools/PatchFv.py
> @@ -1,6 +1,6 @@
> ## @ PatchFv.py
> #
> -# Copyright (c) 2014 - 2018, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2014 - 2019, Intel Corporation. All rights
> +reserved.<BR>
> # SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -25,7 +25,10 @@
> def readDataFromFile (binfile, offset, len=1):
> if (offval & 0x80000000):
> offval = fsize - (0xFFFFFFFF - offval + 1)
> fd.seek(offval)
> - bytearray = [ord(b) for b in fd.read(len)]
> + if sys.version_info < (3,0):
> + bytearray = [ord(b) for b in fd.read(len)]
> + else:
> + bytearray = [b for b in fd.read(len)]
> value = 0
> idx = len - 1
> while idx >= 0:
> @@ -45,7 +48,7 @@ def IsFspHeaderValid (binfile):
> fd = open (binfile, "rb")
> bindat = fd.read(0x200) # only read first 0x200 bytes
> fd.close()
> - HeaderList = ['FSPH' , 'FSPP' , 'FSPE'] # Check 'FSPH', 'FSPP', and 'FSPE' in
> the FSP header
> + HeaderList = [b'FSPH' , b'FSPP' , b'FSPE'] # Check 'FSPH', 'FSPP', and
> 'FSPE' in the FSP header
> OffsetList = []
> for each in HeaderList:
> if each in bindat:
> @@ -55,7 +58,10 @@ def IsFspHeaderValid (binfile):
> OffsetList.append(idx)
> if not OffsetList[0] or not OffsetList[1]: # If 'FSPH' or 'FSPP' is missing, it will
> return false
> return False
> - Revision = ord(bindat[OffsetList[0] + 0x0B])
> + if sys.version_info < (3,0):
> + Revision = ord(bindat[OffsetList[0] + 0x0B])
> + else:
> + Revision = bindat[OffsetList[0] + 0x0B]
> #
> # if revision is bigger than 1, it means it is FSP v1.1 or greater revision, which
> must contain 'FSPE'.
> #
> @@ -86,7 +92,10 @@ def patchDataInFile (binfile, offset, value, len=1):
> value = value >> 8
> idx = idx + 1
> fd.seek(offval)
> - fd.write("".join(chr(b) for b in bytearray))
> + if sys.version_info < (3,0):
> + fd.write("".join(chr(b) for b in bytearray))
> + else:
> + fd.write(bytes(bytearray))
> fd.close()
> return len
>
> @@ -791,7 +800,7 @@ class Symbols:
> # retval ret
> #
> def getSymbols(self, value):
> - if self.dictSymbolAddress.has_key(value):
> + if value in self.dictSymbolAddress:
> # Module:Function
> ret = int (self.dictSymbolAddress[value], 16)
> else:
> @@ -827,8 +836,9 @@ class Symbols:
> #
> # Print out the usage
> #
> -def usage():
> - print "Usage: \n\tPatchFv FvBuildDir
> [FvFileBaseNames:]FdFileBaseNameToPatch \"Offset, Value\""
> +def Usage():
> + print ("PatchFv Version 0.50")
> + print ("Usage: \n\tPatchFv FvBuildDir
> +[FvFileBaseNames:]FdFileBaseNameToPatch \"Offset, Value\"")
>
> def main():
> #
> @@ -847,7 +857,7 @@ def main():
> # If it fails to create dictionaries, then return an error.
> #
> if symTables.createDicts(sys.argv[1], sys.argv[2]) != 0:
> - print "ERROR: Failed to create symbol dictionary!!"
> + print ("ERROR: Failed to create symbol dictionary!!")
> return 2
>
> #
> @@ -907,7 +917,7 @@ def main():
> if ret:
> raise Exception ("Patch failed for offset 0x%08X" % offset)
> else:
> - print "Patched offset 0x%08X:[%08X] with value 0x%08X #
> %s" % (offset, oldvalue, value, comment)
> + print ("Patched offset 0x%08X:[%08X] with value
> + 0x%08X # %s" % (offset, oldvalue, value, comment))
>
> elif command == "COPY":
> #
> @@ -928,13 +938,13 @@ def main():
> if ret:
> raise Exception ("Copy failed from offset 0x%08X to offset
> 0x%08X!" % (src, dest))
> else :
> - print "Copied %d bytes from offset 0x%08X ~ offset 0x%08X #
> %s" % (clen, src, dest, comment)
> + print ("Copied %d bytes from offset 0x%08X ~ offset
> + 0x%08X # %s" % (clen, src, dest, comment))
> else:
> raise Exception ("Unknown command %s!" % command)
> return 0
>
> - except Exception as (ex):
> - print "ERROR: %s" % ex
> + except Exception as ex:
> + print ("ERROR: %s" % ex)
> return 1
>
> if __name__ == '__main__':
> diff --git a/IntelFsp2Pkg/Tools/SplitFspBin.py
> b/IntelFsp2Pkg/Tools/SplitFspBin.py
> index 15c8bebee2..28663a853f 100644
> --- a/IntelFsp2Pkg/Tools/SplitFspBin.py
> +++ b/IntelFsp2Pkg/Tools/SplitFspBin.py
> @@ -12,6 +12,7 @@ import copy
> import struct
> import argparse
> from ctypes import *
> +from functools import reduce
>
> """
> This utility supports some operations for Intel FSP 1.x/2.x image.
> @@ -340,6 +341,31 @@ def Bytes2Val (bytes):
> def Val2Bytes (value, blen):
> return [(value>>(i*8) & 0xff) for i in range(blen)]
>
> +def IsIntegerType (val):
> + if sys.version_info < (3,0):
> + if type(val) in (int, long):
> + return True
> + else:
> + if type(val) is int:
> + return True
> + return False
> +
> +def IsStrType (val):
> + if sys.version_info < (3,0):
> + if type(val) is str:
> + return True
> + else:
> + if type(val) is bytes:
> + return True
> + return False
> +
> +def HandleNameStr (val):
> + if sys.version_info < (3,0):
> + rep = "0x%X ('%s')" % (Bytes2Val (bytearray (val)), val)
> + else:
> + rep = "0x%X ('%s')" % (Bytes2Val (bytearray (val)), str (val, 'utf-8'))
> + return rep
> +
> def OutputStruct (obj, indent = 0, plen = 0):
> if indent:
> body = ''
> @@ -361,15 +387,19 @@ def OutputStruct (obj, indent = 0, plen = 0):
> body += OutputStruct (val, indent + 1)
> plen -= sizeof(val)
> else:
> - if type(val) is str:
> - rep = "0x%X ('%s')" % (Bytes2Val(bytearray(val)), val)
> - elif type(val) in (int, long):
> + if IsStrType (val):
> + rep = HandleNameStr (val)
> + elif IsIntegerType (val):
> rep = '0x%X' % val
> elif isinstance(val, c_uint24):
> rep = '0x%X' % val.get_value()
> elif 'c_ubyte_Array' in str(type(val)):
> if sizeof(val) == 16:
> - rep = str(uuid.UUID(bytes = str(bytearray(val)))).upper()
> + if sys.version_info < (3,0):
> + rep = str(bytearray(val))
> + else:
> + rep = bytes(val)
> + rep = str(uuid.UUID(bytes_le = rep)).upper()
> else:
> res = ['0x%02X'%i for i in bytearray(val)]
> rep = '[%s]' % (','.join(res)) @@ -487,7 +517,7 @@ class
> FirmwareDevice:
> self.FvList = []
> while offset < fdsize:
> fvh = EFI_FIRMWARE_VOLUME_HEADER.from_buffer (self.FdData,
> offset)
> - if '_FVH' != fvh.Signature:
> + if b'_FVH' != fvh.Signature:
> raise Exception("ERROR: Invalid FV header !")
> fv = FirmwareVolume (offset, self.FdData[offset:offset +
> fvh.FvLength])
> fv.ParseFv ()
> @@ -524,7 +554,7 @@ class FirmwareDevice:
> fspoffset = fv.Offset
> offset = fspoffset + fihoffset
> fih = FSP_INFORMATION_HEADER.from_buffer (self.FdData,
> offset)
> - if 'FSPH' != fih.Signature:
> + if b'FSPH' != fih.Signature:
> continue
>
> offset += fih.HeaderLength @@ -532,7 +562,7 @@ class
> FirmwareDevice:
> plist = []
> while True:
> fch = FSP_COMMON_HEADER.from_buffer (self.FdData,
> offset)
> - if 'FSPP' != fch.Signature:
> + if b'FSPP' != fch.Signature:
> offset += fch.HeaderLength
> offset = AlignPtr(offset, 4)
> else:
> @@ -557,9 +587,9 @@ class PeTeImage:
> def __init__(self, offset, data):
> self.Offset = offset
> tehdr = EFI_TE_IMAGE_HEADER.from_buffer (data, 0)
> - if tehdr.Signature == 'VZ': # TE image
> + if tehdr.Signature == b'VZ': # TE image
> self.TeHdr = tehdr
> - elif tehdr.Signature == 'MZ': # PE image
> + elif tehdr.Signature == b'MZ': # PE image
> self.TeHdr = None
> self.DosHdr = EFI_IMAGE_DOS_HEADER.from_buffer (data, 0)
> self.PeHdr = EFI_IMAGE_NT_HEADERS32.from_buffer (data,
> self.DosHdr.e_lfanew)
> @@ -604,7 +634,7 @@ class PeTeImage:
> offset += sizeof(blkhdr)
> # Read relocation type,offset pairs
> rlen = blkhdr.BlockSize - sizeof(PE_RELOC_BLOCK_HEADER)
> - rnum = rlen/sizeof(c_uint16)
> + rnum = int (rlen/sizeof(c_uint16))
> rdata = (c_uint16 * rnum).from_buffer(self.Data, offset)
> for each in rdata:
> roff = each & 0xfff
> @@ -666,8 +696,11 @@ def ShowFspInfo (fspfile):
> if not name:
> name = '\xff' * 16
> else:
> - name = str(bytearray(name))
> - guid = uuid.UUID(bytes = name)
> + if sys.version_info < (3,0):
> + name = str(bytearray(name))
> + else:
> + name = bytes(name)
> + guid = uuid.UUID(bytes_le = name)
> print ("FV%d:" % idx)
> print (" GUID : %s" % str(guid).upper())
> print (" Offset : 0x%08X" % fv.Offset) @@ -695,7 +728,10 @@ def
> GenFspHdr (fspfile, outdir, hfile):
> for fsp in fd.FspList:
> fih = fsp.Fih
> if firstfv:
> - hfsp.write("#define FSP_IMAGE_ID 0x%016X /* '%s' */\n" %
> (Bytes2Val(bytearray(fih.ImageId)), fih.ImageId))
> + if sys.version_info < (3,0):
> + hfsp.write("#define FSP_IMAGE_ID 0x%016X /* '%s' */\n"
> % (Bytes2Val(bytearray(fih.ImageId)), fih.ImageId))
> + else:
> + hfsp.write("#define FSP_IMAGE_ID 0x%016X /* '%s' */\n"
> % (Bytes2Val(bytearray(fih.ImageId)), str (fih.ImageId, 'utf-8')))
> hfsp.write("#define FSP_IMAGE_REV 0x%08X \n\n" %
> fih.ImageRevision)
> firstfv = False
> fv = fd.FvList[fsp.FvIdxList[0]] @@ -733,7 +769,7 @@ def RebaseFspBin
> (FspBinary, FspComponent, FspBase, OutputDir, OutputFile):
> numcomp = len(FspComponent)
> baselist = FspBase
> if numcomp != len(baselist):
> - print "ERROR: Required number of base does not match number of FSP
> component !"
> + print ("ERROR: Required number of base does not match number of
> + FSP component !")
> return
>
> newfspbin = fd.FdData[:]
> @@ -753,7 +789,7 @@ def RebaseFspBin (FspBinary, FspComponent, FspBase,
> OutputDir, OutputFile):
> break
>
> if not found:
> - print "ERROR: Could not find FSP_%c component to rebase !" %
> fspcomp.upper()
> + print ("ERROR: Could not find FSP_%c component to rebase !"
> + % fspcomp.upper())
> return
>
> fspbase = baselist[idx]
> @@ -763,7 +799,7 @@ def RebaseFspBin (FspBinary, FspComponent, FspBase,
> OutputDir, OutputFile):
> newbase = int(fspbase)
> oldbase = fsp.Fih.ImageBase
> delta = newbase - oldbase
> - print "Rebase FSP-%c from 0x%08X to 0x%08X:" %
> (ftype.upper(),oldbase,newbase)
> + print ("Rebase FSP-%c from 0x%08X to 0x%08X:" %
> + (ftype.upper(),oldbase,newbase))
>
> imglist = []
> for fvidx in fsp.FvIdxList:
> @@ -782,12 +818,12 @@ def RebaseFspBin (FspBinary, FspComponent,
> FspBase, OutputDir, OutputFile):
> pcount += img.Rebase(delta, newfspbin)
> fcount += 1
>
> - print " Patched %d entries in %d TE/PE32 images." % (pcount, fcount)
> + print (" Patched %d entries in %d TE/PE32 images." % (pcount,
> + fcount))
>
> (count, applied) = fsp.Patch(delta, newfspbin)
> - print " Patched %d entries using FSP patch table." % applied
> + print (" Patched %d entries using FSP patch table." % applied)
> if count != applied:
> - print " %d invalid entries are ignored !" % (count - applied)
> + print (" %d invalid entries are ignored !" % (count -
> + applied))
>
> if OutputFile == '':
> filename = os.path.basename(FspBinary)
> --
> 2.13.3.windows.1
>
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread