3 // RUN: .quad \"basename\"; \
4 // RUN: .quad \"basename@FBSD_1.0\"; \
5 // RUN: .quad \"basename@FBSD_1.1\" " > %t.s
6 // RUN
: llvm-mc
-filetype
=obj
-triple
=x86_64-pc-linux
%t.s
-o
%t.o
7 // RUN
: llvm-mc
-filetype
=obj
-triple
=x86_64-pc-linux
%s
-o
%t2.o
8 // RUN
: echo
"FBSD_1.0 { global: basename; local: *; }; FBSD_1.1 { basename; };" > %t2.ver
9 // RUN
: ld.lld
--shared
--version-script
%t2.ver
%t2.o
-o
%t2.so
10 // RUN
: echo
"FBSD_1.0 { }; FBSD_1.1 { }; LIBPKG_1.3 { };" > %t.ver
11 // RUN
: ld.lld
--shared
%t.o
--version-script
%t.ver
%t2.so
-o
%t.so
12 // RUN
: llvm-readobj
--dyn-symbols
-r
%t.so | FileCheck
%s
14 // Test that each relocation points to the correct version.
16 // CHECK
: Section
({{.*}}) .rela.dyn {
17 // CHECK-NEXT
: R_X86_64_64 basename@FBSD_1.1
0x0
18 // CHECK-NEXT
: R_X86_64_64 basename@FBSD_1.0
0x0
19 // CHECK-NEXT
: R_X86_64_64 basename@FBSD_1.1
0x0
23 // CHECK
: DynamicSymbols
[
24 // CHECK-NEXT
: Symbol
{
28 // CHECK-NEXT
: Binding
:
31 // CHECK-NEXT
: Section
:
33 // CHECK-NEXT
: Symbol
{
34 // CHECK-NEXT
: Name
: basename@FBSD_1.1
37 // CHECK-NEXT
: Binding
:
40 // CHECK-NEXT
: Section
:
42 // CHECK-NEXT
: Symbol
{
43 // CHECK-NEXT
: Name
: basename@FBSD_1.0
46 // CHECK-NEXT
: Binding
:
49 // CHECK-NEXT
: Section
:
51 // CHECK-NEXT
: Symbol
{
52 // CHECK-NEXT
: Name
: basename@FBSD_1.1
55 .global "basename@FBSD_1.0"
58 .global "basename@@FBSD_1.1"