[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