## Check that the sanity check for an inconsistent header works.
## The first word contains the bad value for CodeWords, 0xf, which indicates
## that we need 0x11110 << 2 =  120 bytes of space for the unwind codes.
## It follows that the .xdata section is badly formed as only 8 bytes are
## allocated for the unwind codes.

// REQUIRES: aarch64-registered-target
// RUN: llvm-mc -filetype=obj -triple aarch64-windows %s -o - \
// RUN:   | not llvm-readobj --unwind - 2>&1 | FileCheck %s

// CHECK: LLVM ERROR: Malformed 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		0xf0800012
	.long 		0x8
	.long 		0xe
	.long 		0x100d61f
	.long 		0xe3e3e3e4

