From 5ace35cba5d697b06970bc8338c2656797b747da Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Wed, 25 Oct 2017 23:00:40 +0000 Subject: [PATCH] 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 --- lld/COFF/Writer.cpp | 2 +- lld/test/COFF/hello32.test | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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) -- 2.7.4