Hi Andrew Good to learn the “confusing” table. Thank you very much for your sharing.
I attached a patch. Would you please help to review? Thank you Yao Jiewen From: Andrew Fish [mailto:[email protected]] Sent: Thursday, December 04, 2014 2:15 PM To: [email protected] Cc: [email protected] Subject: Re: edk2[16474] properly support GCC - pass 'I' (int) rather than 'L' (long) to struct.unpack. On Dec 3, 2014, at 10:01 PM, [email protected]<mailto:[email protected]> wrote: Revision: 16474 http://sourceforge.net/p/edk2/code/16474 Author: jyao1 Date: 2014-12-04 06:01:15 +0000 (Thu, 04 Dec 2014) Log Message: ----------- properly support GCC - pass 'I' (int) rather than 'L' (long) to struct.unpack. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: "Yao, Jiewen" <[email protected]<mailto:[email protected]>> Reviewed-by: "Rangarajan, Ravi P" <[email protected]<mailto:[email protected]>> Reviewed-by: "Ma, Maurice" <[email protected]<mailto:[email protected]>> Reviewed-by: "Mudusuru, Giri P" <[email protected]<mailto:[email protected]>> Modified Paths: -------------- trunk/edk2/IntelFspPkg/Tools/GenCfgOpt.py Modified: trunk/edk2/IntelFspPkg/Tools/GenCfgOpt.py =================================================================== --- trunk/edk2/IntelFspPkg/Tools/GenCfgOpt.py 2014-12-04 01:18:04 UTC (rev 16473) +++ trunk/edk2/IntelFspPkg/Tools/GenCfgOpt.py 2014-12-04 06:01:15 UTC (rev 16474) @@ -615,7 +615,7 @@ BinFd = open(BinFile, "rb") IdStr = BinFd.read(0x08) ImageId = struct.unpack('Q', IdStr) - ImageRev = struct.unpack('L', BinFd.read(0x04)) + ImageRev = struct.unpack('I', BinFd.read(0x04)) I’ve been hit by this issue and done some research…. I would recommend not using native types/endian with struct in Python to describe well defined data. It is better to specify little-endian, and then use the “Standard size” from the chart. In this case both, ‘<I’ and ‘<L’, would work. The default being native size (and alignment) means by default the standard sizes are not used, and if you just look at the table you get confused (I know I did). Character Byte order Size Alignment @ native native native = native standard none < little-endian standard none > big-endian standard none ! network (= big-endian) standard none Format C Type Python type Standard size Notes x pad byte no value c char string of length 1 1 b signed char integer 1 (3) B unsigned char integer 1 (3) ? _Bool bool 1 (1) h short integer 2 (3) H unsigned short integer 2 (3) i int integer 4 (3) I unsigned int integer 4 (3) l long integer 4 (3) L unsigned long integer 4 (3) q long long integer 8 (2), (3) Q unsigned long long integer 8 (2), (3) f float float 4 (4) d double float 8 (4) s char[] string p char[] string P void * integer (5), (3) Thanks, Andrew Fish Contributed-under: TianoCore Contribution Agreement 1.0 Reviewed-by: Andrew Fish <[email protected]<mailto:[email protected]>> BinFd.close() HeaderFd.write("#define VPD_IMAGE_ID 0x%016X /* '%s' */\n" % (ImageId[0], IdStr)) ------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk _______________________________________________ edk2-commits mailing list [email protected]<mailto:[email protected]> https://lists.sourceforge.net/lists/listinfo/edk2-commits
GenCfgOpt.py.patch
Description: GenCfgOpt.py.patch
------------------------------------------------------------------------------ Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server from Actuate! Instantly Supercharge Your Business Reports and Dashboards with Interactivity, Sharing, Native Excel Exports, App Integration & more Get technology previously reserved for billion-dollar corporations, FREE http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________ edk2-commits mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-commits
