[lld] r244900 - Don't give an address to sections that are not allocated.

Rafael Espindola via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 13 08:31:17 PDT 2015


Author: rafael
Date: Thu Aug 13 10:31:17 2015
New Revision: 244900

URL: http://llvm.org/viewvc/llvm-project?rev=244900&view=rev
Log:
Don't give an address to sections that are not allocated.

Modified:
    lld/trunk/ELF/Writer.cpp
    lld/trunk/test/elf2/string-table.s

Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=244900&r1=244899&r2=244900&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Thu Aug 13 10:31:17 2015
@@ -174,9 +174,11 @@ template <class ELFT> void Writer<ELFT>:
   std::stable_sort(OutputSections.begin(), OutputSections.end(), compSec<ELFT>);
 
   for (OutputSection<ELFT> *Sec : OutputSections) {
-    Sec->setVA(VA);
+    if (Sec->getFlags() & SHF_ALLOC) {
+      Sec->setVA(VA);
+      VA += RoundUpToAlignment(Sec->getSize(), PageSize);
+    }
     Sec->setFileOffset(FileOff);
-    VA += RoundUpToAlignment(Sec->getSize(), PageSize);
     FileOff += RoundUpToAlignment(Sec->getSize(), 8);
     StrTabBuilder.add(Sec->getName());
   }

Modified: lld/trunk/test/elf2/string-table.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf2/string-table.s?rev=244900&r1=244899&r2=244900&view=diff
==============================================================================
--- lld/trunk/test/elf2/string-table.s (original)
+++ lld/trunk/test/elf2/string-table.s Thu Aug 13 10:31:17 2015
@@ -15,11 +15,13 @@ _start:
 // CHECK-NEXT:   Flags [
 // CHECK-NEXT:     SHF_ALLOC
 // CHECK-NEXT:   ]
+// CHECK-NEXT:   Address: 0x1000
 
 // CHECK:      Name: foobar
 // CHECK-NEXT:   Type: SHT_PROGBITS
 // CHECK-NEXT:   Flags [
 // CHECK-NEXT:   ]
+// CHECK-NEXT:   Address: 0x0
 
 // Test that the sting "bar" is merged into "foobar"
 




More information about the llvm-commits mailing list