forked from OSchip/llvm-project
[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
This commit is contained in:
parent
a0e3ceea6c
commit
be44b79257
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -1,41 +1,30 @@
|
|||
## Different "echo" commands on Windows interpret quoted strings and
|
||||
## wildcards in similar but different 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
|
||||
|
|
Loading…
Reference in New Issue