@@ -158,6 +158,85 @@ clobber:
158
158
// CHECK - EMPTY:
159
159
// CHECK - NEXT: Attaching clobbering info to: 00000000 : ret # PacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: [ 0 ] (0x{{ [ 0 - 9a - f ]+ }} )>
160
160
161
+ .globl nocfg
162
+ .type nocfg , @function
163
+ nocfg:
164
+ adr x0 , 1f
165
+ br x0
166
+ 1 :
167
+ ret
168
+ .size nocfg , . - nocfg
169
+
170
+ // CHECK - LABEL:Analyzing in function nocfg , AllocatorId 1
171
+ // CHECK - NEXT: Binary Function "nocfg" {
172
+ // CHECK - NEXT: Number : 3
173
+ // CHECK - NEXT: State : disassembled
174
+ // ...
175
+ // CHECK: IsSimple : 0
176
+ // CHECK - NEXT: IsMultiEntry: 1
177
+ // CHECK - NEXT: IsSplit : 0
178
+ // CHECK - NEXT: BB Count : 0
179
+ // CHECK - NEXT: Secondary Entry Points : __ENTRY_nocfg@0x [[ ENTRY_ADDR: [ 0 - 9a - f ]+]]
180
+ // CHECK - NEXT: }
181
+ // CHECK - NEXT: .{{ [ A - Za - z0 - 9 ]+ }}:
182
+ // CHECK - NEXT: 00000000 : adr x0 , __ENTRY_nocfg@0x [[ ENTRY_ADDR ]]
183
+ // CHECK - NEXT: 00000004 : br x0 # UNKNOWN CONTROL FLOW # Offset: 4
184
+ // CHECK - NEXT: __ENTRY_nocfg@0x [[ ENTRY_ADDR ]] (Entry Point):
185
+ // CHECK - NEXT: .{{ [ A - Za - z0 - 9 ]+ }}:
186
+ // CHECK - NEXT: 00000008 : ret # Offset: 8
187
+ // CHECK - NEXT: DWARF CFI Instructions:
188
+ // CHECK - NEXT: <empty>
189
+ // CHECK - NEXT: End of Function "nocfg"
190
+ // CHECK - EMPTY:
191
+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( adr x0 , __ENTRY_nocfg@0x [[ ENTRY_ADDR ]], pacret - state<SafeToDerefRegs: LR W30 W30_HI , Insts: >)
192
+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: LR W0 W30 X0 W0_HI W30_HI , Insts: >)
193
+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( ret x30 , pacret - state<SafeToDerefRegs: , Insts: >)
194
+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: >)
195
+ // CHECK - NEXT: After PacRetAnalysis:
196
+ // CHECK - NEXT: Binary Function "nocfg" {
197
+ // CHECK - NEXT: Number : 3
198
+ // CHECK - NEXT: State : disassembled
199
+ // ...
200
+ // CHECK: Secondary Entry Points : __ENTRY_nocfg@0x [[ ENTRY_ADDR ]]
201
+ // CHECK - NEXT: }
202
+ // CHECK - NEXT: .{{ [ A - Za - z0 - 9 ]+ }}:
203
+ // CHECK - NEXT: 00000000 : adr x0 , __ENTRY_nocfg@0x [[ ENTRY_ADDR ]] # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
204
+ // CHECK - NEXT: 00000004 : br x0 # UNKNOWN CONTROL FLOW # Offset: 4 # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
205
+ // CHECK - NEXT: __ENTRY_nocfg@0x [[ ENTRY_ADDR ]] (Entry Point):
206
+ // CHECK - NEXT: .{{ [ A - Za - z0 - 9 ]+ }}:
207
+ // CHECK - NEXT: 00000008 : ret # Offset: 8 # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
208
+ // CHECK - NEXT: DWARF CFI Instructions:
209
+ // CHECK - NEXT: <empty>
210
+ // CHECK - NEXT: End of Function "nocfg"
211
+ // CHECK - EMPTY:
212
+ // PAUTH - NEXT: Found call inst: 00000000 : br x0 # UNKNOWN CONTROL FLOW # Offset: 4 # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
213
+ // PAUTH - NEXT: Call destination reg: X0
214
+ // PAUTH - NEXT: SafeToDerefRegs: LR W0 W30 X0 W0_HI W30_HI
215
+ // CHECK - NEXT: Found RET inst: 00000000 : ret # Offset: 8 # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: >
216
+ // CHECK - NEXT: RetReg: LR
217
+ // CHECK - NEXT: Authenticated reg: (none)
218
+ // CHECK - NEXT: SafeToDerefRegs:
219
+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( adr x0 , __ENTRY_nocfg@0x [[ ENTRY_ADDR ]], pacret - state<SafeToDerefRegs: LR W30 W30_HI , Insts: [ 0 ] ()>)
220
+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: LR W0 W30 X0 W0_HI W30_HI , Insts: [ 0 ] ()>)
221
+ // CHECK - NEXT: PacRetAnalysis::ComputeNext( ret x30 , pacret - state<SafeToDerefRegs: , Insts: [ 0 ] ()>)
222
+ // CHECK - NEXT: .. result: (pacret - state<SafeToDerefRegs: , Insts: [ 0 ] ()>)
223
+ // CHECK - NEXT: After detailed PacRetAnalysis:
224
+ // CHECK - NEXT: Binary Function "nocfg" {
225
+ // CHECK - NEXT: Number : 3
226
+ // ...
227
+ // CHECK: Secondary Entry Points : __ENTRY_nocfg@0x [[ ENTRY_ADDR ]]
228
+ // CHECK - NEXT: }
229
+ // CHECK - NEXT: .{{ [ A - Za - z0 - 9 ]+ }}:
230
+ // CHECK - NEXT: 00000000 : adr x0 , __ENTRY_nocfg@0x [[ ENTRY_ADDR ]] # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: [ 0 ] ()>
231
+ // CHECK - NEXT: 00000004 : br x0 # UNKNOWN CONTROL FLOW # Offset: 4 # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: [ 0 ] ()>
232
+ // CHECK - NEXT: __ENTRY_nocfg@0x [[ ENTRY_ADDR ]] (Entry Point):
233
+ // CHECK - NEXT: .{{ [ A - Za - z0 - 9 ]+ }}:
234
+ // CHECK - NEXT: 00000008 : ret # Offset: 8 # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: [ 0 ] ()>
235
+ // CHECK - NEXT: DWARF CFI Instructions:
236
+ // CHECK - NEXT: <empty>
237
+ // CHECK - NEXT: End of Function "nocfg"
238
+ // CHECK - EMPTY:
239
+ // CHECK - NEXT: Attaching clobbering info to: 00000000 : ret # Offset: 8 # NoCFGPacRetAnalysis: pacret - state<SafeToDerefRegs: BitVector , Insts: [ 0 ] ()>
161
240
162
241
// CHECK - LABEL:Analyzing in function main , AllocatorId 1
163
242
.globl main
0 commit comments