45 lines
1.1 KiB
ArmAsm
45 lines
1.1 KiB
ArmAsm
|
# REQUIRES: x86
|
||
|
# RUN: llvm-mc -triple i686-windows-msvc %s -filetype=obj -o %t.obj
|
||
|
# RUN: lld-link %t.obj -safeseh -out:%t.exe -entry:main
|
||
|
# RUN: llvm-readobj -file-headers %t.exe | FileCheck %s
|
||
|
|
||
|
# This object lacks a _load_config_used global, so we set
|
||
|
# IMAGE_DLL_CHARACTERISTICS_NO_SEH even though there is an exception handler.
|
||
|
# This is a more secure default. If someone wants to use a CRT without a load
|
||
|
# config and they want to use 32-bit SEH, they will need to provide a
|
||
|
# safeseh-compatible load config.
|
||
|
|
||
|
# CHECK-LABEL: Characteristics [
|
||
|
# CHECK: IMAGE_DLL_CHARACTERISTICS_NO_SEH
|
||
|
# CHECK: ]
|
||
|
|
||
|
# CHECK-LABEL: DataDirectory {
|
||
|
# CHECK: LoadConfigTableRVA: 0x0
|
||
|
# CHECK: LoadConfigTableSize: 0x0
|
||
|
# CHECK: }
|
||
|
|
||
|
# CHECK-NOT: LoadConfig
|
||
|
# CHECK-NOT: SEHTable
|
||
|
|
||
|
.def @feat.00;
|
||
|
.scl 3;
|
||
|
.type 0;
|
||
|
.endef
|
||
|
.globl @feat.00
|
||
|
@feat.00 = 1
|
||
|
|
||
|
.text
|
||
|
.def _main; .scl 2; .type 32; .endef
|
||
|
.globl _main
|
||
|
_main:
|
||
|
pushl $_my_handler
|
||
|
movl $42, %eax
|
||
|
popl %ecx
|
||
|
ret
|
||
|
|
||
|
.def _my_handler; .scl 3; .type 32; .endef
|
||
|
_my_handler:
|
||
|
ret
|
||
|
|
||
|
.safeseh _my_handler
|