[lld] be44b79 - [lld][test] Expand testing for dynamic-list and export-dynamic
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 10 06:07:26 PDT 2020
Author: gbreynoo
Date: 2020-06-10T14:06:30+01:00
New Revision: be44b7925722a037896ea59f2851f88d67ce14e6
URL: https://github.com/llvm/llvm-project/commit/be44b7925722a037896ea59f2851f88d67ce14e6
DIFF: https://github.com/llvm/llvm-project/commit/be44b7925722a037896ea59f2851f88d67ce14e6.diff
LOG: [lld][test] Expand testing for dynamic-list and export-dynamic
- Expanded testing for --dynamic-list and --export-dynamic
- Fixed invalid-dynamic-list.test
Differential Revision: https://reviews.llvm.org/D80311
Added:
lld/test/ELF/dynamic-list-cpp.s
lld/test/ELF/dynamic-list-glob.s
lld/test/ELF/export-symbols.s
Modified:
lld/test/ELF/invalid-dynamic-list.test
Removed:
lld/test/ELF/dynamic-list-wildcard.s
################################################################################
diff --git a/lld/test/ELF/dynamic-list-cpp.s b/lld/test/ELF/dynamic-list-cpp.s
new file mode 100644
index 000000000000..b0efb8d16bcb
--- /dev/null
+++ b/lld/test/ELF/dynamic-list-cpp.s
@@ -0,0 +1,18 @@
+# REQUIRES: x86
+
+## Confirm both mangled and unmangled names may appear in
+## the --dynamic-list file.
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+
+# RUN: echo '{ _Z1fv; extern "C++" { "g()"; }; };' > %t.list
+# RUN: ld.lld -pie --dynamic-list %t.list %t.o -o %t
+# RUN: llvm-readelf --dyn-syms %t | FileCheck %s
+
+# CHECK: Symbol table '.dynsym' contains 3 entries:
+# CHECK: _Z1fv
+# CHECK-NEXT: _Z1gv
+
+.globl _Z1fv, _Z1gv
+_Z1fv:
+_Z1gv:
diff --git a/lld/test/ELF/dynamic-list-glob.s b/lld/test/ELF/dynamic-list-glob.s
new file mode 100644
index 000000000000..301884756580
--- /dev/null
+++ b/lld/test/ELF/dynamic-list-glob.s
@@ -0,0 +1,22 @@
+# REQUIRES: x86
+
+## Confirm --dynamic-list identifies symbols by entries, including wildcards.
+## Entries need not match a symbol.
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+
+# RUN: echo '{ [fb]o?1*; };' > %t.list
+# RUN: ld.lld -pie --dynamic-list %t.list %t.o -o %t
+# RUN: llvm-readelf --dyn-syms %t | FileCheck %s
+
+# CHECK: Symbol table '.dynsym' contains 4 entries:
+# CHECK: boo1
+# CHECK-NEXT: foo1
+# CHECK-NEXT: foo11
+
+.globl _start, foo1, foo11, foo2, boo1
+foo1:
+foo11:
+foo2:
+boo1:
+_start:
diff --git a/lld/test/ELF/dynamic-list-wildcard.s b/lld/test/ELF/dynamic-list-wildcard.s
deleted file mode 100644
index 7e933cd1e272..000000000000
--- a/lld/test/ELF/dynamic-list-wildcard.s
+++ /dev/null
@@ -1,17 +0,0 @@
-# REQUIRES: x86
-
-# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
-
-# RUN: echo "{ foo1*; };" > %t.list
-# RUN: ld.lld -pie --dynamic-list %t.list %t -o %t
-# RUN: llvm-nm -D %t | FileCheck %s
-
-# CHECK: foo1
-# CHECK-NEXT: foo11
-# CHECK-NOT: {{.}}
-
-.globl _start, foo1, foo11, foo2
-foo1:
-foo11:
-foo2:
-_start:
diff --git a/lld/test/ELF/export-symbols.s b/lld/test/ELF/export-symbols.s
new file mode 100644
index 000000000000..13612390fb67
--- /dev/null
+++ b/lld/test/ELF/export-symbols.s
@@ -0,0 +1,68 @@
+# REQUIRES: x86
+## Verify that the arguments --export-dynamic and --dynamic-list
+## put the correct symbols in the dynamic symbol table.
+
+# RUN: echo "{ *; };" > %t.list
+
+# RUN: echo ".globl shared" > %t.s ; echo "shared = 0xDEADBEEF" >> %t.s
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %t.s -o %t-shared.o
+# RUN: ld.lld --shared %t-shared.o -o %t.so
+
+# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
+## Use --fatal-warnings to confirm no diagnostics are emitted.
+# RUN: ld.lld --fatal-warnings --defsym=defsym=_start %t.so %t.o -o %t.out
+# RUN: ld.lld --fatal-warnings --defsym=defsym=_start %t.so %t.o -o %texport.out --export-dynamic
+# RUN: ld.lld --fatal-warnings --defsym=defsym=_start %t.so %t.o -o %tlist.out --dynamic-list %t.list
+
+# RUN: llvm-readelf --dyn-syms %t.out | FileCheck %s --check-prefix=NO-EXPORT
+# RUN: llvm-readelf --dyn-syms %texport.out | FileCheck %s --check-prefix=EXPORT
+# RUN: llvm-readelf --dyn-syms %tlist.out | FileCheck %s --check-prefix=EXPORT
+
+# NO-EXPORT: Symbol table '.dynsym' contains 3 entries:
+# NO-EXPORT: GLOBAL DEFAULT {{.*}} shared
+# NO-EXPORT-NEXT: WEAK DEFAULT {{.*}} undef_weak
+
+# EXPORT: Symbol table '.dynsym' contains 8 entries:
+# EXPORT: GLOBAL DEFAULT {{.*}} shared
+# EXPORT-NEXT: WEAK DEFAULT {{.*}} undef_weak
+# EXPORT-NEXT: GLOBAL PROTECTED {{.*}} _start
+# EXPORT-NEXT: GLOBAL DEFAULT ABS abs
+# EXPORT-NEXT: GLOBAL DEFAULT {{.*}} common
+# EXPORT-NEXT: WEAK DEFAULT {{.*}} weak_default
+# EXPORT-NEXT: GLOBAL DEFAULT {{.*}} defsym
+
+.weak undef_weak
+
+.weak weak_default
+weak_default:
+
+.weak weak_internal
+.internal weak_internal
+weak_internal:
+
+.weak weak_hidden
+.internal weak_hidden
+weak_hidden:
+
+.weak weak_protected
+.internal weak_protected
+weak_protected:
+
+.globl shared
+
+.local local
+local:
+
+.comm common, 10
+
+.globl abs
+abs = 0xDEADBEEF
+
+.globl hidden
+.hidden hidden
+hidden:
+
+.globl _start
+.protected _start
+_start:
diff --git a/lld/test/ELF/invalid-dynamic-list.test b/lld/test/ELF/invalid-dynamic-list.test
index 3a2f9de6f5ce..ef2bbc74bbb0 100644
--- a/lld/test/ELF/invalid-dynamic-list.test
+++ b/lld/test/ELF/invalid-dynamic-list.test
@@ -1,41 +1,30 @@
-## Different "echo" commands on Windows interpret quoted strings and
-## wildcards in similar but
diff erent way (On Windows, ARGV tokenization
-## and wildcard expansion are not done by the shell but by each command.)
-## Because of that reason, this test fails on some Windows environment.
-## We can't write quoted strings that are interpreted the same way
-## by all echo commands. So, we don't want to run this on Windows.
-
-# REQUIRES: shell
-
-# RUN: mkdir -p %t.dir
-
# RUN: echo > %tempty.list
# RUN: not ld.lld --dynamic-list %tempty.list 2>&1 | FileCheck --check-prefix=EMPTY %s
# EMPTY: error: {{.*}}.list:1: unexpected EOF
-# RUN: echo foobar > %t1
+# RUN: echo 'foobar' > %t1
# RUN: not ld.lld --dynamic-list %t1 2>&1 | FileCheck -check-prefix=ERR1 %s
# ERR1: {{.*}}:1: { expected, but got foobar
-# RUN: echo "{ foobar;" > %t1
-# RUN: not ld.lld --dynamic-list %t1 2>&1 | FileCheck -check-prefix=ERR2 %s
+# RUN: echo '{ foobar;' > %t2
+# RUN: not ld.lld --dynamic-list %t2 2>&1 | FileCheck -check-prefix=ERR2 %s
# ERR2: {{.*}}:1: unexpected EOF
## Missing ';' before '}'
-# RUN: echo "{ foobar }" > %t1
-# RUN: not ld.lld --dynamic-list %t1 2>&1 | FileCheck -check-prefix=ERR3 %s
+# RUN: echo '{ foobar }' > %t3
+# RUN: not ld.lld --dynamic-list %t3 2>&1 | FileCheck -check-prefix=ERR3 %s
# ERR3: {{.*}}:1: ; expected, but got }
## Missing final ';'
-# RUN: echo "{ foobar; }" > %t1
-# RUN: not ld.lld --dynamic-list %t1 2>&1 | FileCheck -check-prefix=ERR4 %s
+# RUN: echo '{ foobar; }' > %t4
+# RUN: not ld.lld --dynamic-list %t4 2>&1 | FileCheck -check-prefix=ERR4 %s
# ERR4: {{.*}}:1: unexpected EOF
-## Missing \" in foobar definition
-# RUN echo "{ \"foobar; };" > %t1
-# RUN: not ld.lld --dynamic-list %t1 2>&1 | FileCheck -check-prefix=ERR5 %s
-# ERR5: {{.*}}:1: unexpected EOF
+## Missing " in foobar definition
+# RUN: echo '{ "foobar; };' > %t5
+# RUN: not ld.lld --dynamic-list %t5 2>&1 | FileCheck -check-prefix=ERR5 %s
+# ERR5: {{.*}}:1: unclosed quote
-# RUN: echo "{ extern \"BOGUS\" { test }; };" > %t1
-# RUN: not ld.lld --dynamic-list %t1 2>&1 | FileCheck -check-prefix=ERR6 %s
+# RUN: echo '{ extern "BOGUS" { test }; };' > %t6
+# RUN: not ld.lld --dynamic-list %t6 2>&1 | FileCheck -check-prefix=ERR6 %s
# ERR6: {{.*}}:1: Unknown language
More information about the llvm-commits
mailing list