xref: /llvm-project/lld/test/ELF/obj-preempt-dso.s (revision 3510c48ad58bbfd39746ab73280c3da20d1ee9c8)
1# REQUIRES: x86
2# RUN: rm -rf %t && split-file %s %t && cd %t
3# RUN: llvm-mc -filetype=obj -triple=x86_64 a.s -o a.o
4# RUN: llvm-mc -filetype=obj -triple=x86_64 b.s -o b.o
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 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
10
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
19# CHECK-NOT:  {{.}}
20
21#--- a.s
22.globl _start, a1, a2, a3, b1, c1, c2, c3, c4
23_start:
24a1: a2: ## defined in b.so and a
25.hidden a3
26a3: ## defined in b.so; hidden in a
27b1: ## protected in b.so; defined in a
28.symver c1, c1@v1, remove
29c1: ## non-default version in b.so and a
30c2: ## default version in b.so and a
31c3: ## default version in b.so; unversioned in a
32c4: ## default version in b.so; another version in a
33
34.data
35  .quad b2
36
37#--- a.ver
38v1 {};
39v2 { c2; };
40v3 { c4; };
41
42#--- b.s
43.globl a1, a2, a3, b1, b2, c1, c2, c3, c4
44.type a1,@function
45a1: a2: a3:
46.protected b1, b2
47b1:
48b2:
49.symver c1, c1@v1
50c1:
51c2:
52c3:
53c4:
54
55#--- b.ver
56v1 {};
57v2 { c2; c3; c4; };
58