xref: /llvm-project/lld/test/ELF/x86-64-reloc-size.s (revision 75cdab6dc2453a508157a9c383b93373a93078d6)
1# REQUIRES: x86
2# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
3# RUN: ld.lld %t.o -o %t
4# RUN: llvm-readobj -r %t | FileCheck --check-prefix=NORELOC %s
5# RUN: llvm-readelf -x .data -x nonalloc %t | FileCheck --check-prefix=DATA %s
6# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t | FileCheck --check-prefix=DISASM %s
7
8# RUN: ld.lld -shared %t.o -o %t.so
9# RUN: llvm-readobj -r %t.so | FileCheck --check-prefix=RELOC2 %s
10# RUN: llvm-readelf -x .data %t.so | FileCheck --check-prefix=DATA2 %s
11# RUN: llvm-objdump --no-print-imm-hex -d --no-show-raw-insn %t.so | FileCheck --check-prefix=DISASM2 %s
12
13# NORELOC:      Relocations [
14# NORELOC-NEXT: ]
15
16# DATA:      section '.data':
17# DATA-NEXT: 0x002031ac 00000000 00000000 00000000 00000000
18# DATA-NEXT: 0x002031bc 00000000 00000000 00001900 00000000
19# DATA-NEXT: 0x002031cc 00001b00 00000000 00001900 00000000
20# DATA-NEXT: 0x002031dc 00001b00 00000000 0000
21
22# DATA:      section 'nonalloc':
23# DATA-NEXT: 0x00000000 1a000000 00000000
24
25# DISASM:      <_start>:
26# DISASM-NEXT:   movl 25, %eax
27# DISASM-NEXT:   movl 27, %eax
28# DISASM-NEXT:   movl 25, %eax
29# DISASM-NEXT:   movl 27, %eax
30
31# RELOC2:      Relocations [
32# RELOC2-NEXT: Section ({{.*}}) .rela.dyn {
33# RELOC2-NEXT:    0x2333 R_X86_64_SIZE32 foo 0xFFFFFFFFFFFFFFFF
34# RELOC2-NEXT:    0x233A R_X86_64_SIZE32 foo 0x1
35# RELOC2-NEXT:    0x440A R_X86_64_SIZE64 foo 0xFFFFFFFFFFFFFFFF
36# RELOC2-NEXT:    0x4412 R_X86_64_SIZE64 foo 0x1
37# RELOC2-NEXT:  }
38# RELOC2-NEXT: ]
39
40# DATA2:      section '.data':
41# DATA2-NEXT: 00000000 00000000 00000000 00000000
42# DATA2-NEXT: 00000000 00000000 00000000 00000000
43# DATA2-NEXT: 00000000 00000000 00001900 00000000
44# DATA2-NEXT: 00001b00 00000000 0000
45
46# DISASM2:      <_start>:
47# DISASM2-NEXT:   movl 0, %eax
48# DISASM2-NEXT:   movl 0, %eax
49# DISASM2-NEXT:   movl 25, %eax
50# DISASM2-NEXT:   movl 27, %eax
51
52.data
53.global foo, foohidden
54.hidden foohidden
55.type foo,%object
56.size foo,26
57.type foohidden,%object
58.size foohidden,26
59foo:
60foohidden:
61.zero 26
62
63  // R_X86_64_SIZE64:
64  .quad foo@SIZE-1
65  .quad foo@SIZE+1
66  .quad foohidden@SIZE-1
67  .quad foohidden@SIZE+1
68
69.section test,"axw"
70.globl _start
71_start:
72  // R_X86_64_SIZE32:
73  movl foo@SIZE-1,%eax
74  movl foo@SIZE+1,%eax
75  movl foohidden@SIZE-1,%eax
76  movl foohidden@SIZE+1,%eax
77
78.section nonalloc
79  .quad foo@SIZE
80