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