annotate lld/test/ELF/arm-extreme-range-pi-thunk.s @ 192:d7606dcf6fce

Added tag llvm10 for changeset 0572611fdcc8
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 14 Dec 2020 18:01:34 +0900
parents 0572611fdcc8
children 5f17cb93ff66
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // REQUIRES: arm
anatofuz
parents:
diff changeset
2 // RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t
anatofuz
parents:
diff changeset
3 // RUN: echo "SECTIONS {" > %t.script
anatofuz
parents:
diff changeset
4 // RUN: echo " .text_low 0x130 : { *(.text) }" >> %t.script
anatofuz
parents:
diff changeset
5 // RUN: echo " .text_high 0xf0000000 : AT(0x1000) { *(.text_high) }" >> %t.script
anatofuz
parents:
diff changeset
6 // RUN: echo " } " >> %t.script
anatofuz
parents:
diff changeset
7 // RUN: ld.lld --script %t.script --pie --static %t -o %t2
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
8 // RUN: llvm-objdump -d --triple=armv7a-none-linux-gnueabi --no-show-raw-insn %t2 | FileCheck %s
150
anatofuz
parents:
diff changeset
9
anatofuz
parents:
diff changeset
10 // RUN: llvm-mc -arm-add-build-attributes -filetype=obj -triple=thumbv7a-none-linux-gnueabi %s -o %t3
anatofuz
parents:
diff changeset
11 // RUN: ld.lld --script %t.script --pie %t3 -o %t4
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
12 // RUN: llvm-objdump -d --triple=thumbv7a-none-linux-gnueabi --no-show-raw-insn %t4 | FileCheck --check-prefix=CHECK-THUMB %s
150
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 // Check that we can create Arm and Thumb v7a Position Independent Thunks that
anatofuz
parents:
diff changeset
15 // can span the address space without triggering overflow errors. We use an
anatofuz
parents:
diff changeset
16 // AT(0x1000) for .text_high to avoid creating an almost 4Gb size file.
anatofuz
parents:
diff changeset
17 .syntax unified
anatofuz
parents:
diff changeset
18 .text
anatofuz
parents:
diff changeset
19 .global _start
anatofuz
parents:
diff changeset
20 .type _start, %function
anatofuz
parents:
diff changeset
21 _start:
anatofuz
parents:
diff changeset
22 bl high
anatofuz
parents:
diff changeset
23 bx lr
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 .section .text_high, "ax", %progbits
anatofuz
parents:
diff changeset
26 .global high
anatofuz
parents:
diff changeset
27 .type high, %function
anatofuz
parents:
diff changeset
28 high:
anatofuz
parents:
diff changeset
29 bl _start
anatofuz
parents:
diff changeset
30 bx lr
anatofuz
parents:
diff changeset
31
anatofuz
parents:
diff changeset
32 // ARMv7a instructions and relocations.
anatofuz
parents:
diff changeset
33
anatofuz
parents:
diff changeset
34 // CHECK: Disassembly of section .text_low:
anatofuz
parents:
diff changeset
35 // CHECK-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
36 // CHECK-NEXT: <_start>:
150
anatofuz
parents:
diff changeset
37 // CHECK-NEXT: 130: bl #0 <__ARMV7PILongThunk_high>
anatofuz
parents:
diff changeset
38 // CHECK-NEXT: 134: bx lr
anatofuz
parents:
diff changeset
39
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
40 // CHECK: <__ARMV7PILongThunk_high>:
150
anatofuz
parents:
diff changeset
41 // CHECK-NEXT: 138: movw r12, #65208
anatofuz
parents:
diff changeset
42 // CHECK-NEXT: 13c: movt r12, #61439
anatofuz
parents:
diff changeset
43 // 0x140 + 0xEFFF0000 + 0x0000FEB8 + 8 = 0xf0000000 = high
anatofuz
parents:
diff changeset
44 // CHECK-NEXT: 140: add r12, r12, pc
anatofuz
parents:
diff changeset
45 // CHECK-NEXT: 144: bx r12
anatofuz
parents:
diff changeset
46
anatofuz
parents:
diff changeset
47 // CHECK: Disassembly of section .text_high:
anatofuz
parents:
diff changeset
48 // CHECK-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
49 // CHECK-NEXT: <high>:
150
anatofuz
parents:
diff changeset
50 // CHECK-NEXT: f0000000: bl #0 <__ARMV7PILongThunk__start>
anatofuz
parents:
diff changeset
51 // CHECK-NEXT: f0000004: bx lr
anatofuz
parents:
diff changeset
52
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
53 // CHECK: <__ARMV7PILongThunk__start>:
150
anatofuz
parents:
diff changeset
54 // CHECK-NEXT: f0000008: movw r12, #280
anatofuz
parents:
diff changeset
55 // CHECK-NEXT: f000000c: movt r12, #4096
anatofuz
parents:
diff changeset
56 // 0xf0000010 + 0x10000000 + 0x0000118 + 8 = bits32(0x100000130),0x130 = _start
anatofuz
parents:
diff changeset
57 // CHECK-NEXT: f0000010: add r12, r12, pc
anatofuz
parents:
diff changeset
58 // CHECK-NEXT: f0000014: bx r12
anatofuz
parents:
diff changeset
59
anatofuz
parents:
diff changeset
60 // Thumbv7a instructions and relocations
anatofuz
parents:
diff changeset
61 // CHECK-THUMB: Disassembly of section .text_low:
anatofuz
parents:
diff changeset
62 // CHECK-THUMB-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
63 // CHECK-THUMB-NEXT: <_start>:
150
anatofuz
parents:
diff changeset
64 // CHECK-THUMB-NEXT: 130: bl #4
anatofuz
parents:
diff changeset
65 // CHECK-THUMB-NEXT: 134: bx lr
anatofuz
parents:
diff changeset
66 // CHECK-THUMB-NEXT: 136: bmi #-88
anatofuz
parents:
diff changeset
67
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
68 // CHECK-THUMB: <__ThumbV7PILongThunk_high>:
150
anatofuz
parents:
diff changeset
69 // CHECK-THUMB-NEXT: 138: movw r12, #65213
anatofuz
parents:
diff changeset
70 // CHECK-THUMB-NEXT: 13c: movt r12, #61439
anatofuz
parents:
diff changeset
71 // 0x140 + 0xEFFF0000 + 0x0000FEBD + 4 = 0xf0000001 = high
anatofuz
parents:
diff changeset
72 // CHECK-THUMB-NEXT: 140: add r12, pc
anatofuz
parents:
diff changeset
73 // CHECK-THUMB-NEXT: 142: bx r12
anatofuz
parents:
diff changeset
74
anatofuz
parents:
diff changeset
75 // CHECK-THUMB: Disassembly of section .text_high:
anatofuz
parents:
diff changeset
76 // CHECK-THUMB-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
77 // CHECK-THUMB-NEXT: <high>:
150
anatofuz
parents:
diff changeset
78 // CHECK-THUMB-NEXT: f0000000: bl #4
anatofuz
parents:
diff changeset
79 // CHECK-THUMB-NEXT: f0000004: bx lr
anatofuz
parents:
diff changeset
80
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
81 // CHECK-THUMB: <__ThumbV7PILongThunk__start>:
150
anatofuz
parents:
diff changeset
82 // CHECK-THUMB-NEXT: f0000008: movw r12, #285
anatofuz
parents:
diff changeset
83 // CHECK-THUMB-NEXT: f000000c: movt r12, #4096
anatofuz
parents:
diff changeset
84 // 0xf0000010 + 0x10000000 + 0x000011d +4 = bits32(0x100000131),0x131 = _start
anatofuz
parents:
diff changeset
85 // CHECK-THUMB-NEXT: f0000010: add r12, pc
anatofuz
parents:
diff changeset
86 // CHECK-THUMB-NEXT: f0000012: bx r12