[lld] r312004 - [ELF] - Linkerscript: add test for checking interaction with archive files.
George Rimar via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 29 08:05:15 PDT 2017
Author: grimar
Date: Tue Aug 29 08:05:14 2017
New Revision: 312004
URL: http://llvm.org/viewvc/llvm-project?rev=312004&view=rev
Log:
[ELF] - Linkerscript: add test for checking interaction with archive files.
Imagine we have archive file with symbols foo and bar.
And script that do foo = 1.
In that case correct behavior is not to fetch symbols from archive but
create absolute symbol.
If we have script zed = foo then symbol foo will be fetched from archive.
Currently we have Opt.ReferencedSymbols list of symbols referenced
by script and create them undefined early. That allows archives fetching logic
to work. That is what LLD already do and it seems everything is fine here.
But during writing D37059 I had to add left side of assignments to
Opt.ReferencedSymbols list because wanted to stop optimizing out
these symbols when LTO is involved (LTO also uses this list).
And testcase from this patch would have fail if we would have it before.
Differential revision: https://reviews.llvm.org/D37208
Added:
lld/trunk/test/ELF/assignment-archive.s
Added: lld/trunk/test/ELF/assignment-archive.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/assignment-archive.s?rev=312004&view=auto
==============================================================================
--- lld/trunk/test/ELF/assignment-archive.s (added)
+++ lld/trunk/test/ELF/assignment-archive.s Tue Aug 29 08:05:14 2017
@@ -0,0 +1,27 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %ta.o
+# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux -o %t.o < /dev/null
+# RUN: rm -f %tar.a
+# RUN: llvm-ar rcs %tar.a %ta.o
+
+# RUN: echo "SECTIONS { foo = 1; }" > %t1.script
+# RUN: ld.lld -o %t1.exe --script %t1.script %tar.a %t.o
+# RUN: llvm-readobj -symbols %t1.exe | FileCheck %s
+# CHECK-NOT: bar
+# CHECK: foo
+# CHECK-NOT: bar
+
+# RUN: echo "SECTIONS { zed = foo; }" > %t2.script
+# RUN: ld.lld -o %t2.exe --script %t2.script %tar.a %t.o
+# RUN: llvm-readobj -symbols %t2.exe | FileCheck %s --check-prefix=SYMS
+# SYMS: bar
+# SYMS: foo
+
+.text
+.globl foo
+foo:
+ nop
+
+.globl bar
+bar:
+ nop
More information about the llvm-commits
mailing list