annotate lld/test/ELF/aarch64-plt.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 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // REQUIRES: aarch64
anatofuz
parents:
diff changeset
2 // RUN: llvm-mc -filetype=obj -triple=aarch64-pc-freebsd %s -o %t.o
anatofuz
parents:
diff changeset
3 // RUN: llvm-mc -filetype=obj -triple=aarch64-pc-freebsd %p/Inputs/plt-aarch64.s -o %t2.o
anatofuz
parents:
diff changeset
4 // RUN: ld.lld -shared %t2.o -soname=t2.so -o %t2.so
anatofuz
parents:
diff changeset
5 // RUN: ld.lld -shared %t.o %t2.so -o %t.so
anatofuz
parents:
diff changeset
6 // RUN: ld.lld %t.o %t2.so -o %t.exe
anatofuz
parents:
diff changeset
7 // RUN: llvm-readobj -S -r %t.so | FileCheck --check-prefix=CHECKDSO %s
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
8 // RUN: llvm-objdump -s --section=.got.plt %t.so | FileCheck --check-prefix=DUMPDSO %s
150
anatofuz
parents:
diff changeset
9 // RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.so | FileCheck --check-prefix=DISASMDSO %s
anatofuz
parents:
diff changeset
10 // RUN: llvm-readobj -S -r %t.exe | FileCheck --check-prefix=CHECKEXE %s
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
11 // RUN: llvm-objdump -s --section=.got.plt %t.exe | FileCheck --check-prefix=DUMPEXE %s
150
anatofuz
parents:
diff changeset
12 // RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.exe | FileCheck --check-prefix=DISASMEXE %s
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14 // CHECKDSO: Name: .plt
anatofuz
parents:
diff changeset
15 // CHECKDSO-NEXT: Type: SHT_PROGBITS
anatofuz
parents:
diff changeset
16 // CHECKDSO-NEXT: Flags [
anatofuz
parents:
diff changeset
17 // CHECKDSO-NEXT: SHF_ALLOC
anatofuz
parents:
diff changeset
18 // CHECKDSO-NEXT: SHF_EXECINSTR
anatofuz
parents:
diff changeset
19 // CHECKDSO-NEXT: ]
anatofuz
parents:
diff changeset
20 // CHECKDSO-NEXT: Address: 0x10340
anatofuz
parents:
diff changeset
21 // CHECKDSO-NEXT: Offset:
anatofuz
parents:
diff changeset
22 // CHECKDSO-NEXT: Size: 80
anatofuz
parents:
diff changeset
23 // CHECKDSO-NEXT: Link:
anatofuz
parents:
diff changeset
24 // CHECKDSO-NEXT: Info:
anatofuz
parents:
diff changeset
25 // CHECKDSO-NEXT: AddressAlignment: 16
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 // CHECKDSO: Name: .got.plt
anatofuz
parents:
diff changeset
28 // CHECKDSO-NEXT: Type: SHT_PROGBITS
anatofuz
parents:
diff changeset
29 // CHECKDSO-NEXT: Flags [
anatofuz
parents:
diff changeset
30 // CHECKDSO-NEXT: SHF_ALLOC
anatofuz
parents:
diff changeset
31 // CHECKDSO-NEXT: SHF_WRITE
anatofuz
parents:
diff changeset
32 // CHECKDSO-NEXT: ]
anatofuz
parents:
diff changeset
33 // CHECKDSO-NEXT: Address: 0x30450
anatofuz
parents:
diff changeset
34 // CHECKDSO-NEXT: Offset:
anatofuz
parents:
diff changeset
35 // CHECKDSO-NEXT: Size: 48
anatofuz
parents:
diff changeset
36 // CHECKDSO-NEXT: Link:
anatofuz
parents:
diff changeset
37 // CHECKDSO-NEXT: Info:
anatofuz
parents:
diff changeset
38 // CHECKDSO-NEXT: AddressAlignment: 8
anatofuz
parents:
diff changeset
39
anatofuz
parents:
diff changeset
40 // CHECKDSO: Relocations [
anatofuz
parents:
diff changeset
41 // CHECKDSO-NEXT: Section ({{.*}}) .rela.plt {
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43 // &(.got.plt[3]) = 0x30450 + 3 * 8 = 0x30468
anatofuz
parents:
diff changeset
44 // CHECKDSO-NEXT: 0x30468 R_AARCH64_JUMP_SLOT foo
anatofuz
parents:
diff changeset
45
anatofuz
parents:
diff changeset
46 // &(.got.plt[4]) = 0x30450 + 4 * 8 = 0x30470
anatofuz
parents:
diff changeset
47 // CHECKDSO-NEXT: 0x30470 R_AARCH64_JUMP_SLOT bar
anatofuz
parents:
diff changeset
48
anatofuz
parents:
diff changeset
49 // &(.got.plt[5]) = 0x30000 + 5 * 8 = 0x30470
anatofuz
parents:
diff changeset
50 // CHECKDSO-NEXT: 0x30478 R_AARCH64_JUMP_SLOT weak
anatofuz
parents:
diff changeset
51 // CHECKDSO-NEXT: }
anatofuz
parents:
diff changeset
52 // CHECKDSO-NEXT: ]
anatofuz
parents:
diff changeset
53
anatofuz
parents:
diff changeset
54 // DUMPDSO: Contents of section .got.plt:
anatofuz
parents:
diff changeset
55 // .got.plt[0..2] = 0 (reserved)
anatofuz
parents:
diff changeset
56 // .got.plt[3..5] = .plt = 0x10010
anatofuz
parents:
diff changeset
57 // DUMPDSO-NEXT: 30450 00000000 00000000 00000000 00000000
anatofuz
parents:
diff changeset
58 // DUMPDSO-NEXT: 30460 00000000 00000000 40030100 00000000
anatofuz
parents:
diff changeset
59 // DUMPDSO-NEXT: 30470 40030100 00000000 40030100 00000000
anatofuz
parents:
diff changeset
60
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
61 // DISASMDSO: <_start>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
62 // DISASMDSO-NEXT: 10330: b 0x10360 <foo@plt>
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
63 // DISASMDSO-NEXT: 10334: b 0x10370 <bar@plt>
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
64 // DISASMDSO-NEXT: 10338: b 0x10380 <weak@plt>
150
anatofuz
parents:
diff changeset
65
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
66 // DISASMDSO: <foo>:
150
anatofuz
parents:
diff changeset
67 // DISASMDSO-NEXT: 1033c: nop
anatofuz
parents:
diff changeset
68
anatofuz
parents:
diff changeset
69 // DISASMDSO: Disassembly of section .plt:
anatofuz
parents:
diff changeset
70 // DISASMDSO-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
71 // DISASMDSO-NEXT: <.plt>:
150
anatofuz
parents:
diff changeset
72 // DISASMDSO-NEXT: 10340: stp x16, x30, [sp, #-0x10]!
anatofuz
parents:
diff changeset
73 // &(.got.plt[2]) = 0x30450 + 2 * 8 = 0x30460
anatofuz
parents:
diff changeset
74 // DISASMDSO-NEXT: 10344: adrp x16, #0x20000
anatofuz
parents:
diff changeset
75 // DISASMDSO-NEXT: 10348: ldr x17, [x16, #0x460]
anatofuz
parents:
diff changeset
76 // DISASMDSO-NEXT: 1034c: add x16, x16, #0x460
anatofuz
parents:
diff changeset
77 // DISASMDSO-NEXT: 10350: br x17
anatofuz
parents:
diff changeset
78 // DISASMDSO-NEXT: 10354: nop
anatofuz
parents:
diff changeset
79 // DISASMDSO-NEXT: 10358: nop
anatofuz
parents:
diff changeset
80 // DISASMDSO-NEXT: 1035c: nop
anatofuz
parents:
diff changeset
81
anatofuz
parents:
diff changeset
82 // foo@plt 0x30468
anatofuz
parents:
diff changeset
83 // &.got.plt[foo] = 0x30468
anatofuz
parents:
diff changeset
84 // DISASMDSO-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
85 // DISASMDSO-NEXT: <foo@plt>:
150
anatofuz
parents:
diff changeset
86 // DISASMDSO-NEXT: 10360: adrp x16, #0x20000
anatofuz
parents:
diff changeset
87 // DISASMDSO-NEXT: 10364: ldr x17, [x16, #0x468]
anatofuz
parents:
diff changeset
88 // DISASMDSO-NEXT: 10368: add x16, x16, #0x468
anatofuz
parents:
diff changeset
89 // DISASMDSO-NEXT: 1036c: br x17
anatofuz
parents:
diff changeset
90
anatofuz
parents:
diff changeset
91 // bar@plt
anatofuz
parents:
diff changeset
92 // &.got.plt[foo] = 0x30470
anatofuz
parents:
diff changeset
93 // DISASMDSO-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
94 // DISASMDSO-NEXT: <bar@plt>:
150
anatofuz
parents:
diff changeset
95 // DISASMDSO-NEXT: 10370: adrp x16, #0x20000
anatofuz
parents:
diff changeset
96 // DISASMDSO-NEXT: 10374: ldr x17, [x16, #0x470]
anatofuz
parents:
diff changeset
97 // DISASMDSO-NEXT: 10378: add x16, x16, #0x470
anatofuz
parents:
diff changeset
98 // DISASMDSO-NEXT: 1037c: br x17
anatofuz
parents:
diff changeset
99
anatofuz
parents:
diff changeset
100 // weak@plt
anatofuz
parents:
diff changeset
101 // 0x30468 = 0x10000 + 131072 + 1128
anatofuz
parents:
diff changeset
102 // DISASMDSO-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
103 // DISASMDSO-NEXT: <weak@plt>:
150
anatofuz
parents:
diff changeset
104 // DISASMDSO-NEXT: 10380: adrp x16, #0x20000
anatofuz
parents:
diff changeset
105 // DISASMDSO-NEXT: 10384: ldr x17, [x16, #0x478]
anatofuz
parents:
diff changeset
106 // DISASMDSO-NEXT: 10388: add x16, x16, #0x478
anatofuz
parents:
diff changeset
107 // DISASMDSO-NEXT: 1038c: br x17
anatofuz
parents:
diff changeset
108
anatofuz
parents:
diff changeset
109 // CHECKEXE: Name: .plt
anatofuz
parents:
diff changeset
110 // CHECKEXE-NEXT: Type: SHT_PROGBITS
anatofuz
parents:
diff changeset
111 // CHECKEXE-NEXT: Flags [
anatofuz
parents:
diff changeset
112 // CHECKEXE-NEXT: SHF_ALLOC
anatofuz
parents:
diff changeset
113 // CHECKEXE-NEXT: SHF_EXECINSTR
anatofuz
parents:
diff changeset
114 // CHECKEXE-NEXT: ]
anatofuz
parents:
diff changeset
115 // CHECKEXE-NEXT: Address: 0x2102E0
anatofuz
parents:
diff changeset
116 // CHECKEXE-NEXT: Offset:
anatofuz
parents:
diff changeset
117 // CHECKEXE-NEXT: Size: 64
anatofuz
parents:
diff changeset
118 // CHECKEXE-NEXT: Link:
anatofuz
parents:
diff changeset
119 // CHECKEXE-NEXT: Info:
anatofuz
parents:
diff changeset
120 // CHECKEXE-NEXT: AddressAlignment: 16
anatofuz
parents:
diff changeset
121
anatofuz
parents:
diff changeset
122 // CHECKEXE: Name: .got.plt
anatofuz
parents:
diff changeset
123 // CHECKEXE-NEXT: Type: SHT_PROGBITS
anatofuz
parents:
diff changeset
124 // CHECKEXE-NEXT: Flags [
anatofuz
parents:
diff changeset
125 // CHECKEXE-NEXT: SHF_ALLOC
anatofuz
parents:
diff changeset
126 // CHECKEXE-NEXT: SHF_WRITE
anatofuz
parents:
diff changeset
127 // CHECKEXE-NEXT: ]
anatofuz
parents:
diff changeset
128 // CHECKEXE-NEXT: Address: 0x2303F0
anatofuz
parents:
diff changeset
129 // CHECKEXE-NEXT: Offset:
anatofuz
parents:
diff changeset
130 // CHECKEXE-NEXT: Size: 40
anatofuz
parents:
diff changeset
131 // CHECKEXE-NEXT: Link:
anatofuz
parents:
diff changeset
132 // CHECKEXE-NEXT: Info:
anatofuz
parents:
diff changeset
133 // CHECKEXE-NEXT: AddressAlignment: 8
anatofuz
parents:
diff changeset
134
anatofuz
parents:
diff changeset
135 // CHECKEXE: Relocations [
anatofuz
parents:
diff changeset
136 // CHECKEXE-NEXT: Section ({{.*}}) .rela.plt {
anatofuz
parents:
diff changeset
137
anatofuz
parents:
diff changeset
138 // &(.got.plt[3]) = 0x2303f0 + 3 * 8 = 0x230408
anatofuz
parents:
diff changeset
139 // CHECKEXE-NEXT: 0x230408 R_AARCH64_JUMP_SLOT bar 0x0
anatofuz
parents:
diff changeset
140
anatofuz
parents:
diff changeset
141 // &(.got.plt[4]) = 0x2303f0 + 4 * 8 = 0x230410
anatofuz
parents:
diff changeset
142 // CHECKEXE-NEXT: 0x230410 R_AARCH64_JUMP_SLOT weak 0x0
anatofuz
parents:
diff changeset
143 // CHECKEXE-NEXT: }
anatofuz
parents:
diff changeset
144 // CHECKEXE-NEXT: ]
anatofuz
parents:
diff changeset
145
anatofuz
parents:
diff changeset
146 // DUMPEXE: Contents of section .got.plt:
anatofuz
parents:
diff changeset
147 // .got.plt[0..2] = 0 (reserved)
anatofuz
parents:
diff changeset
148 // .got.plt[3..4] = .plt = 0x40010
anatofuz
parents:
diff changeset
149 // DUMPEXE-NEXT: 2303f0 00000000 00000000 00000000 00000000
anatofuz
parents:
diff changeset
150 // DUMPEXE-NEXT: 230400 00000000 00000000 e0022100 00000000
anatofuz
parents:
diff changeset
151 // DUMPEXE-NEXT: 230410 e0022100 00000000
anatofuz
parents:
diff changeset
152
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
153 // DISASMEXE: <_start>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
154 // DISASMEXE-NEXT: 2102c8: b 0x2102d4 <foo>
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
155 // DISASMEXE-NEXT: 2102cc: b 0x210300 <bar@plt>
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
156 // DISASMEXE-NEXT: 2102d0: b 0x210310 <weak@plt>
150
anatofuz
parents:
diff changeset
157
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
158 // DISASMEXE: <foo>:
150
anatofuz
parents:
diff changeset
159 // DISASMEXE-NEXT: 2102d4: nop
anatofuz
parents:
diff changeset
160
anatofuz
parents:
diff changeset
161 // DISASMEXE: Disassembly of section .plt:
anatofuz
parents:
diff changeset
162 // DISASMEXE-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
163 // DISASMEXE-NEXT: <.plt>:
150
anatofuz
parents:
diff changeset
164 // DISASMEXE-NEXT: 2102e0: stp x16, x30, [sp, #-0x10]!
anatofuz
parents:
diff changeset
165 // &(.got.plt[2]) = 0x2303f0 + 2 * 8 = 0x230400
anatofuz
parents:
diff changeset
166 // DISASMEXE-NEXT: 2102e4: adrp x16, #0x20000
anatofuz
parents:
diff changeset
167 // DISASMEXE-NEXT: 2102e8: ldr x17, [x16, #0x400]
anatofuz
parents:
diff changeset
168 // DISASMEXE-NEXT: 2102ec: add x16, x16, #0x400
anatofuz
parents:
diff changeset
169 // DISASMEXE-NEXT: 2102f0: br x17
anatofuz
parents:
diff changeset
170 // DISASMEXE-NEXT: 2102f4: nop
anatofuz
parents:
diff changeset
171 // DISASMEXE-NEXT: 2102f8: nop
anatofuz
parents:
diff changeset
172 // DISASMEXE-NEXT: 2102fc: nop
anatofuz
parents:
diff changeset
173
anatofuz
parents:
diff changeset
174 // bar@plt
anatofuz
parents:
diff changeset
175 // DISASMEXE-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
176 // DISASMEXE-NEXT: <bar@plt>:
150
anatofuz
parents:
diff changeset
177 // DISASMEXE-NEXT: 210300: adrp x16, #0x20000
anatofuz
parents:
diff changeset
178 // DISASMEXE-NEXT: 210304: ldr x17, [x16, #0x408]
anatofuz
parents:
diff changeset
179 // DISASMEXE-NEXT: 210308: add x16, x16, #0x408
anatofuz
parents:
diff changeset
180 // DISASMEXE-NEXT: 21030c: br x17
anatofuz
parents:
diff changeset
181
anatofuz
parents:
diff changeset
182 // weak@plt
anatofuz
parents:
diff changeset
183 // DISASMEXE-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
184 // DISASMEXE-NEXT: <weak@plt>:
150
anatofuz
parents:
diff changeset
185 // DISASMEXE-NEXT: 210310: adrp x16, #0x20000
anatofuz
parents:
diff changeset
186 // DISASMEXE-NEXT: 210314: ldr x17, [x16, #0x410]
anatofuz
parents:
diff changeset
187 // DISASMEXE-NEXT: 210318: add x16, x16, #0x410
anatofuz
parents:
diff changeset
188 // DISASMEXE-NEXT: 21031c: br x17
anatofuz
parents:
diff changeset
189
anatofuz
parents:
diff changeset
190 .global _start,foo,bar
anatofuz
parents:
diff changeset
191 .weak weak
anatofuz
parents:
diff changeset
192 _start:
anatofuz
parents:
diff changeset
193 b foo
anatofuz
parents:
diff changeset
194 b bar
anatofuz
parents:
diff changeset
195 b weak
anatofuz
parents:
diff changeset
196
anatofuz
parents:
diff changeset
197 .section .text2,"ax",@progbits
anatofuz
parents:
diff changeset
198 foo:
anatofuz
parents:
diff changeset
199 nop