1# REQUIRES: x86
2
3# RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
4# RUN: echo "{ foo; zed; };" > %t.list
5# RUN: echo "{ global: foo; bar; local: *; };" > %t.vers
6# RUN: ld.lld --hash-style=sysv -fatal-warnings -dynamic-list %t.list -version-script %t.vers -shared %t.o -o %t.so
7# RUN: llvm-readobj -r %t.so | FileCheck --check-prefix=RELOCS %s
8# RUN: llvm-readobj --dyn-syms  %t.so | FileCheck --check-prefix=DYNSYMS %s
9
10# RUN: echo "V1 { global: foo; bar; local: *; };" > %t.vers
11# RUN: ld.lld --hash-style=sysv -fatal-warnings -dynamic-list %t.list -version-script %t.vers -shared %t.o -o %t.so
12# RUN: llvm-readobj -r %t.so | FileCheck --check-prefix=RELOCS %s
13# RUN: llvm-readobj --dyn-syms  %t.so | FileCheck --check-prefix=DYNSYMS %s
14
15# RELOCS:      Relocations [
16# RELOCS-NEXT:   Section ({{.*}}) .rela.plt {
17# RELOCS-NEXT:     R_X86_64_JUMP_SLOT foo{{.*}} 0x0
18# RELOCS-NEXT:     R_X86_64_JUMP_SLOT ext 0x0
19# RELOCS-NEXT:   }
20# RELOCS-NEXT: ]
21
22# DYNSYMS:      DynamicSymbols [
23# DYNSYMS-NEXT:   Symbol {
24# DYNSYMS-NEXT:     Name:
25# DYNSYMS-NEXT:     Value: 0x0
26# DYNSYMS-NEXT:     Size: 0
27# DYNSYMS-NEXT:     Binding: Local
28# DYNSYMS-NEXT:     Type: None
29# DYNSYMS-NEXT:     Other: 0
30# DYNSYMS-NEXT:     Section: Undefined
31# DYNSYMS-NEXT:   }
32# DYNSYMS-NEXT:   Symbol {
33# DYNSYMS-NEXT:     Name: foo
34# DYNSYMS-NEXT:     Value:
35# DYNSYMS-NEXT:     Size:
36# DYNSYMS-NEXT:     Binding: Global
37# DYNSYMS-NEXT:     Type:
38# DYNSYMS-NEXT:     Other:
39# DYNSYMS-NEXT:     Section:
40# DYNSYMS-NEXT:   }
41# DYNSYMS-NEXT:   Symbol {
42# DYNSYMS-NEXT:     Name: bar
43# DYNSYMS-NEXT:     Value:
44# DYNSYMS-NEXT:     Size:
45# DYNSYMS-NEXT:     Binding: Global
46# DYNSYMS-NEXT:     Type:
47# DYNSYMS-NEXT:     Other:
48# DYNSYMS-NEXT:     Section:
49# DYNSYMS-NEXT:   }
50# DYNSYMS-NEXT:   Symbol {
51# DYNSYMS-NEXT:     Name: ext
52# DYNSYMS-NEXT:     Value:
53# DYNSYMS-NEXT:     Size:
54# DYNSYMS-NEXT:     Binding: Global
55# DYNSYMS-NEXT:     Type:
56# DYNSYMS-NEXT:     Other:
57# DYNSYMS-NEXT:     Section:
58# DYNSYMS-NEXT:   }
59# DYNSYMS-NEXT: ]
60
61        .globl foo
62foo:
63        ret
64
65        .globl bar
66bar:
67        ret
68
69        .globl baz
70baz:
71        ret
72
73        .globl zed
74zed:
75        ret
76
77        call   foo@PLT
78        call   bar@PLT
79        call   baz@PLT
80        call   zed@PLT
81        call   ext@PLT
82