[PECOFF][Writer] Fix SizeOfImage header. It should include the first unmapped page.
authorRui Ueyama <ruiu@google.com>
Wed, 3 Jul 2013 12:55:56 +0000 (12:55 +0000)
committerRui Ueyama <ruiu@google.com>
Wed, 3 Jul 2013 12:55:56 +0000 (12:55 +0000)
llvm-svn: 185534

lld/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
lld/test/pecoff/trivial.test

index f6c8b60..703b970 100644 (file)
@@ -566,20 +566,18 @@ private:
     // there's no technical reason to do so, but we'll follow that convention
     // so that we don't produce odd-looking binary. We should update the code
     // (or this comment) once we figure the reason out.
-    uint32_t offset = PAGE_SIZE;
-    uint32_t va = offset;
+    uint32_t rva = PAGE_SIZE;
     for (auto &cp : _chunks) {
       if (SectionChunk *chunk = dyn_cast<SectionChunk>(&*cp)) {
-        chunk->setVirtualAddress(va);
-
+        chunk->setVirtualAddress(rva);
         // Skip the empty section.
         if (chunk->size() == 0)
           continue;
         numSections++;
-        va = llvm::RoundUpToAlignment(va + chunk->size(), PAGE_SIZE);
+        rva = llvm::RoundUpToAlignment(rva + chunk->size(), PAGE_SIZE);
       }
     }
-    imageSize = va - offset;
+    imageSize = rva;
   }
 
   /// Apply relocations to the output file buffer. This two pass. In the first
index 2a19db8..ad314f6 100644 (file)
@@ -39,7 +39,7 @@ FILE:   MajorImageVersion: 0
 FILE:   MinorImageVersion: 0
 FILE:   MajorSubsystemVersion: 3
 FILE:   MinorSubsystemVersion: 11
-FILE:   SizeOfImage: 4096
+FILE:   SizeOfImage: 8192
 FILE:   SizeOfHeaders: 512
 FILE:   Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI (0x3)
 FILE:   Subsystem [ (0x8540)