52 lines
1.2 KiB
ArmAsm
52 lines
1.2 KiB
ArmAsm
## Check that error handling for going past the unwind data works.
|
|
## .xdata below contains bad opcodes in the last word. The last byte, 0xe0,
|
|
## indicates that we have come across alloc_l, which requires 4 bytes. In this
|
|
## case, unwind code processing will go past the allocated unwind data.
|
|
|
|
// REQUIRES: aarch64-registered-target
|
|
// RUN: llvm-mc -filetype=obj -triple aarch64-windows %s -o - \
|
|
// RUN: | llvm-readobj --unwind - | FileCheck %s
|
|
|
|
// CHECK: Prologue [
|
|
// CHECK: Opcode 0xe0 goes past the unwind data
|
|
|
|
.text
|
|
.globl "?func@@YAHXZ"
|
|
.p2align 3
|
|
"?func@@YAHXZ":
|
|
sub sp,sp,#0x10
|
|
stp x19,lr,[sp]
|
|
sub sp,sp,#0x1F0
|
|
mov w19,w0
|
|
bl "?func2@@YAXXZ"
|
|
cmp w19,#2
|
|
ble .LBB0_1
|
|
bl "?func2@@YAHXZ"
|
|
add sp,sp,#0x1F0
|
|
ldp x19,lr,[sp]
|
|
add sp,sp,#0x10
|
|
ret
|
|
.LBB0_1:
|
|
mov x0,sp
|
|
bl "?func3@@YAHPEAH@Z"
|
|
add sp,sp,#0x1F0
|
|
ldp x19,lr,[sp]
|
|
add sp,sp,#0x10
|
|
ret
|
|
|
|
|
|
.section .pdata,"dr"
|
|
.long "?func@@YAHXZ"@IMGREL
|
|
.long "$unwind$func@@YAHXZ"@IMGREL
|
|
|
|
|
|
.section .xdata,"dr"
|
|
"$unwind$func@@YAHXZ":
|
|
.p2align 3
|
|
.long 0x10800012
|
|
.long 0x8
|
|
.long 0xe
|
|
.long 0x100d61f
|
|
.long 0xe0000000
|
|
|