1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
.syntax unified
.arch armv6t2
.macro define,name,type
.type \name,%gnu_indirect_function
\type
\name:
mov pc,lr
.size \name,.-\name
.endm
.macro test_relocs,name,width
bl\width \name
b\width \name
beq\width \name
ldr r4,1f
ldr r4,2f
ldr r4,3f
ldr r4,4f
ldr r5,5f
movw r4,#:lower16:\name
movt r4,#:upper16:\name
1:
.word \name
2:
.word \name-.
3:
.word \name(GOTOFF)
4:
.word \name(GOT)
5:
.word \name(GOT_PREL)
.endm
define f1,.arm
define f2,.thumb_func
define f3,.arm
define f4,.thumb_func
.globl f5
.globl f6
.globl f7
.globl f8
define f5,.arm
define f6,.thumb_func
define f7,.arm
define f8,.thumb_func
.globl _start
.type _start,%function
.arm
_start:
test_relocs foo
test_relocs f1,
test_relocs f2,
test_relocs f5,
test_relocs f6,
.size _start,.-_start
.globl _thumb
.type _thumb,%function
.thumb_func
_thumb:
test_relocs foo
test_relocs f3,.w
test_relocs f4,.w
test_relocs f7,.w
test_relocs f8,.w
.size _thumb,.-_thumb
.data
foo:
.word 0x11223344
|