[lld] r200184 - [PECOFF] Fix PE/COFF optional header size for PE32+.

Rui Ueyama ruiu at google.com
Sun Jan 26 20:16:24 PST 2014


On Sun, Jan 26, 2014 at 8:07 PM, Shankar Easwaran
<shankare at codeaurora.org>wrote:

> On 1/26/2014 9:53 PM, Rui Ueyama wrote:
>
>> Author: ruiu
>> Date: Sun Jan 26 21:53:26 2014
>> New Revision: 200184
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=200184&view=rev
>> Log:
>> [PECOFF] Fix PE/COFF optional header size for PE32+.
>>
>> The optional header for PE32+ is a bit larger than PE32 because some of
>> its fields are extended to 8 bytes.
>>
>> Modified:
>>      lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
>>      lld/trunk/test/pecoff/peplus.test
>>
>> Modified: lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/
>> ReaderWriter/PECOFF/WriterPECOFF.cpp?rev=200184&
>> r1=200183&r2=200184&view=diff
>> ============================================================
>> ==================
>> --- lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp (original)
>> +++ lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp Sun Jan 26
>> 21:53:26 2014
>> @@ -322,8 +322,8 @@ PEHeaderChunk<PEHeader>::PEHeaderChunk(c
>>     _coffHeader.Machine = ctx.getMachineType();
>>     _coffHeader.TimeDateStamp = time(nullptr);
>>   -  // The size of PE header including optional data directory is always
>> 224.
>> -  _coffHeader.SizeOfOptionalHeader = 224;
>> +  // The size of PE header including optional data directory.
>> +  _coffHeader.SizeOfOptionalHeader = ctx.is64Bit() ? 240 : 224;
>>
> I think this should be defined in the PECOFFLinkingContext that return 240
> vs 224 (or) in a header file.


I'd think it should be computed using sizeof(). Will do in a followup patch.

       // Attributes of the executable.
>>     uint16_t characteristics = llvm::COFF::IMAGE_FILE_32BIT_MACHINE |
>>
>> Modified: lld/trunk/test/pecoff/peplus.test
>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/
>> peplus.test?rev=200184&r1=200183&r2=200184&view=diff
>> ============================================================
>> ==================
>> --- lld/trunk/test/pecoff/peplus.test (original)
>> +++ lld/trunk/test/pecoff/peplus.test Sun Jan 26 21:53:26 2014
>> @@ -11,7 +11,7 @@ CHECK-NEXT:   SectionCount: 3
>>   CHECK-NEXT:   TimeDateStamp:
>>   CHECK-NEXT:   PointerToSymbolTable: 0x0
>>   CHECK-NEXT:   SymbolCount: 0
>> -CHECK-NEXT:   OptionalHeaderSize: 224
>> +CHECK-NEXT:   OptionalHeaderSize: 240
>>   CHECK-NEXT:   Characteristics [ (0x102)
>>   CHECK-NEXT:     IMAGE_FILE_32BIT_MACHINE (0x100)
>>   CHECK-NEXT:     IMAGE_FILE_EXECUTABLE_IMAGE (0x2)
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>>
>>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, hosted
> by the Linux Foundation
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140126/d285ab66/attachment.html>


More information about the llvm-commits mailing list