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