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