1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | elf-dump  --dump-section-data | 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: ('st_name', 0x00000001) # 'common1'
12// CHECK-NEXT: ('st_bind', 0x0)
13// CHECK-NEXT: ('st_type', 0x1)
14// CHECK-NEXT: ('st_other', 0x00)
15// CHECK-NEXT: ('st_shndx',
16// CHECK-NEXT: ('st_value', 0x0000000000000000)
17// CHECK-NEXT: ('st_size', 0x0000000000000001)
18
19
20// Same as common1, but with directives in a different order.
21	.local	common2
22	.type	common2,@object
23	.comm	common2,1,1
24
25// CHECK: ('st_name', 0x00000009) # 'common2'
26// CHECK-NEXT: ('st_bind', 0x0)
27// CHECK-NEXT: ('st_type', 0x1)
28// CHECK-NEXT: ('st_other', 0x00)
29// CHECK-NEXT: ('st_shndx',
30// CHECK-NEXT: ('st_value', 0x0000000000000001)
31// CHECK-NEXT: ('st_size', 0x0000000000000001)
32
33        .local	common6
34        .comm	common6,8,16
35
36// CHECK:      # Symbol 3
37// CHECK-NEXT: (('st_name', 0x00000011) # 'common6'
38// CHECK-NEXT:  ('st_bind', 0x0)
39// CHECK-NEXT:  ('st_type', 0x1)
40// CHECK-NEXT:  ('st_other', 0x00)
41// CHECK-NEXT:  ('st_shndx', 0x0004)
42// CHECK-NEXT:  ('st_value', 0x0000000000000010)
43// CHECK-NEXT:  ('st_size', 0x0000000000000008)
44// CHECK-NEXT: ),
45
46// Test that without an explicit .local we produce a global.
47	.type	common3,@object
48	.comm	common3,4,4
49
50// CHECK: ('st_name', 0x00000019) # 'common3'
51// CHECK-NEXT: ('st_bind', 0x1)
52// CHECK-NEXT: ('st_type', 0x1)
53// CHECK-NEXT: ('st_other', 0x00)
54// CHECK-NEXT: ('st_shndx', 0xfff2)
55// CHECK-NEXT: ('st_value', 0x0000000000000004)
56// CHECK-NEXT: ('st_size', 0x0000000000000004)
57
58
59// Test that without an explicit .local we produce a global, even if the first
60// occurrence is not in a directive.
61	.globl	foo
62	.type	foo,@function
63foo:
64	movsbl	common4+3(%rip), %eax
65
66
67	.type	common4,@object
68	.comm	common4,40,16
69
70// CHECK: ('st_name', 0x00000025) # 'common4'
71// CHECK-NEXT: ('st_bind', 0x1)
72// CHECK-NEXT: ('st_type', 0x1)
73// CHECK-NEXT: ('st_other', 0x00)
74// CHECK-NEXT: ('st_shndx', 0xfff2)
75// CHECK-NEXT: ('st_value', 0x0000000000000010)
76// CHECK-NEXT: ('st_size', 0x0000000000000028)
77
78        .comm	common5,4,4
79
80// CHECK:      # Symbol 9
81// CHECK-NEXT: (('st_name', 0x0000002d) # 'common5'
82// CHECK-NEXT:  ('st_bind', 0x1)
83// CHECK-NEXT:  ('st_type', 0x1)
84// CHECK-NEXT:  ('st_other', 0x00)
85// CHECK-NEXT:  ('st_shndx', 0xfff2)
86// CHECK-NEXT:  ('st_value', 0x0000000000000004)
87// CHECK-NEXT:  ('st_size', 0x0000000000000004)
88// CHECK-NEXT: ),
89