2020-08-20 16:53:56 +08:00
|
|
|
// This test checks that the SEH directives don't cause the assembler to fail.
|
2018-12-19 06:10:17 +08:00
|
|
|
|
2020-07-20 15:39:14 +08:00
|
|
|
// RUN: llvm-mc -triple aarch64-pc-win32 -filetype=obj %s | llvm-readobj -S -r - | FileCheck %s
|
2018-12-19 06:10:17 +08:00
|
|
|
|
|
|
|
// CHECK: Sections [
|
|
|
|
// CHECK: Section {
|
|
|
|
// CHECK: Name: .text
|
|
|
|
// CHECK: RelocationCount: 0
|
|
|
|
// CHECK: Characteristics [
|
|
|
|
// CHECK-NEXT: ALIGN_4BYTES
|
|
|
|
// CHECK-NEXT: CNT_CODE
|
|
|
|
// CHECK-NEXT: MEM_EXECUTE
|
|
|
|
// CHECK-NEXT: MEM_READ
|
|
|
|
// CHECK-NEXT: ]
|
|
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK: Section {
|
|
|
|
// CHECK: Name: .xdata
|
2020-08-20 16:53:56 +08:00
|
|
|
// CHECK: RawDataSize: 20
|
2018-12-19 06:10:17 +08:00
|
|
|
// CHECK: RelocationCount: 1
|
|
|
|
// CHECK: Characteristics [
|
|
|
|
// CHECK-NEXT: ALIGN_4BYTES
|
|
|
|
// CHECK-NEXT: CNT_INITIALIZED_DATA
|
|
|
|
// CHECK-NEXT: MEM_READ
|
|
|
|
// CHECK-NEXT: ]
|
|
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK: Section {
|
|
|
|
// CHECK: Name: .pdata
|
2020-08-20 16:53:56 +08:00
|
|
|
// CHECK: RelocationCount: 4
|
2018-12-19 06:10:17 +08:00
|
|
|
// CHECK: Characteristics [
|
|
|
|
// CHECK-NEXT: ALIGN_4BYTES
|
|
|
|
// CHECK-NEXT: CNT_INITIALIZED_DATA
|
|
|
|
// CHECK-NEXT: MEM_READ
|
|
|
|
// CHECK-NEXT: ]
|
|
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK-NEXT: ]
|
|
|
|
|
|
|
|
// CHECK-NEXT: Relocations [
|
|
|
|
// CHECK-NEXT: Section (4) .xdata {
|
|
|
|
// CHECK-NEXT: 0x8 IMAGE_REL_ARM64_ADDR32NB __C_specific_handler
|
|
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK-NEXT: Section (5) .pdata {
|
|
|
|
// CHECK-NEXT: 0x0 IMAGE_REL_ARM64_ADDR32NB func
|
|
|
|
// CHECK-NEXT: 0x4 IMAGE_REL_ARM64_ADDR32NB .xdata
|
2020-08-20 16:53:56 +08:00
|
|
|
// CHECK-NEXT: 0x8 IMAGE_REL_ARM64_ADDR32NB smallFunc
|
2018-12-19 06:10:17 +08:00
|
|
|
// CHECK-NEXT: 0xC IMAGE_REL_ARM64_ADDR32NB .xdata
|
|
|
|
// CHECK-NEXT: }
|
|
|
|
// CHECK-NEXT: ]
|
|
|
|
|
|
|
|
|
|
|
|
.text
|
|
|
|
.globl func
|
|
|
|
.def func
|
|
|
|
.scl 2
|
|
|
|
.type 32
|
|
|
|
.endef
|
|
|
|
.seh_proc func
|
|
|
|
func:
|
|
|
|
sub sp, sp, #24
|
|
|
|
.seh_stackalloc 24
|
|
|
|
mov x29, sp
|
|
|
|
.seh_endprologue
|
|
|
|
.seh_handler __C_specific_handler, @except
|
|
|
|
.seh_handlerdata
|
|
|
|
.long 0
|
|
|
|
.text
|
|
|
|
add sp, sp, #24
|
|
|
|
ret
|
|
|
|
.seh_endproc
|
|
|
|
|
|
|
|
// Test emission of small functions.
|
|
|
|
.globl smallFunc
|
|
|
|
.def smallFunc
|
|
|
|
.scl 2
|
|
|
|
.type 32
|
|
|
|
.endef
|
|
|
|
.seh_proc smallFunc
|
|
|
|
smallFunc:
|
|
|
|
ret
|
|
|
|
.seh_endproc
|