10
10
# so that we have time to investigate the issue without losing postcommit CI.
11
11
# UNSUPPORTED: system-windows
12
12
13
- # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
13
+ # RUN: rm -rf %t && split-file %s %t && cd %t
14
+ # RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o %t.o
14
15
15
16
## For an executable, --export-dynamic-symbol exports a symbol if it is non-local and defined.
16
- # RUN: ld.lld -pie --export-dynamic-symbol foo --export-dynamic-symbol qux %t.o -o %t
17
- # RUN: llvm-nm -D -p %t | FileCheck %s
17
+ # RUN: ld.lld -pie --export-dynamic-symbol foo --export-dynamic-symbol qux %t.o -o out
18
+ # RUN: llvm-nm -D -p out | FileCheck %s
18
19
# RUN: echo '{ foo; };' > %t1.list
19
20
# RUN: echo '{ foo; qux; };' > %t2.list
20
- # RUN: ld.lld -pie --export-dynamic-symbol-list=%t2.list %t.o -o %t
21
- # RUN: llvm-nm -D -p %t | FileCheck %s
21
+ # RUN: ld.lld -pie --export-dynamic-symbol-list=%t2.list %t.o -o out
22
+ # RUN: llvm-nm -D -p out | FileCheck %s
22
23
23
24
## --export-dynamic exports all non-local defined symbols.
24
25
## --export-dynamic-symbol is shadowed.
53
54
# RUN: ld.lld -shared -Bsymbolic --export-dynamic-symbol-list %t1.list %t.o -o %t.preempt
54
55
# RUN: llvm-objdump -d %t.preempt | FileCheck --check-prefix=PLT1 %s
55
56
57
+ ## Hidden symbols cannot be exported by --export-dynamic-symbol family options.
58
+ # RUN: llvm-mc -filetype=obj -triple=x86_64 hidden.s -o hidden.o
59
+ # RUN: ld.lld -pie %t.o hidden.o --dynamic-list hidden.list -o out.hidden
60
+ # RUN: llvm-readelf -s out.hidden | FileCheck %s --check-prefix=HIDDEN
61
+
62
+ # HIDDEN: '.dynsym' contains 2 entries:
63
+ # HIDDEN: NOTYPE GLOBAL DEFAULT [[#]] _end
64
+ # HIDDEN: '.symtab' contains 6 entries:
65
+ # HIDDEN: FUNC LOCAL HIDDEN [[#]] foo
66
+ # HIDDEN-NEXT: NOTYPE LOCAL HIDDEN [[#]] _DYNAMIC
67
+ # HIDDEN-NEXT: NOTYPE GLOBAL DEFAULT [[#]] _start
68
+ # HIDDEN-NEXT: FUNC GLOBAL DEFAULT [[#]] qux
69
+ # HIDDEN-NEXT: NOTYPE GLOBAL DEFAULT [[#]] _end
70
+
56
71
## 'nomatch' does not match any symbol. Don't warn.
57
72
# RUN: ld.lld --fatal-warnings -shared -Bsymbolic-functions --export-dynamic-symbol nomatch %t.o -o %t.nopreempt2
58
73
# RUN: llvm-objdump -d %t.nopreempt2 | FileCheck --check-prefix=NOPLT %s
80
95
# NOPLT-NOT: <foo@plt>
81
96
# NOPLT-NOT: <qux@plt>
82
97
98
+ #--- a.s
83
99
.global _start, foo, qux
84
100
.type foo, @function
85
101
.type qux, @function
@@ -88,3 +104,13 @@ _start:
88
104
call qux
89
105
foo:
90
106
qux:
107
+
108
+ #--- hidden.s
109
+ .hidden foo
110
+
111
+ .data
112
+ .quad _DYNAMIC
113
+ .quad _end
114
+
115
+ #--- hidden.list
116
+ {foo;_end;_DYNAMIC;};
0 commit comments