[ELF] Allow discarding of .rela.plt

When linking the linux kernel on ppc64le

ld.lld -EL -m elf64lppc -Bstatic --orphan-handling=warn --build-id -o
.tmp_vmlinux1 -T ./arch/powerpc/kernel/vmlinux.lds --whole-archive
built-in.a --no-whole-archive --start-group lib/lib.a --end-group
ld.lld: error: discarding .rela.plt section is not allowed

The linker script discards with the following matches
*(.glink .iplt .plt .rela* .comment)

Differential Revision: https://reviews.llvm.org/D54871

llvm-svn: 348258
This commit is contained in:
Martell Malone 2018-12-04 12:37:56 +00:00
parent 7925d58eae
commit 15b6c453b8
2 changed files with 1 additions and 7 deletions

View File

@ -416,8 +416,7 @@ LinkerScript::computeInputSections(const InputSectionDescription *Cmd) {
void LinkerScript::discard(ArrayRef<InputSection *> V) {
for (InputSection *S : V) {
if (S == In.ShStrTab || S == In.Dynamic || S == In.DynSymTab ||
S == In.DynStrTab || S == In.RelaPlt || S == In.RelaDyn ||
S == In.RelrDyn)
S == In.DynStrTab || S == In.RelaDyn || S == In.RelrDyn)
error("discarding " + S->Name + " section is not allowed");
// You can discard .hash and .gnu.hash sections by linker scripts. Since

View File

@ -22,11 +22,6 @@
# RUN: FileCheck -check-prefix=DYNSTR %s
# DYNSTR: discarding .dynstr section is not allowed
# RUN: echo "SECTIONS { /DISCARD/ : { *(.rela.plt) } }" > %t.script
# RUN: not ld.lld -pie -o %t --script %t.script %t.o 2>&1 | \
# RUN: FileCheck -check-prefix=RELAPLT %s
# RELAPLT: discarding .rela.plt section is not allowed
# RUN: echo "SECTIONS { /DISCARD/ : { *(.rela.dyn) } }" > %t.script
# RUN: not ld.lld -pie -o %t --script %t.script %t.o 2>&1 | \
# RUN: FileCheck -check-prefix=RELADYN %s