Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / lld / test / ELF / verdef.s
blobdd1f1d41f01481a9fd773a841cd6f6c782f0eedc
1 # REQUIRES: x86
2 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
3 # RUN: echo "LIBSAMPLE_1.0 { global: a; local: *; };" > %t.script
4 # RUN: echo "LIBSAMPLE_2.0 { global: b; local: *; };" >> %t.script
5 # RUN: echo "LIBSAMPLE_3.0 { global: c; local: *; };" >> %t.script
6 # RUN: ld.lld --hash-style=sysv --version-script %t.script -shared -soname shared %t.o -o %t.so
7 # RUN: llvm-readobj -V --dyn-syms %t.so | FileCheck --check-prefix=DSO %s
9 # DSO: VersionSymbols [
10 # DSO-NEXT: Symbol {
11 # DSO-NEXT: Version: 0
12 # DSO-NEXT: Name:
13 # DSO-NEXT: }
14 # DSO-NEXT: Symbol {
15 # DSO-NEXT: Version: 2
16 # DSO-NEXT: Name: a@@LIBSAMPLE_1.0
17 # DSO-NEXT: }
18 # DSO-NEXT: Symbol {
19 # DSO-NEXT: Version: 3
20 # DSO-NEXT: Name: b@@LIBSAMPLE_2.0
21 # DSO-NEXT: }
22 # DSO-NEXT: Symbol {
23 # DSO-NEXT: Version: 4
24 # DSO-NEXT: Name: c@@LIBSAMPLE_3.0
25 # DSO-NEXT: }
26 # DSO-NEXT: ]
27 # DSO-NEXT: VersionDefinitions [
28 # DSO-NEXT: Definition {
29 # DSO-NEXT: Version: 1
30 # DSO-NEXT: Flags [ (0x1)
31 # DSO-NEXT: Base (0x1)
32 # DSO-NEXT: ]
33 # DSO-NEXT: Index: 1
34 # DSO-NEXT: Hash: 127830196
35 # DSO-NEXT: Name: shared
36 # DSO-NEXT: Predecessors: []
37 # DSO-NEXT: }
38 # DSO-NEXT: Definition {
39 # DSO-NEXT: Version: 1
40 # DSO-NEXT: Flags [ (0x0)
41 # DSO-NEXT: ]
42 # DSO-NEXT: Index: 2
43 # DSO-NEXT: Hash: 98457184
44 # DSO-NEXT: Name: LIBSAMPLE_1.0
45 # DSO-NEXT: Predecessors: []
46 # DSO-NEXT: }
47 # DSO-NEXT: Definition {
48 # DSO-NEXT: Version: 1
49 # DSO-NEXT: Flags [ (0x0)
50 # DSO-NEXT: ]
51 # DSO-NEXT: Index: 3
52 # DSO-NEXT: Hash: 98456416
53 # DSO-NEXT: Name: LIBSAMPLE_2.0
54 # DSO-NEXT: Predecessors: []
55 # DSO-NEXT: }
56 # DSO-NEXT: Definition {
57 # DSO-NEXT: Version: 1
58 # DSO-NEXT: Flags [ (0x0)
59 # DSO-NEXT: ]
60 # DSO-NEXT: Index: 4
61 # DSO-NEXT: Hash: 98456672
62 # DSO-NEXT: Name: LIBSAMPLE_3.0
63 # DSO-NEXT: Predecessors: []
64 # DSO-NEXT: }
65 # DSO-NEXT: ]
66 # DSO-NEXT: VersionRequirements [
67 # DSO-NEXT: ]
69 ## Check that we can link agains DSO we produced.
70 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %S/Inputs/verdef.s -o %tmain.o
71 # RUN: ld.lld --hash-style=sysv %tmain.o %t.so -o %tout
72 # RUN: llvm-readobj -V %tout | FileCheck --check-prefix=MAIN %s
74 # MAIN: VersionSymbols [
75 # MAIN-NEXT: Symbol {
76 # MAIN-NEXT: Version: 0
77 # MAIN-NEXT: Name:
78 # MAIN-NEXT: }
79 # MAIN-NEXT: Symbol {
80 # MAIN-NEXT: Version: 2
81 # MAIN-NEXT: Name: a@LIBSAMPLE_1.0
82 # MAIN-NEXT: }
83 # MAIN-NEXT: Symbol {
84 # MAIN-NEXT: Version: 3
85 # MAIN-NEXT: Name: b@LIBSAMPLE_2.0
86 # MAIN-NEXT: }
87 # MAIN-NEXT: Symbol {
88 # MAIN-NEXT: Version: 4
89 # MAIN-NEXT: Name: c@LIBSAMPLE_3.0
90 # MAIN-NEXT: }
91 # MAIN-NEXT: ]
92 # MAIN-NEXT: VersionDefinitions [
93 # MAIN-NEXT: ]
95 # RUN: echo "VERSION {" > %t.script
96 # RUN: echo "LIBSAMPLE_1.0 { global: a; local: *; };" >> %t.script
97 # RUN: echo "LIBSAMPLE_2.0 { global: b; local: *; };" >> %t.script
98 # RUN: echo "LIBSAMPLE_3.0 { global: c; local: *; };" >> %t.script
99 # RUN: echo "}" >> %t.script
100 # RUN: ld.lld --hash-style=sysv --script %t.script -shared -soname shared %t.o -o %t2.so
101 # RUN: llvm-readobj -V --dyn-syms %t2.so | FileCheck --check-prefix=DSO %s
103 .globl a
104 .type a,@function
106 retq
108 .globl b
109 .type b,@function
111 retq
113 .globl c
114 .type c,@function
116 retq