[lld] r316626 - Fix SizeOfImage in the PE header.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 25 16:00:40 PDT 2017


Author: ruiu
Date: Wed Oct 25 16:00:40 2017
New Revision: 316626

URL: http://llvm.org/viewvc/llvm-project?rev=316626&view=rev
Log:
Fix SizeOfImage in the PE header.

IIUC, SizeOfImage is the distance from the end of the last section to
the image base, rounded up to the page size. So the previous code is
wrong.

Should fix https://bugs.llvm.org/show_bug.cgi?id=34949

(It is nice to know that lld is already being used to create Putty
distribution binaries.)

Modified:
    lld/trunk/COFF/Writer.cpp
    lld/trunk/test/COFF/hello32.test

Modified: lld/trunk/COFF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/COFF/Writer.cpp?rev=316626&r1=316625&r2=316626&view=diff
==============================================================================
--- lld/trunk/COFF/Writer.cpp (original)
+++ lld/trunk/COFF/Writer.cpp Wed Oct 25 16:00:40 2017
@@ -615,7 +615,7 @@ void Writer::assignAddresses() {
     RVA += alignTo(Sec->getVirtualSize(), PageSize);
     FileSize += alignTo(Sec->getRawSize(), SectorSize);
   }
-  SizeOfImage = SizeOfHeaders + alignTo(RVA - 0x1000, PageSize);
+  SizeOfImage = alignTo(RVA, PageSize);
 }
 
 template <typename PEHeaderTy> void Writer::writeHeader() {

Modified: lld/trunk/test/COFF/hello32.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/COFF/hello32.test?rev=316626&r1=316625&r2=316626&view=diff
==============================================================================
--- lld/trunk/test/COFF/hello32.test (original)
+++ lld/trunk/test/COFF/hello32.test Wed Oct 25 16:00:40 2017
@@ -39,7 +39,7 @@ HEADER-NEXT:   MajorImageVersion: 0
 HEADER-NEXT:   MinorImageVersion: 0
 HEADER-NEXT:   MajorSubsystemVersion: 6
 HEADER-NEXT:   MinorSubsystemVersion: 0
-HEADER-NEXT:   SizeOfImage: 16896
+HEADER-NEXT:   SizeOfImage: 20480
 HEADER-NEXT:   SizeOfHeaders: 512
 HEADER-NEXT:   Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
 HEADER-NEXT:   Characteristics [ (0x9140)




More information about the llvm-commits mailing list