summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-readobj/arm64-win-error1.s
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/llvm-readobj/arm64-win-error1.s')
-rw-r--r--llvm/test/tools/llvm-readobj/arm64-win-error1.s53
1 files changed, 53 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-readobj/arm64-win-error1.s b/llvm/test/tools/llvm-readobj/arm64-win-error1.s
new file mode 100644
index 00000000000..ba59edf3dea
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/arm64-win-error1.s
@@ -0,0 +1,53 @@
+## 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: 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 0x100d6df
+ .long 0xe3e3e3e4
+
OpenPOWER on IntegriCloud