summaryrefslogtreecommitdiffstats
path: root/lld/test/LinkerScript/missing-output-section-name.test
diff options
context:
space:
mode:
authorRafael Auler <rafaelauler@gmail.com>2014-11-03 04:09:51 +0000
committerRafael Auler <rafaelauler@gmail.com>2014-11-03 04:09:51 +0000
commit347fb020932b617116ee01259ade235669c51d46 (patch)
tree7960a63ecbf41fa0a9d5f01e940bbd07068a10fe /lld/test/LinkerScript/missing-output-section-name.test
parent5f2764d88687910b6eb013b6e1c1e9744fc1ce93 (diff)
downloadbcm5719-llvm-347fb020932b617116ee01259ade235669c51d46.tar.gz
bcm5719-llvm-347fb020932b617116ee01259ade235669c51d46.zip
[lld] Teach LLD how to parse most linker scripts
This patch does *not* implement any semantic actions, but it is a first step to teach LLD how to read complete linker scripts. The additional linker scripts statements whose parsing is now supported are: * SEARCH_DIR directive * SECTIONS directive * Symbol definitions inside SECTIONS including PROVIDE and PROVIDE_HIDDEN * C-like expressions used in many places in linker scripts * Input to output sections mapping The goal of this commit was guided towards completely parsing a default GNU ld linker script and the linker script used to link the FreeBSD kernel. Thus, it also adds a test case based on the default linker script used in GNU ld for x86_64 ELF targets. I tested SPEC userland programs linked by GNU ld, using the linker script dump'ed by this parser, and everything went fine. I then tested linking the FreeBSD kernel with a dump'ed linker script, installed the new kernel and booted it, everything went fine. Directives that still need to be implemented: * MEMORY * PHDRS Reviewers: silvas, shankarke and ruiu http://reviews.llvm.org/D5852 llvm-svn: 221126
Diffstat (limited to 'lld/test/LinkerScript/missing-output-section-name.test')
-rw-r--r--lld/test/LinkerScript/missing-output-section-name.test25
1 files changed, 25 insertions, 0 deletions
diff --git a/lld/test/LinkerScript/missing-output-section-name.test b/lld/test/LinkerScript/missing-output-section-name.test
new file mode 100644
index 00000000000..79792982b61
--- /dev/null
+++ b/lld/test/LinkerScript/missing-output-section-name.test
@@ -0,0 +1,25 @@
+/*
+ RUN: linker-script-test %s 2> %t | FileCheck %s
+ RUN: FileCheck -input-file %t -check-prefix=CHECK-ERR %s
+*/
+SECTIONS {
+ : { *()}
+/*
+CHECK-ERR: [[@LINE-2]]:5: error: expected symbol assignment, entry, overlay or output section name
+CHECK-ERR-NEXT: {{^ : { \*\(\)}}}
+CHECK-ERR-NEXT: {{^ \^}}
+*/
+}
+
+/*
+CHECK: kw_sections: SECTIONS
+CHECK: l_brace: {
+CHECK: colon: :
+CHECK: l_brace: {
+CHECK: star: *
+CHECK: l_paren: (
+CHECK: r_paren: )
+CHECK: r_brace: }
+CHECK: r_brace: }
+CHECK: eof:
+*/
OpenPOWER on IntegriCloud