[ELF] Support PROVIDE/PROVIDE_HIDDEN inside output sections description.

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

llvm-svn: 276579
This commit is contained in:
Davide Italiano 2016-07-24 23:13:48 +00:00
parent ee410aca06
commit 054a679634
2 changed files with 24 additions and 0 deletions

View File

@ -676,6 +676,10 @@ void ScriptParser::readOutputSectionDescription(StringRef OutSec) {
InCmd->Patterns.push_back(next());
}
expect(")");
} else if (Tok == "PROVIDE") {
readProvide(false);
} else if (Tok == "PROVIDE_HIDDEN") {
readProvide(true);
} else {
setError("unknown command " + Tok);
}

View File

@ -0,0 +1,20 @@
# REQUIRES: x86
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
# RUN: echo \
# RUN: "SECTIONS { . = 1000; .blah : { PROVIDE(foo = .); } }" \
# RUN: > %t.script
# RUN: ld.lld -o %t1 --script %t.script %t -shared
# RUN: llvm-objdump -t %t1 | FileCheck %s
# CHECK: 00000000000003e8 *ABS* 00000000 foo
# RUN: echo \
# RUN: "SECTIONS { . = 1000; .blah : { PROVIDE_HIDDEN(foo = .); } }" \
# RUN: > %t2.script
# RUN: ld.lld -o %t2 --script %t2.script %t -shared
# RUN: llvm-objdump -t %t2 | FileCheck %s --check-prefix=HIDDEN
# HIDDEN: 00000000000003e8 *ABS* 00000000 .hidden foo
.section blah
.globl patatino
patatino:
movl $foo, %edx