annotate lld/test/ELF/arm-gnu-ifunc.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: arm
anatofuz
parents:
diff changeset
2 // RUN: llvm-mc -filetype=obj -triple=armv7a-none-linux-gnueabi %s -o %t.o
anatofuz
parents:
diff changeset
3 // RUN: ld.lld %t.o -o %t
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
4 // RUN: llvm-objdump --triple=armv7a-none-linux-gnueabi -d --no-show-raw-insn %t | FileCheck %s --check-prefix=DISASM
150
anatofuz
parents:
diff changeset
5 // RUN: llvm-readobj -r --symbols --sections %t | FileCheck %s
anatofuz
parents:
diff changeset
6 .syntax unified
anatofuz
parents:
diff changeset
7 .text
anatofuz
parents:
diff changeset
8 .type foo STT_GNU_IFUNC
anatofuz
parents:
diff changeset
9 .globl foo
anatofuz
parents:
diff changeset
10 foo:
anatofuz
parents:
diff changeset
11 bx lr
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 .type bar STT_GNU_IFUNC
anatofuz
parents:
diff changeset
14 .globl bar
anatofuz
parents:
diff changeset
15 bar:
anatofuz
parents:
diff changeset
16 bx lr
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 .globl _start
anatofuz
parents:
diff changeset
19 _start:
anatofuz
parents:
diff changeset
20 bl foo
anatofuz
parents:
diff changeset
21 bl bar
anatofuz
parents:
diff changeset
22 movw r0,:lower16:__rel_iplt_start
anatofuz
parents:
diff changeset
23 movt r0,:upper16:__rel_iplt_start
anatofuz
parents:
diff changeset
24 movw r0,:lower16:__rel_iplt_end
anatofuz
parents:
diff changeset
25 movt r0,:upper16:__rel_iplt_end
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 // CHECK: Sections [
anatofuz
parents:
diff changeset
28 // CHECK: Section {
anatofuz
parents:
diff changeset
29 // CHECK: Section {
anatofuz
parents:
diff changeset
30 // CHECK: Name: .rel.dyn
anatofuz
parents:
diff changeset
31 // CHECK-NEXT: Type: SHT_REL
anatofuz
parents:
diff changeset
32 // CHECK-NEXT: Flags [
anatofuz
parents:
diff changeset
33 // CHECK-NEXT: SHF_ALLOC
anatofuz
parents:
diff changeset
34 // CHECK-NEXT: ]
anatofuz
parents:
diff changeset
35 // CHECK-NEXT: Address: 0x100F4
anatofuz
parents:
diff changeset
36 // CHECK-NEXT: Offset: 0xF4
anatofuz
parents:
diff changeset
37 // CHECK-NEXT: Size: 16
anatofuz
parents:
diff changeset
38 // CHECK-NEXT: Link:
anatofuz
parents:
diff changeset
39 // CHECK-NEXT: Info: 4
anatofuz
parents:
diff changeset
40 // CHECK: Name: .iplt
anatofuz
parents:
diff changeset
41 // CHECK-NEXT: Type: SHT_PROGBITS
anatofuz
parents:
diff changeset
42 // CHECK-NEXT: Flags [
anatofuz
parents:
diff changeset
43 // CHECK-NEXT: SHF_ALLOC
anatofuz
parents:
diff changeset
44 // CHECK-NEXT: SHF_EXECINSTR
anatofuz
parents:
diff changeset
45 // CHECK-NEXT: ]
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
46 // CHECK-NEXT: Address: 0x20130
150
anatofuz
parents:
diff changeset
47 // CHECK-NEXT: Offset: 0x130
anatofuz
parents:
diff changeset
48 // CHECK-NEXT: Size: 32
anatofuz
parents:
diff changeset
49 // CHECK: Index: 4
anatofuz
parents:
diff changeset
50 // CHECK-NEXT: Name: .got
anatofuz
parents:
diff changeset
51 // CHECK-NEXT: Type: SHT_PROGBITS
anatofuz
parents:
diff changeset
52 // CHECK-NEXT: Flags [
anatofuz
parents:
diff changeset
53 // CHECK-NEXT: SHF_ALLOC
anatofuz
parents:
diff changeset
54 // CHECK-NEXT: SHF_WRITE
anatofuz
parents:
diff changeset
55 // CHECK-NEXT: ]
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
56 // CHECK-NEXT: Address: 0x30150
150
anatofuz
parents:
diff changeset
57 // CHECK-NEXT: Offset: 0x150
anatofuz
parents:
diff changeset
58 // CHECK-NEXT: Size: 8
anatofuz
parents:
diff changeset
59 // CHECK: Relocations [
anatofuz
parents:
diff changeset
60 // CHECK-NEXT: Section (1) .rel.dyn {
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
61 // CHECK-NEXT: 0x30150 R_ARM_IRELATIVE
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
62 // CHECK-NEXT: 0x30154 R_ARM_IRELATIVE
150
anatofuz
parents:
diff changeset
63 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
64 // CHECK-NEXT: ]
anatofuz
parents:
diff changeset
65 // CHECK: Symbol {
anatofuz
parents:
diff changeset
66 // CHECK: Name: __rel_iplt_end
anatofuz
parents:
diff changeset
67 // CHECK-NEXT: Value: 0x10104
anatofuz
parents:
diff changeset
68 // CHECK-NEXT: Size: 0
anatofuz
parents:
diff changeset
69 // CHECK-NEXT: Binding: Local
anatofuz
parents:
diff changeset
70 // CHECK-NEXT: Type: None
anatofuz
parents:
diff changeset
71 // CHECK-NEXT: Other [
anatofuz
parents:
diff changeset
72 // CHECK-NEXT: STV_HIDDEN
anatofuz
parents:
diff changeset
73 // CHECK-NEXT: ]
anatofuz
parents:
diff changeset
74 // CHECK-NEXT: Section: .rel.dyn
anatofuz
parents:
diff changeset
75 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
76 // CHECK-NEXT: Symbol {
anatofuz
parents:
diff changeset
77 // CHECK-NEXT: Name: __rel_iplt_start
anatofuz
parents:
diff changeset
78 // CHECK-NEXT: Value: 0x100F4
anatofuz
parents:
diff changeset
79 // CHECK-NEXT: Size: 0
anatofuz
parents:
diff changeset
80 // CHECK-NEXT: Binding: Local
anatofuz
parents:
diff changeset
81 // CHECK-NEXT: Type: None
anatofuz
parents:
diff changeset
82 // CHECK-NEXT: Other [
anatofuz
parents:
diff changeset
83 // CHECK-NEXT: STV_HIDDEN
anatofuz
parents:
diff changeset
84 // CHECK-NEXT: ]
anatofuz
parents:
diff changeset
85 // CHECK-NEXT: Section: .rel.dyn
anatofuz
parents:
diff changeset
86 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
87 // CHECK-NEXT: Symbol {
anatofuz
parents:
diff changeset
88 // CHECK-NEXT: Name: _start
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
89 // CHECK-NEXT: Value: 0x2010C
150
anatofuz
parents:
diff changeset
90 // CHECK-NEXT: Size: 0
anatofuz
parents:
diff changeset
91 // CHECK-NEXT: Binding: Global
anatofuz
parents:
diff changeset
92 // CHECK-NEXT: Type: None
anatofuz
parents:
diff changeset
93 // CHECK-NEXT: Other:
anatofuz
parents:
diff changeset
94 // CHECK-NEXT: Section: .text
anatofuz
parents:
diff changeset
95 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
96 // CHECK-NEXT: Symbol {
anatofuz
parents:
diff changeset
97 // CHECK-NEXT: Name: bar
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
98 // CHECK-NEXT: Value: 0x20108
150
anatofuz
parents:
diff changeset
99 // CHECK-NEXT: Size: 0
anatofuz
parents:
diff changeset
100 // CHECK-NEXT: Binding: Global
anatofuz
parents:
diff changeset
101 // CHECK-NEXT: Type: GNU_IFunc
anatofuz
parents:
diff changeset
102 // CHECK-NEXT: Other: 0
anatofuz
parents:
diff changeset
103 // CHECK-NEXT: Section: .text
anatofuz
parents:
diff changeset
104 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
105 // CHECK-NEXT: Symbol {
anatofuz
parents:
diff changeset
106 // CHECK-NEXT: Name: foo
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
107 // CHECK-NEXT: Value: 0x20104
150
anatofuz
parents:
diff changeset
108 // CHECK-NEXT: Size: 0
anatofuz
parents:
diff changeset
109 // CHECK-NEXT: Binding: Global
anatofuz
parents:
diff changeset
110 // CHECK-NEXT: Type: GNU_IFunc
anatofuz
parents:
diff changeset
111 // CHECK-NEXT: Other: 0
anatofuz
parents:
diff changeset
112 // CHECK-NEXT: Section: .text
anatofuz
parents:
diff changeset
113 // CHECK-NEXT: }
anatofuz
parents:
diff changeset
114
anatofuz
parents:
diff changeset
115 // DISASM: Disassembly of section .text:
anatofuz
parents:
diff changeset
116 // DISASM-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
117 // DISASM-NEXT: <foo>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
118 // DISASM-NEXT: 20104: bx lr
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
119 // DISASM: <bar>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
120 // DISASM-NEXT: 20108: bx lr
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
121 // DISASM: <_start>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
122 // DISASM-NEXT: 2010c: bl #28
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
123 // DISASM-NEXT: 20110: bl #40
150
anatofuz
parents:
diff changeset
124 // 1 * 65536 + 244 = 0x100f4 __rel_iplt_start
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
125 // DISASM-NEXT: 20114: movw r0, #244
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
126 // DISASM-NEXT: 20118: movt r0, #1
150
anatofuz
parents:
diff changeset
127 // 1 * 65536 + 260 = 0x10104 __rel_iplt_end
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
128 // DISASM-NEXT: 2011c: movw r0, #260
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
129 // DISASM-NEXT: 20120: movt r0, #1
150
anatofuz
parents:
diff changeset
130 // DISASM-EMPTY:
anatofuz
parents:
diff changeset
131 // DISASM-NEXT: Disassembly of section .iplt:
anatofuz
parents:
diff changeset
132 // DISASM-EMPTY:
173
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
133 // DISASM-NEXT: <$a>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
134 // DISASM-NEXT: 20130: add r12, pc, #0, #12
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
135 // DISASM-NEXT: 20134: add r12, r12, #16
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
136 // DISASM-NEXT: 20138: ldr pc, [r12, #24]!
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
137 // DISASM: <$d>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
138 // DISASM-NEXT: 2013c: d4 d4 d4 d4 .word 0xd4d4d4d4
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
139 // DISASM: <$a>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
140 // DISASM-NEXT: 20140: add r12, pc, #0, #12
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
141 // DISASM-NEXT: 20144: add r12, r12, #16
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
142 // DISASM-NEXT: 20148: ldr pc, [r12, #12]!
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
143 // DISASM: <$d>:
0572611fdcc8 reorgnization done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 150
diff changeset
144 // DISASM-NEXT: 2014c: d4 d4 d4 d4 .word 0xd4d4d4d4
150
anatofuz
parents:
diff changeset
145