1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -t | FileCheck %s
2
3
4	.text
5
6// Test that this produces a regular local symbol.
7	.type	common1,@object
8	.local	common1
9	.comm	common1,1,1
10
11// CHECK:        Symbol {
12// CHECK:          Name: common1
13// CHECK-NEXT:     Value: 0x0
14// CHECK-NEXT:     Size: 1
15// CHECK-NEXT:     Binding: Local
16// CHECK-NEXT:     Type: Object
17// CHECK-NEXT:     Other: 0
18// CHECK-NEXT:     Section:
19// CHECK-NEXT:   }
20
21
22// Same as common1, but with directives in a different order.
23	.local	common2
24	.type	common2,@object
25	.comm	common2,1,1
26
27// CHECK:        Symbol {
28// CHECK:          Name: common2
29// CHECK-NEXT:     Value: 0x1
30// CHECK-NEXT:     Size: 1
31// CHECK-NEXT:     Binding: Local
32// CHECK-NEXT:     Type: Object
33// CHECK-NEXT:     Other: 0
34// CHECK-NEXT:     Section:
35// CHECK-NEXT:   }
36
37
38        .local	common6
39        .comm	common6,8,16
40
41// CHECK:        Symbol {
42// CHECK:          Name: common6
43// CHECK-NEXT:     Value: 0x10
44// CHECK-NEXT:     Size: 8
45// CHECK-NEXT:     Binding: Local
46// CHECK-NEXT:     Type: Object
47// CHECK-NEXT:     Other: 0
48// CHECK-NEXT:     Section: .bss (0x4)
49// CHECK-NEXT:   }
50
51
52// Test that without an explicit .local we produce a global.
53	.type	common3,@object
54	.comm	common3,4,4
55
56// CHECK:        Symbol {
57// CHECK:          Name: common3
58// CHECK-NEXT:     Value: 0x4
59// CHECK-NEXT:     Size: 4
60// CHECK-NEXT:     Binding: Global
61// CHECK-NEXT:     Type: Object
62// CHECK-NEXT:     Other: 0
63// CHECK-NEXT:     Section: Common (0xFFF2)
64// CHECK-NEXT:   }
65
66
67// Test that without an explicit .local we produce a global, even if the first
68// occurrence is not in a directive.
69	.globl	foo
70	.type	foo,@function
71foo:
72	movsbl	common4+3(%rip), %eax
73
74
75	.type	common4,@object
76	.comm	common4,40,16
77
78// CHECK:        Symbol {
79// CHECK:          Name: common4
80// CHECK-NEXT:     Value: 0x10
81// CHECK-NEXT:     Size: 40
82// CHECK-NEXT:     Binding: Global
83// CHECK-NEXT:     Type: Object
84// CHECK-NEXT:     Other: 0
85// CHECK-NEXT:     Section: Common (0xFFF2)
86// CHECK-NEXT:   }
87
88
89        .comm	common5,4,4
90
91// CHECK:        Symbol {
92// CHECK:          Name: common5
93// CHECK-NEXT:     Value: 0x4
94// CHECK-NEXT:     Size: 4
95// CHECK-NEXT:     Binding: Global
96// CHECK-NEXT:     Type: Object
97// CHECK-NEXT:     Other: 0
98// CHECK-NEXT:     Section: Common (0xFFF2)
99// CHECK-NEXT:   }
100