25
25
# BTIPACSO-NEXT: 10360: bti c
26
26
# BTIPACSO-NEXT: stp x16, x30, [sp, #-16]!
27
27
# BTIPACSO-NEXT: adrp x16, #131072
28
- # BTIPACSO-NEXT: ldr x17, [x16, #1160 ]
29
- # BTIPACSO-NEXT: add x16, x16, #1160
28
+ # BTIPACSO-NEXT: ldr x17, [x16, #1136 ]
29
+ # BTIPACSO-NEXT: add x16, x16, #1136
30
30
# BTIPACSO-NEXT: br x17
31
31
# BTIPACSO-NEXT: nop
32
32
# BTIPACSO-NEXT: nop
33
33
# BTIPACSO: 0000000000010380 func3@plt:
34
34
# BTIPACSO-NEXT: 10380: adrp x16, #131072
35
- # BTIPACSO-NEXT: ldr x17, [x16, #1168]
36
- # BTIPACSO-NEXT: add x16, x16, #1168
37
- # BTIPACSO-NEXT: autia1716
35
+ # BTIPACSO-NEXT: ldr x17, [x16, #1144]
36
+ # BTIPACSO-NEXT: add x16, x16, #1144
38
37
# BTIPACSO-NEXT: br x17
39
- # BTIPACSO-NEXT: nop
40
38
41
39
# BTIPACPROP: Properties: aarch64 feature: BTI, PAC
42
40
43
41
# BTIPACDYN: 0x0000000070000001 (AARCH64_BTI_PLT)
44
- # BTIPACDYN: 0x0000000070000003 (AARCH64_PAC_PLT)
42
+ # BTIPACDYN-NOT : 0x0000000070000003 (AARCH64_PAC_PLT)
45
43
46
44
## Make an executable with both BTI and PAC properties. Expect:
47
45
## PLT[0] bti c as first instruction
48
- ## PLT[n] bti n as first instruction, autia1716 before br x17
46
+ ## PLT[n] bti n as first instruction
49
47
50
48
# RUN: ld.lld %t.o %t3btipac.o %t.so -o %t.exe
51
49
# RUN: llvm-readelf -n %t.exe | FileCheck --check-prefix=BTIPACPROP %s
52
50
# RUN: llvm-objdump -d -mattr=+v8.5a --no-show-raw-insn %t.exe | FileCheck --check-prefix BTIPACEX %s
53
- # RUN: llvm-readelf --dynamic-table %t.exe | FileCheck --check-prefix BTIPACDYN %s
51
+ # RUN: llvm-readelf --dynamic-table %t.exe | FileCheck --check-prefix BTIPACDYNEX %s
54
52
55
53
# BTIPACEX: Disassembly of section .text:
56
54
# BTIPACEX: 0000000000210370 func1:
64
62
# BTIPACEX-NEXT: 210380: bti c
65
63
# BTIPACEX-NEXT: stp x16, x30, [sp, #-16]!
66
64
# BTIPACEX-NEXT: adrp x16, #131072
67
- # BTIPACEX-NEXT: ldr x17, [x16, #1208 ]
68
- # BTIPACEX-NEXT: add x16, x16, #1208
65
+ # BTIPACEX-NEXT: ldr x17, [x16, #1192 ]
66
+ # BTIPACEX-NEXT: add x16, x16, #1192
69
67
# BTIPACEX-NEXT: br x17
70
68
# BTIPACEX-NEXT: nop
71
69
# BTIPACEX-NEXT: nop
72
70
# BTIPACEX: 00000000002103a0 func2@plt:
73
71
# BTIPACEX-NEXT: 2103a0: bti c
74
72
# BTIPACEX-NEXT: adrp x16, #131072
75
- # BTIPACEX-NEXT: ldr x17, [x16, #1216]
76
- # BTIPACEX-NEXT: add x16, x16, #1216
77
- # BTIPACEX-NEXT: autia1716
73
+ # BTIPACEX-NEXT: ldr x17, [x16, #1200]
74
+ # BTIPACEX-NEXT: add x16, x16, #1200
78
75
# BTIPACEX-NEXT: br x17
79
76
77
+ # BTIPACDYNEX: 0x0000000070000001 (AARCH64_BTI_PLT)
78
+ # BTIPACDYNEX-NOT: 0x0000000070000003 (AARCH64_PAC_PLT)
79
+
80
80
## Check that combinations of BTI+PAC with 0 properties results in standard PLT
81
81
82
82
# RUN: ld.lld %t.o %t3.o %t.so -o %t.exe
112
112
## Check that combination of -z pac-plt and -z force-bti warns for the file that
113
113
## doesn't contain the BTI property, but generates PAC and BTI PLT sequences.
114
114
## The -z pac-plt doesn't warn as it is not required for correctness.
115
+ ## Expect:
116
+ ## PLT[0] bti c as first instruction
117
+ ## PLT[n] bti n as first instruction, autia1716 before br x17
115
118
116
119
# RUN: ld.lld %t.o %t3.o %t.so -z pac-plt -z force-bti -o %t.exe 2>&1 | FileCheck --check-prefix=FORCE-WARN %s
117
120
118
- # FORCE-WARN: aarch64-feature-btipac.s.tmp3.o: -z force-bti: file does not have BTI property
121
+ # FORCE-WARN: aarch64-feature-btipac.s.tmp3.o: -z force-bti: file does not have GNU_PROPERTY_AARCH64_FEATURE_1_BTI property
119
122
120
123
# RUN: llvm-readelf -n %t.exe | FileCheck --check-prefix=BTIPACPROP %s
121
- # RUN: llvm-objdump -d -mattr=+v8.5a --no-show-raw-insn %t.exe | FileCheck --check-prefix BTIPACEX %s
122
- # RUN: llvm-readelf --dynamic-table %t.exe | FileCheck --check-prefix BTIPACDYN %s
124
+ # RUN: llvm-objdump -d -mattr=+v8.5a --no-show-raw-insn %t.exe | FileCheck --check-prefix BTIPACEX2 %s
125
+ # RUN: llvm-readelf --dynamic-table %t.exe | FileCheck --check-prefix BTIPACDYN2 %s
123
126
.section ".note.gnu.property" , "a"
124
127
.long 4
125
128
.long 0x10
@@ -140,3 +143,31 @@ func1:
140
143
.globl func3
141
144
.type func3,%function
142
145
ret
146
+
147
+ # BTIPACEX2: Disassembly of section .text:
148
+ # BTIPACEX2: 0000000000210370 func1:
149
+ # BTIPACEX2-NEXT: 210370: bl #48 <func2@plt>
150
+ # BTIPACEX2-NEXT: ret
151
+ # BTIPACEX2-NEXT: ret
152
+ # BTIPACEX2: 000000000021037c func3:
153
+ # BTIPACEX2-NEXT: 21037c: ret
154
+ # BTIPACEX2: Disassembly of section .plt:
155
+ # BTIPACEX2: 0000000000210380 .plt:
156
+ # BTIPACEX2-NEXT: 210380: bti c
157
+ # BTIPACEX2-NEXT: stp x16, x30, [sp, #-16]!
158
+ # BTIPACEX2-NEXT: adrp x16, #131072
159
+ # BTIPACEX2-NEXT: ldr x17, [x16, #1208]
160
+ # BTIPACEX2-NEXT: add x16, x16, #1208
161
+ # BTIPACEX2-NEXT: br x17
162
+ # BTIPACEX2-NEXT: nop
163
+ # BTIPACEX2-NEXT: nop
164
+ # BTIPACEX2: 00000000002103a0 func2@plt:
165
+ # BTIPACEX2-NEXT: 2103a0: bti c
166
+ # BTIPACEX2-NEXT: adrp x16, #131072
167
+ # BTIPACEX2-NEXT: ldr x17, [x16, #1216]
168
+ # BTIPACEX2-NEXT: add x16, x16, #1216
169
+ # BTIPACEX2-NEXT: autia1716
170
+ # BTIPACEX2-NEXT: br x17
171
+
172
+ # BTIPACDYN2: 0x0000000070000001 (AARCH64_BTI_PLT)
173
+ # BTIPACDYN2-NEXT: 0x0000000070000003 (AARCH64_PAC_PLT)
0 commit comments