|
3 | 3 | # RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o
|
4 | 4 | # RUN: llvm-mc -filetype=obj -triple=x86_64 b.s -o b.o
|
5 | 5 | # RUN: ld.lld -shared --version-script=b.ver b.o -o b.so
|
6 |
| -# RUN: ld.lld --version-script=a.ver a.o b.so -o a |
7 |
| -# RUN: llvm-readelf --dyn-syms a | FileCheck %s |
| 6 | +# RUN: ld.lld --version-script=a.ver a.o b.so -o a0 |
| 7 | +# RUN: llvm-nm -D a0 | FileCheck %s |
| 8 | +# RUN: ld.lld --version-script=a.ver b.so a.o -o a1 |
| 9 | +# RUN: llvm-nm -D a1 | FileCheck %s |
8 | 10 |
|
9 |
| -# CHECK: 1: 0000000000000000 0 NOTYPE GLOBAL DEFAULT UND b2 |
10 |
| -# CHECK-NEXT: 2: {{.*}} 0 NOTYPE GLOBAL DEFAULT [[#]] a1 |
11 |
| -# CHECK-NEXT: 3: {{.*}} 0 NOTYPE GLOBAL DEFAULT [[#]] a2 |
12 |
| -# CHECK-NEXT: 4: {{.*}} 0 NOTYPE GLOBAL DEFAULT [[#]] b1 |
13 |
| -# CHECK-NEXT: 5: {{.*}} 0 NOTYPE GLOBAL DEFAULT [[#]] c2@@v2 |
14 |
| -# CHECK-NEXT: 6: {{.*}} 0 NOTYPE GLOBAL DEFAULT [[#]] c1@v1 |
| 11 | +# CHECK: T a1{{$}} |
| 12 | +# CHECK-NEXT: T a2{{$}} |
| 13 | +# CHECK-NEXT: T b1{{$}} |
| 14 | +# CHECK-NEXT: U b2{{$}} |
| 15 | +# CHECK-NEXT: T c1@v1 |
| 16 | +# CHECK-NEXT: T c2@@v2 |
| 17 | +# CHECK-NEXT: T c3{{$}} |
| 18 | +# CHECK-NEXT: T c4@@v3 |
15 | 19 | # CHECK-NOT: {{.}}
|
16 | 20 |
|
17 | 21 | #--- a.s
|
18 |
| -.globl _start, a1, a2, a3, b1, c1, c2 |
| 22 | +.globl _start, a1, a2, a3, b1, c1, c2, c3, c4 |
19 | 23 | _start:
|
20 |
| -a1: a2: |
| 24 | +a1: a2: ## defined in b.so and a |
21 | 25 | .hidden a3
|
22 |
| -a3: |
23 |
| -b1: |
| 26 | +a3: ## defined in b.so; hidden in a |
| 27 | +b1: ## protected in b.so; defined in a |
24 | 28 | .symver c1, c1@v1, remove
|
25 |
| -c1: |
26 |
| -c2: |
| 29 | +c1: ## non-default version in b.so and a |
| 30 | +c2: ## default version in b.so and a |
| 31 | +c3: ## default version in b.so; unversioned in a |
| 32 | +c4: ## default version in b.so; another version in a |
27 | 33 |
|
28 | 34 | .data
|
29 | 35 | .quad b2
|
30 | 36 |
|
31 | 37 | #--- a.ver
|
32 | 38 | v1 {};
|
33 | 39 | v2 { c2; };
|
| 40 | +v3 { c4; }; |
34 | 41 |
|
35 | 42 | #--- b.s
|
36 |
| -.globl a1, a2, a3, b1, b2, c1, c2 |
| 43 | +.globl a1, a2, a3, b1, b2, c1, c2, c3, c4 |
37 | 44 | .type a1,@function
|
38 | 45 | a1: a2: a3:
|
39 | 46 | .protected b1, b2
|
|
42 | 49 | .symver c1, c1@v1
|
43 | 50 | c1:
|
44 | 51 | c2:
|
| 52 | +c3: |
| 53 | +c4: |
45 | 54 |
|
46 | 55 | #--- b.ver
|
47 | 56 | v1 {};
|
48 |
| -v2 { c2; }; |
| 57 | +v2 { c2; c3; c4; }; |
0 commit comments