From: Rui Ueyama Date: Wed, 25 Oct 2017 23:00:40 +0000 (+0000) Subject: Fix SizeOfImage in the PE header. X-Git-Tag: llvmorg-6.0.0-rc1~4873 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5ace35cba5d697b06970bc8338c2656797b747da;p=platform%2Fupstream%2Fllvm.git 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.) llvm-svn: 316626 --- diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp index 08b7e31..0ab2263 100644 --- a/lld/COFF/Writer.cpp +++ b/lld/COFF/Writer.cpp @@ -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 void Writer::writeHeader() { diff --git a/lld/test/COFF/hello32.test b/lld/test/COFF/hello32.test index feb65f3..923bffdc 100644 --- a/lld/test/COFF/hello32.test +++ b/lld/test/COFF/hello32.test @@ -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)