1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -S --symbols -r --expand-relocs - | FileCheck %s 2 3.section foo, "aG", @progbits, f1, comdat 4.section foo, "G", @progbits, f2, comdat 5.section bar 6.long foo 7 8// Test that the relocation points to the first section foo. 9 10// The first seciton foo has index 6 11// CHECK: Section { 12// CHECK: Index: 4 13// CHECK-NEXT: Name: foo 14// CHECK-NEXT: Type: SHT_PROGBITS (0x1) 15// CHECK-NEXT: Flags [ (0x202) 16// CHECK-NEXT: SHF_ALLOC (0x2) 17// CHECK-NEXT: SHF_GROUP (0x200) 18// CHECK-NEXT: ] 19// CHECK-NEXT: Address: 0x0 20// CHECK-NEXT: Offset: 21// CHECK-NEXT: Size: 0 22// CHECK-NEXT: Link: 0 23// CHECK-NEXT: Info: 0 24// CHECK-NEXT: AddressAlignment: 1 25// CHECK-NEXT: EntrySize: 0 26// CHECK-NEXT: } 27// CHECK: Section { 28// CHECK: Index: 6 29// CHECK-NEXT: Name: foo 30// CHECK-NEXT: Type: SHT_PROGBITS (0x1) 31// CHECK-NEXT: Flags [ (0x200) 32// CHECK-NEXT: SHF_GROUP (0x200) 33// CHECK-NEXT: ] 34// CHECK-NEXT: Address: 0x0 35// CHECK-NEXT: Offset: 36// CHECK-NEXT: Size: 0 37// CHECK-NEXT: Link: 0 38// CHECK-NEXT: Info: 0 39// CHECK-NEXT: AddressAlignment: 1 40// CHECK-NEXT: EntrySize: 0 41// CHECK-NEXT: } 42 43// The relocation points to symbol 3 44// CHECK: Relocations [ 45// CHECK-NEXT: Section ({{.*}}) .relabar { 46// CHECK-NEXT: Relocation { 47// CHECK-NEXT: Offset: 0x0 48// CHECK-NEXT: Type: R_X86_64_32 (10) 49// CHECK-NEXT: Symbol: foo (3) 50// CHECK-NEXT: Addend: 0x0 51// CHECK-NEXT: } 52// CHECK-NEXT: } 53// CHECK-NEXT: ] 54 55// Symbol 3 is section 6 56// CHECK: Symbols [ 57// CHECK-NEXT: Symbol { 58// CHECK-NEXT: Name: (0) 59// CHECK-NEXT: Value: 0x0 60// CHECK-NEXT: Size: 0 61// CHECK-NEXT: Binding: Local (0x0) 62// CHECK-NEXT: Type: None (0x0) 63// CHECK-NEXT: Other: 0 64// CHECK-NEXT: Section: Undefined (0x0) 65// CHECK-NEXT: } 66// CHECK-NEXT: Symbol { 67// CHECK-NEXT: Name: f1 68// CHECK-NEXT: Value: 0x0 69// CHECK-NEXT: Size: 0 70// CHECK-NEXT: Binding: Local (0x0) 71// CHECK-NEXT: Type: None (0x0) 72// CHECK-NEXT: Other: 0 73// CHECK-NEXT: Section: .group 74// CHECK-NEXT: } 75// CHECK-NEXT: Symbol { 76// CHECK-NEXT: Name: f2 77// CHECK-NEXT: Value: 0x0 78// CHECK-NEXT: Size: 0 79// CHECK-NEXT: Binding: Local (0x0) 80// CHECK-NEXT: Type: None (0x0) 81// CHECK-NEXT: Other: 0 82// CHECK-NEXT: Section: .group 83// CHECK-NEXT: } 84// CHECK-NEXT: Symbol { 85// CHECK-NEXT: Name: foo (0) 86// CHECK-NEXT: Value: 0x0 87// CHECK-NEXT: Size: 0 88// CHECK-NEXT: Binding: Local (0x0) 89// CHECK-NEXT: Type: Section (0x3) 90// CHECK-NEXT: Other: 0 91// CHECK-NEXT: Section: foo (0x4) 92// CHECK-NEXT: } 93// CHECK-NEXT: ] 94