## 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