1// REQUIRES: x86 2 3// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o 4// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %p/Inputs/relocation-copy.s -o %t2.o 5// RUN: ld.lld %t2.o -o %t2.so -shared 6// RUN: ld.lld %t.o %t2.so -o %t.exe 7// RUN: llvm-readobj -s -section-data -r %t.exe | FileCheck %s 8 9 .global _start 10_start: 11 .quad x 12 13 .section foo 14 .quad y 15 16 .section bar, "aw" 17 .quad z 18 19// CHECK: Name: .text 20// CHECK-NEXT: Type: SHT_PROGBITS 21// CHECK-NEXT: Flags [ 22// CHECK-NEXT: SHF_ALLOC 23// CHECK-NEXT: SHF_EXECINSTR 24// CHECK-NEXT: ] 25// CHECK-NEXT: Address: 0x201000 26// CHECK-NEXT: Offset: 0x1000 27// CHECK-NEXT: Size: 8 28// CHECK-NEXT: Link: 0 29// CHECK-NEXT: Info: 0 30// CHECK-NEXT: AddressAlignment: 4 31// CHECK-NEXT: EntrySize: 0 32// CHECK-NEXT: SectionData ( 33// CHECK-NEXT: 0000: 10302000 34// CHECK-NEXT: ) 35 36// CHECK: Name: bar 37// CHECK-NEXT: Type: SHT_PROGBITS 38// CHECK-NEXT: Flags [ 39// CHECK-NEXT: SHF_ALLOC 40// CHECK-NEXT: SHF_WRITE 41// CHECK-NEXT: ] 42// CHECK-NEXT: Address: 0x203000 43// CHECK-NEXT: Offset: 0x3000 44// CHECK-NEXT: Size: 8 45// CHECK-NEXT: Link: 0 46// CHECK-NEXT: Info: 0 47// CHECK-NEXT: AddressAlignment: 1 48// CHECK-NEXT: EntrySize: 0 49// CHECK-NEXT: SectionData ( 50// CHECK-NEXT: 0000: 00000000 51// CHECK-NEXT: ) 52 53// CHECK: Name: foo 54// CHECK-NEXT: Type: SHT_PROGBITS 55// CHECK-NEXT: Flags [ 56// CHECK-NEXT: ] 57// CHECK-NEXT: Address: 0x0 58// CHECK-NEXT: Offset: 0x3008 59// CHECK-NEXT: Size: 8 60// CHECK-NEXT: Link: 0 61// CHECK-NEXT: Info: 0 62// CHECK-NEXT: AddressAlignment: 1 63// CHECK-NEXT: EntrySize: 0 64// CHECK-NEXT: SectionData ( 65// CHECK-NEXT: 0000: 00000000 66// CHECK-NEXT: ) 67 68// CHECK: Relocations [ 69// CHECK-NEXT: Section (4) .rela.dyn { 70// CHECK-NEXT: 0x203010 R_X86_64_COPY x 0x0 71// CHECK-NEXT: 0x203000 R_X86_64_64 z 0x0 72// CHECK-NEXT: } 73// CHECK-NEXT: ] 74