[PATCH] D33145: Clear output section from linker script command when it's removed.
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Tue May 23 17:27:18 PDT 2017
LGTM!
Thanks,
Rafael
Dmitry Mikulin via Phabricator <reviews at reviews.llvm.org> writes:
> 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;
>
>
> 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;
More information about the llvm-commits
mailing list