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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
#name: Check linker stubs with indirect calls handle BTI when target has BTI.
#source: bti-far-opt.s
#target: [check_shared_lib_support]
#as: -defsym __property_bti__=1
#ld: -shared -T bti-far.ld
#objdump: -dr
[^:]*: *file format elf64-.*aarch64
Disassembly of section \.plt:
0000000000018000 <\.plt>:
18000: d503245f bti c
18004: a9bf7bf0 stp x16, x30, \[sp, #-16\]!
18008: 900000d0 adrp x16, 30000 <_GLOBAL_OFFSET_TABLE_>
1800c: f9400e11 ldr x17, \[x16, #24\]
18010: 91006210 add x16, x16, #0x18
18014: d61f0220 br x17
18018: d503201f nop
1801c: d503201f nop
0000000000018020 <foo@plt>:
18020: 900000d0 adrp x16, 30000 <_GLOBAL_OFFSET_TABLE_>
18024: f9401211 ldr x17, \[x16, #32\]
18028: 91008210 add x16, x16, #0x20
1802c: d61f0220 br x17
18030: 14000004 b 18040 <__foo_bti_veneer\+0x8>
18034: d503201f nop
0000000000018038 <__foo_bti_veneer>:
18038: d503245f bti c
1803c: 17fffff9 b 18020 <foo@plt>
Disassembly of section \.text:
0000000000020000 <_start>:
20000: 97ffe008 bl 18020 <foo@plt>
20004: 9400000d bl 20038 <___veneer>
20008: 94000001 bl 2000c <baz>
000000000002000c <baz>:
2000c: d503201f nop
0000000000020010 <baz_bti_>:
20010: d503241f bti
0000000000020014 <baz_bti_c>:
20014: d503245f bti c
0000000000020018 <baz_bti_j>:
20018: d503249f bti j
000000000002001c <baz_bti_jc>:
2001c: d50324df bti jc
0000000000020020 <baz_paciasp>:
20020: d503233f paciasp
0000000000020024 <baz_pacibsp>:
20024: d503237f pacibsp
20028: 1400000c b 20058 <___bti_veneer\+0x8>
2002c: d503201f nop
0000000000020030 <___bti_veneer>:
20030: d503245f bti c
20034: 17fffff6 b 2000c <baz>
0000000000020038 <___veneer>:
20038: 90091910 adrp x16, 12340000 <foo>
2003c: 9102a210 add x16, x16, #0xa8
20040: d61f0200 br x16
\.\.\.
0000000000020050 <___bti_veneer>:
20050: d503245f bti c
20054: 17ffffef b 20010 <baz_bti_>
Disassembly of section \.far:
0000000012340000 <foo>:
12340000: 94000032 bl 123400c8 <___veneer>
12340004: 9400001d bl 12340078 <___veneer>
12340008: 94000022 bl 12340090 <___veneer>
1234000c: 94000035 bl 123400e0 <___veneer>
12340010: 9400003a bl 123400f8 <___veneer>
12340014: 94000013 bl 12340060 <___veneer>
12340018: 94000026 bl 123400b0 <___veneer>
000000001234001c <bar>:
1234001c: 1400000b b 12340048 <__foo_veneer>
12340020: 1400002a b 123400c8 <___veneer>
12340024: 14000015 b 12340078 <___veneer>
12340028: 1400001a b 12340090 <___veneer>
1234002c: 1400002d b 123400e0 <___veneer>
12340030: 14000032 b 123400f8 <___veneer>
12340034: 1400000b b 12340060 <___veneer>
12340038: 1400001e b 123400b0 <___veneer>
1234003c: 00000000 udf #0
12340040: 14000034 b 12340110 <___veneer\+0x18>
12340044: d503201f nop
0000000012340048 <__foo_veneer>:
12340048: 90f6e6d0 adrp x16, 18000 <.plt>
1234004c: 9100e210 add x16, x16, #0x38
12340050: d61f0200 br x16
\.\.\.
0000000012340060 <___veneer>:
12340060: 90f6e710 adrp x16, 20000 <_start>
12340064: 91008210 add x16, x16, #0x20
12340068: d61f0200 br x16
\.\.\.
0000000012340078 <___veneer>:
12340078: 90f6e710 adrp x16, 20000 <_start>
1234007c: 91014210 add x16, x16, #0x50
12340080: d61f0200 br x16
\.\.\.
0000000012340090 <___veneer>:
12340090: 90f6e710 adrp x16, 20000 <_start>
12340094: 91005210 add x16, x16, #0x14
12340098: d61f0200 br x16
\.\.\.
00000000123400a8 <___bti_veneer>:
123400a8: d503245f bti c
123400ac: 17ffffdc b 1234001c <bar>
00000000123400b0 <___veneer>:
123400b0: 90f6e710 adrp x16, 20000 <_start>
123400b4: 91009210 add x16, x16, #0x24
123400b8: d61f0200 br x16
\.\.\.
00000000123400c8 <___veneer>:
123400c8: 90f6e710 adrp x16, 20000 <_start>
123400cc: 9100c210 add x16, x16, #0x30
123400d0: d61f0200 br x16
\.\.\.
00000000123400e0 <___veneer>:
123400e0: 90f6e710 adrp x16, 20000 <_start>
123400e4: 91006210 add x16, x16, #0x18
123400e8: d61f0200 br x16
\.\.\.
00000000123400f8 <___veneer>:
123400f8: 90f6e710 adrp x16, 20000 <_start>
123400fc: 91007210 add x16, x16, #0x1c
12340100: d61f0200 br x16
\.\.\.
|