[PATCH] D23598: [ELF] Linkerscript: support assignment outside SECTIONS

Petr Hosek via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 17 21:42:39 PDT 2016


This revision was automatically updated to reflect the committed changes.
Closed by commit rL279033: [ELF] Linkerscript: support assignment outside SECTIONS (authored by phosek).

Changed prior to commit:
  https://reviews.llvm.org/D23598?vs=68473&id=68479#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D23598

Files:
  lld/trunk/ELF/LinkerScript.cpp
  lld/trunk/test/ELF/invalid-linkerscript.test
  lld/trunk/test/ELF/linkerscript/linkerscript-symbols.s

Index: lld/trunk/ELF/LinkerScript.cpp
===================================================================
--- lld/trunk/ELF/LinkerScript.cpp
+++ lld/trunk/ELF/LinkerScript.cpp
@@ -655,6 +655,8 @@
     StringRef Tok = next();
     if (Handler Fn = Cmd.lookup(Tok))
       (this->*Fn)();
+    else if (SymbolAssignment *Cmd = readProvideOrAssignment(Tok))
+      Opt.Commands.emplace_back(Cmd);
     else
       setError("unknown directive: " + Tok);
   }
Index: lld/trunk/test/ELF/linkerscript/linkerscript-symbols.s
===================================================================
--- lld/trunk/test/ELF/linkerscript/linkerscript-symbols.s
+++ lld/trunk/test/ELF/linkerscript/linkerscript-symbols.s
@@ -41,6 +41,32 @@
 # RUN: llvm-objdump -t %t1 | FileCheck --check-prefix=HIDDEN3 %s
 # HIDDEN3: 0000000000000001         *ABS*    00000000 .hidden newsym
 
+# The symbol is not referenced. Don't provide it.
+# RUN: echo "PROVIDE(newsym = 1);" > %t.script
+# RUN: ld.lld -o %t1 --script %t.script %t
+# RUN: llvm-objdump -t %t1 | FileCheck --check-prefix=PROVIDE4 %s
+# PROVIDE4-NOT: 0000000000000001         *ABS*    00000000 newsym
+
+# The symbol is not referenced. Don't provide it.
+# RUN: echo "PROVIDE_HIDDEN(newsym = 1);" > %t.script
+# RUN: ld.lld -o %t1 --script %t.script %t
+# RUN: llvm-objdump -t %t1 | FileCheck --check-prefix=HIDDEN4 %s
+# HIDDEN4-NOT: 0000000000000001         *ABS*    00000000 .hidden newsym
+
+# Provide existing symbol. The value should be 0, even though we
+# have value of 1 in PROVIDE()
+# RUN: echo "PROVIDE(somesym = 1);" > %t.script
+# RUN: ld.lld -o %t1 --script %t.script %t
+# RUN: llvm-objdump -t %t1 | FileCheck --check-prefix=PROVIDE5 %s
+# PROVIDE5: 0000000000000000         *ABS*    00000000 somesym
+
+# Provide existing symbol. The value should be 0, even though we
+# have value of 1 in PROVIDE_HIDDEN(). Visibility should not change
+# RUN: echo "PROVIDE_HIDDEN(somesym = 1);" > %t.script
+# RUN: ld.lld -o %t1 --script %t.script %t
+# RUN: llvm-objdump -t %t1 | FileCheck --check-prefix=HIDDEN5 %s
+# HIDDEN5: 0000000000000000         *ABS*    00000000 somesym
+
 .global _start
 _start:
  nop
Index: lld/trunk/test/ELF/invalid-linkerscript.test
===================================================================
--- lld/trunk/test/ELF/invalid-linkerscript.test
+++ lld/trunk/test/ELF/invalid-linkerscript.test
@@ -15,7 +15,7 @@
 
 # RUN: echo foobar > %t1
 # RUN: not ld.lld %t1 no-such-file 2>&1 | FileCheck -check-prefix=ERR1 %s
-# ERR1: unknown directive: foobar
+# ERR1: unexpected EOF
 # ERR1: cannot open no-such-file:
 
 # RUN: echo "foo \"bar" > %t2


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23598.68479.patch
Type: text/x-patch
Size: 2617 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160818/7a263bb9/attachment.bin>


More information about the llvm-commits mailing list