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