[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