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