[PATCH] D33145: Clear output section from linker script command when it's removed.

Dmitry Mikulin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 23 14:13:32 PDT 2017


dmikulin updated this revision to Diff 99989.
dmikulin added a comment.
Herald added a subscriber: emaste.

Removed Writer.cpp changes.


https://reviews.llvm.org/D33145

Files:
  ELF/LinkerScript.cpp
  test/ELF/linkerscript/arm-lscript.s


Index: test/ELF/linkerscript/arm-lscript.s
===================================================================
--- /dev/null
+++ test/ELF/linkerscript/arm-lscript.s
@@ -0,0 +1,9 @@
+// REQUIRES: arm
+// RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o
+// RUN: echo  "SECTIONS { \
+// RUN:         .rel.dyn : {    } \
+// RUN:         .zed     : { PROVIDE_HIDDEN (foobar = .); } \
+// RUN:         }" > %t.script
+// This is a test case for PR33029. Making sure that linker can digest
+// the above script without dumping core.
+// RUN: ld.lld -emit-relocs -T %t.script %t.o -shared -o %t.so
Index: ELF/LinkerScript.cpp
===================================================================
--- ELF/LinkerScript.cpp
+++ ELF/LinkerScript.cpp
@@ -684,22 +684,20 @@
   // '.' is assigned to, but creating these section should not have any bad
   // consequeces and gives us a section to put the symbol in.
   uint64_t Flags = SHF_ALLOC;
-  uint32_t Type = SHT_PROGBITS;
 
   for (int I = 0, E = Opt.Commands.size(); I != E; ++I) {
     auto *Cmd = dyn_cast<OutputSectionCommand>(Opt.Commands[I]);
     if (!Cmd)
       continue;
     if (OutputSection *Sec = Cmd->Sec) {
       Flags = Sec->Flags;
-      Type = Sec->Type;
       continue;
     }
 
     if (isAllSectionDescription(*Cmd))
       continue;
 
-    auto *OutSec = make<OutputSection>(Cmd->Name, Type, Flags);
+    auto *OutSec = make<OutputSection>(Cmd->Name, SHT_PROGBITS, Flags);
     OutSec->SectionIndex = I;
     OutputSections->push_back(OutSec);
     Cmd->Sec = OutSec;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33145.99989.patch
Type: text/x-patch
Size: 1558 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170523/e462c00d/attachment.bin>


More information about the llvm-commits mailing list