diff options
Diffstat (limited to 'llvm/test/tools/llvm-readobj/COFF/arm64-win-error1.s')
| -rw-r--r-- | llvm/test/tools/llvm-readobj/COFF/arm64-win-error1.s | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/COFF/arm64-win-error1.s b/llvm/test/tools/llvm-readobj/COFF/arm64-win-error1.s new file mode 100644 index 00000000000..4cf35902739 --- /dev/null +++ b/llvm/test/tools/llvm-readobj/COFF/arm64-win-error1.s @@ -0,0 +1,54 @@ +## Check that error handling for bad opcodes works. +## .xdata below contains the bad opcode 0xdf in the 4th word of .xdata. + +// REQUIRES: aarch64-registered-target +// RUN: llvm-mc -filetype=obj -triple aarch64-windows %s -o - \ +// RUN: | llvm-readobj --unwind - | FileCheck %s + +// CHECK: Prologue [ +// CHECK: 0xdf ; Bad opcode! +// CHECK: 0xff ; Bad opcode! +// CHECK: 0xd600 ; stp x19, lr, [sp, #0] +// CHECK: 0x01 ; sub sp, #16 +// CHECK: 0xe4 ; end +// CHECK: ] + + .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 0x00d6ffdf + .long 0xe3e3e401 + |

