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