[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