1// REQUIRES: x86
2// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t
3// RUN: ld.lld %t -o %tout -shared
4// RUN: llvm-objdump -d %tout | FileCheck -check-prefix=DISASM %s
5// RUN: llvm-readobj -symbols -r %tout | FileCheck -check-prefix=SYMBOL %s
6
7// DISASM: _start:
8// DISASM:    1000:       {{.*}}  callq   10
9// DISASM:    1005:       {{.*}}  callq   8
10// DISASM:    100a:       {{.*}}  callq   3
11// DISASM: Disassembly of section foo:
12// DISASM: __start_foo:
13// DISASM:    100f:       90      nop
14// DISASM:    1010:       90      nop
15// DISASM:    1011:       90      nop
16// DISASM: Disassembly of section bar:
17// DISASM: __start_bar:
18// DISASM:    1012:       90      nop
19// DISASM:    1013:       90      nop
20// DISASM:    1014:       90      nop
21
22
23// SYMBOL:      Relocations [
24// SYMBOL-NEXT:   Section ({{.*}}) .rela.dyn {
25// SYMBOL-NEXT:     0x2010 R_X86_64_64 __stop_zed1 0x0
26// SYMBOL-NEXT:     0x2018 R_X86_64_64 __stop_zed1 0x1
27// SYMBOL-NEXT:     0x2000 R_X86_64_64 __stop_zed2 0x0
28// SYMBOL-NEXT:     0x2008 R_X86_64_64 __stop_zed2 0x1
29// SYMBOL-NEXT:   }
30// SYMBOL-NEXT: ]
31
32// SYMBOL: Symbol {
33// SYMBOL:   Name: __start_bar
34// SYMBOL:   Value: 0x1012
35// SYMBOL:   STV_HIDDEN
36// SYMBOL:   Section: bar
37// SYMBOL: }
38// SYMBOL-NOT:   Section: __stop_bar
39// SYMBOL: Symbol {
40// SYMBOL:   Name: __start_foo
41// SYMBOL:   Value: 0x100F
42// SYMBOL:   STV_HIDDEN
43// SYMBOL:   Section: foo
44// SYMBOL: }
45// SYMBOL: Symbol {
46// SYMBOL:   Name: __stop_foo
47// SYMBOL:   Value: 0x1012
48// STMBOL:   STV_HIDDEN
49// SYMBOL:   Section: foo
50// SYMBOL: }
51
52// SYMBOL: Symbol {
53// SYMBOL:   Name: __stop_zed1
54// SYMBOL:   Value: 0x2010
55// STMBOL:   Other: 0
56// SYMBOL:   Section: zed1
57// SYMBOL: }
58// SYMBOL: Symbol {
59// SYMBOL:   Name: __stop_zed2
60// SYMBOL:   Value: 0x2020
61// STMBOL:   Other: 0
62// SYMBOL:   Section: zed2
63// SYMBOL: }
64
65.hidden __start_foo
66.hidden __stop_foo
67.hidden __start_bar
68.global _start
69.text
70_start:
71	call __start_foo
72	call __stop_foo
73	call __start_bar
74
75.section foo,"ax"
76	nop
77	nop
78	nop
79
80.section bar,"ax"
81	nop
82	nop
83	nop
84
85.section zed1, "aw"
86        .quad __stop_zed2
87        .quad __stop_zed2 + 1
88
89.section zed2, "aw"
90        .quad __stop_zed1
91        .quad __stop_zed1 + 1
92