1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj  -t -r --expand-relocs | FileCheck %s
2
3// Local symbol overriding section.
4.section x1,"a",@progbits
5.local  x1
6.comm   x1,4,4
7.long x1  // reloc: .bss + 0
8
9// Section declared after local. Local symbol wins.
10.local  x2
11.comm   x2,4,4
12.section x2,"a",@progbits
13.long x2  // reloc: .bss + 4
14
15// No overriding symbol.
16.section x3,"a",@progbits
17.long x3  // reloc: x3(section) + 0
18
19// Global vs section.
20.section x4,"a",@progbits
21.long 0
22.globl x4
23.section foo, "a", @progbits
24x4:
25.long 0
26.long x4  // reloc: x4(global) + 0
27
28// Global vs implicit section
29.globl .data
30.data:
31.long 42
32.long .data // reloc: .data(global) + 0
33
34// CHECK: Relocations [
35// CHECK:   Section (4) .relax1 {
36// CHECK:     Relocation {
37// CHECK:       Offset: 0x0
38// CHECK:       Type: R_X86_64_32 (10)
39// CHECK:       Symbol: .bss (3)
40// CHECK:       Addend: 0x0
41// CHECK:     }
42// CHECK:   }
43// CHECK:   Section (7) .relax2 {
44// CHECK:     Relocation {
45// CHECK:       Offset: 0x0
46// CHECK:       Type: R_X86_64_32 (10)
47// CHECK:       Symbol: .bss (3)
48// CHECK:       Addend: 0x4
49// CHECK:     }
50// CHECK:   }
51// CHECK:   Section (9) .relax3 {
52// CHECK:     Relocation {
53// CHECK:       Offset: 0x0
54// CHECK:       Type: R_X86_64_32 (10)
55// CHECK:       Symbol: x3 (4)
56// CHECK:       Addend: 0x0
57// CHECK:     }
58// CHECK:   }
59// CHECK:   Section (12) .relafoo {
60// CHECK:     Relocation {
61// CHECK:       Offset: 0x4
62// CHECK:       Type: R_X86_64_32 (10)
63// CHECK:       Symbol: x4 (6)
64// CHECK:       Addend: 0x0
65// CHECK:     }
66// CHECK:     Relocation {
67// CHECK:       Offset: 0xC
68// CHECK:       Type: R_X86_64_32 (10)
69// CHECK:       Symbol: .data (5)
70// CHECK:       Addend: 0x0
71// CHECK:     }
72// CHECK:   }
73// CHECK: ]
74// CHECK: Symbols [
75// CHECK:   Symbol {
76// CHECK:     Name:  (0)
77// CHECK:     Value: 0x0
78// CHECK:     Size: 0
79// CHECK:     Binding: Local (0x0)
80// CHECK:     Type: None (0x0)
81// CHECK:     Other: 0
82// CHECK:     Section: Undefined (0x0)
83// CHECK:   }
84// CHECK:   Symbol {
85// CHECK:     Name: x1 (67)
86// CHECK:     Value: 0x0
87// CHECK:     Size: 4
88// CHECK:     Binding: Local (0x0)
89// CHECK:     Type: Object (0x1)
90// CHECK:     Other: 0
91// CHECK:     Section: .bss (0x5)
92// CHECK:   }
93// CHECK:   Symbol {
94// CHECK:     Name: x2 (59)
95// CHECK:     Value: 0x4
96// CHECK:     Size: 4
97// CHECK:     Binding: Local (0x0)
98// CHECK:     Type: Object (0x1)
99// CHECK:     Other: 0
100// CHECK:     Section: .bss (0x5)
101// CHECK:   }
102// CHECK:   Symbol {
103// CHECK:     Name:  (0)
104// CHECK:     Value: 0x0
105// CHECK:     Size: 0
106// CHECK:     Binding: Local (0x0)
107// CHECK:     Type: Section (0x3)
108// CHECK:     Other: 0
109// CHECK:     Section: .bss (0x5)
110// CHECK:   }
111// CHECK:   Symbol {
112// CHECK:     Name:  (0)
113// CHECK:     Value: 0x0
114// CHECK:     Size: 0
115// CHECK:     Binding: Local (0x0)
116// CHECK:     Type: Section (0x3)
117// CHECK:     Other: 0
118// CHECK:     Section: x3 (0x8)
119// CHECK:   }
120// CHECK:   Symbol {
121// CHECK:     Name: .data (37)
122// CHECK:     Value: 0x8
123// CHECK:     Size: 0
124// CHECK:     Binding: Global (0x1)
125// CHECK:     Type: None (0x0)
126// CHECK:     Other: 0
127// CHECK:     Section: foo (0xB)
128// CHECK:   }
129// CHECK:   Symbol {
130// CHECK:     Name: x4 (43)
131// CHECK:     Value: 0x0
132// CHECK:     Size: 0
133// CHECK:     Binding: Global (0x1)
134// CHECK:     Type: None (0x0)
135// CHECK:     Other: 0
136// CHECK:     Section: foo (0xB)
137// CHECK:   }
138// CHECK: ]
139