[lld] r200514 - [PECOFF] Do not emit a section if it's empty.

Rui Ueyama ruiu at google.com
Thu Jan 30 21:15:42 PST 2014


Author: ruiu
Date: Thu Jan 30 23:15:42 2014
New Revision: 200514

URL: http://llvm.org/viewvc/llvm-project?rev=200514&view=rev
Log:
[PECOFF] Do not emit a section if it's empty.

The PE32+ loader does not seem to like an executable with an empty section, so
we should not emit a section if it's empty.

Modified:
    lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
    lld/trunk/test/pecoff/pe32plus.test
    lld/trunk/test/pecoff/trivial.test

Modified: lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp?rev=200514&r1=200513&r2=200514&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp (original)
+++ lld/trunk/lib/ReaderWriter/PECOFF/WriterPECOFF.cpp Thu Jan 30 23:15:42 2014
@@ -932,7 +932,8 @@ void PECOFFWriter::build(const File &lin
     StringRef sectionName = i.first;
     std::vector<const DefinedAtom *> &contents = i.second;
     auto *section = new AtomChunk(_ctx, sectionName, contents);
-    addSectionChunk(section, sectionTable);
+    if (section->size() > 0)
+      addSectionChunk(section, sectionTable);
   }
 
   // Now that we know the addresses of all defined atoms that needs to be

Modified: lld/trunk/test/pecoff/pe32plus.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/pe32plus.test?rev=200514&r1=200513&r2=200514&view=diff
==============================================================================
--- lld/trunk/test/pecoff/pe32plus.test (original)
+++ lld/trunk/test/pecoff/pe32plus.test Thu Jan 30 23:15:42 2014
@@ -9,7 +9,7 @@ CHECK-NEXT: Arch: x86_64
 CHECK-NEXT: AddressSize: 64bit
 CHECK-NEXT: ImageFileHeader {
 CHECK-NEXT:   Machine: IMAGE_FILE_MACHINE_AMD64 (0x8664)
-CHECK-NEXT:   SectionCount: 3
+CHECK-NEXT:   SectionCount: 2
 CHECK-NEXT:   TimeDateStamp:
 CHECK-NEXT:   PointerToSymbolTable: 0x0
 CHECK-NEXT:   SymbolCount: 0

Modified: lld/trunk/test/pecoff/trivial.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/trivial.test?rev=200514&r1=200513&r2=200514&view=diff
==============================================================================
--- lld/trunk/test/pecoff/trivial.test (original)
+++ lld/trunk/test/pecoff/trivial.test Thu Jan 30 23:15:42 2014
@@ -17,7 +17,7 @@ FILE-NEXT: Arch: i386
 FILE-NEXT: AddressSize: 32bit
 FILE-NEXT: ImageFileHeader {
 FILE-NEXT:   Machine: IMAGE_FILE_MACHINE_I386 (0x14C)
-FILE-NEXT:   SectionCount: 2
+FILE-NEXT:   SectionCount: 1
 FILE-NEXT:   TimeDateStamp:
 FILE-NEXT:   PointerToSymbolTable: 0x0
 FILE-NEXT:   SymbolCount: 0
@@ -66,23 +66,6 @@ SECTIONS-NEXT: AddressSize: 32bit
 SECTIONS-NEXT: Sections [
 SECTIONS-NEXT:   Section {
 SECTIONS-NEXT:     Number: 1
-SECTIONS-NEXT:     Name: .data (2E 64 61 74 61 00 00 00)
-SECTIONS-NEXT:     VirtualSize: 0x0
-SECTIONS-NEXT:     VirtualAddress: 0x1000
-SECTIONS-NEXT:     RawDataSize: 0
-SECTIONS-NEXT:     PointerToRawData: 0x200
-SECTIONS-NEXT:     PointerToRelocations: 0x0
-SECTIONS-NEXT:     PointerToLineNumbers: 0x0
-SECTIONS-NEXT:     RelocationCount: 0
-SECTIONS-NEXT:     LineNumberCount: 0
-SECTIONS-NEXT:     Characteristics [
-SECTIONS-NEXT:       IMAGE_SCN_CNT_INITIALIZED_DATA
-SECTIONS-NEXT:       IMAGE_SCN_MEM_READ
-SECTIONS-NEXT:       IMAGE_SCN_MEM_WRITE
-SECTIONS-NEXT:     ]
-SECTIONS-NEXT:   }
-SECTIONS-NEXT:   Section {
-SECTIONS-NEXT:     Number: 2
 SECTIONS-NEXT:     Name: .text (2E 74 65 78 74 00 00 00)
 SECTIONS-NEXT:     VirtualSize: 0x6
 SECTIONS-NEXT:     VirtualAddress: 0x1000





More information about the llvm-commits mailing list