1# RUN: yaml2obj < %p/Inputs/ret42.yaml > %t.obj
2
3# RUN: lld-link /out:%t.exe /entry:main %t.obj
4# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=BIND %s
5# RUN: lld-link /allowbind /out:%t.exe /entry:main %t.obj
6# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=BIND %s
7BIND-NOT: IMAGE_DLL_CHARACTERISTICS_NO_BIND
8
9# RUN: lld-link /allowbind:no /out:%t.exe /entry:main %t.obj
10# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NOBIND %s
11NOBIND: IMAGE_DLL_CHARACTERISTICS_NO_BIND
12
13# RUN: lld-link /out:%t.exe /entry:main %t.obj
14# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=ISO %s
15# RUN: lld-link /allowisolation /out:%t.exe /entry:main %t.obj
16# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=ISO %s
17ISO-NOT: IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION
18
19# RUN: lld-link /allowisolation:no /out:%t.exe /entry:main %t.obj
20# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NOISO %s
21NOISO: IMAGE_DLL_CHARACTERISTICS_NO_ISOLATION
22
23# RUN: lld-link /out:%t.exe /entry:main %t.obj
24# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=ENT %s
25# RUN: lld-link /out:%t.exe /entry:main /highentropyva %t.obj
26# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=ENT %s
27ENT: IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
28
29# RUN: lld-link /out:%t.exe /highentropyva:no /out:%t.exe /entry:main %t.obj
30# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NOENT %s
31NOENT-NOT: IMAGE_DLL_CHARACTERISTICS_HIGH_ENTROPY_VA
32
33# RUN: lld-link /out:%t.exe /entry:main /integritycheck %t.obj
34# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=INT %s
35INT: IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY
36
37# RUN: lld-link /out:%t.exe /entry:main %t.obj
38# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NOINT %s
39# RUN: lld-link /out:%t.exe /integritycheck:no /out:%t.exe /entry:main %t.obj
40# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NOINT %s
41NOINT-NOT: IMAGE_DLL_CHARACTERISTICS_FORCE_INTEGRITY
42
43# RUN: lld-link /out:%t.exe /entry:main %t.obj
44# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NXCOMPAT %s
45# RUN: lld-link /out:%t.exe /entry:main /nxcompat %t.obj
46# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NXCOMPAT %s
47NXCOMPAT: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT
48
49# RUN: lld-link /out:%t.exe /nxcompat:no /out:%t.exe /entry:main %t.obj
50# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NONXCOMPAT %s
51NONXCOMPAT-NOT: IMAGE_DLL_CHARACTERISTICS_NX_COMPAT
52
53# RUN: lld-link /out:%t.exe /entry:main /swaprun:CD %t.obj
54# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=SWAPCD %s
55# RUN: lld-link /out:%t.exe /entry:main /swaprun:cd,net %t.obj
56# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=SWAPCD %s
57SWAPCD: IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
58
59# RUN: lld-link /out:%t.exe /entry:main %t.obj
60# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NOSWAPCD %s
61NOSWAPCD-NOT: IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP
62
63# RUN: lld-link /out:%t.exe /entry:main /swaprun:NeT %t.obj
64# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=SWAPNET %s
65# RUN: lld-link /out:%t.exe /entry:main /swaprun:net,cd,cd,net %t.obj
66# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=SWAPNET %s
67SWAPNET: IMAGE_FILE_NET_RUN_FROM_SWAP
68
69# RUN: lld-link /out:%t.exe /entry:main %t.obj
70# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NOSWAPNET %s
71NOSWAPNET-NOT: IMAGE_FILE_NET_RUN_FROM_SWAP
72
73# RUN: not lld-link /out:%t.exe /entry:main /swaprun: %t.obj 2>&1 | \
74# RUN:     FileCheck -check-prefix=SWAPERR1 %s
75# RUN: not lld-link /out:%t.exe /entry:main /swaprun:cd, %t.obj 2>&1 | \
76# RUN:     FileCheck -check-prefix=SWAPERR1 %s
77# RUN: not lld-link /out:%t.exe /entry:main /swaprun:,, %t.obj 2>&1 | \
78# RUN:     FileCheck -check-prefix=SWAPERR1 %s
79# RUN: not lld-link /out:%t.exe /entry:main /swaprun:,cd %t.obj 2>&1 | \
80# RUN:     FileCheck -check-prefix=SWAPERR1 %s
81SWAPERR1: /swaprun: missing argument
82
83# RUN: not lld-link /out:%t.exe /entry:main /swaprun:foo %t.obj 2>&1 | \
84# RUN:     FileCheck -check-prefix=SWAPERR2 %s
85# RUN: not lld-link /out:%t.exe /entry:main /swaprun:cd,foo,net %t.obj 2>&1 | \
86# RUN:     FileCheck -check-prefix=SWAPERR2 %s
87SWAPERR2: /swaprun: invalid argument: foo
88
89# RUN: not lld-link /out:%t.exe /entry:main /swaprun:cdfoo,net %t.obj 2>&1 | \
90# RUN:     FileCheck -check-prefix=SWAPERR3 %s
91SWAPERR3: /swaprun: invalid argument: cdfoo
92
93# RUN: lld-link /out:%t.exe /entry:main %t.obj
94# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=TSAWARE %s
95# RUN: lld-link /out:%t.exe /entry:main /tsaware %t.obj
96# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=TSAWARE %s
97TSAWARE: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE
98
99# RUN: lld-link /tsaware:no /out:%t.exe /entry:main %t.obj
100# RUN: llvm-readobj --file-headers %t.exe | FileCheck -check-prefix=NOTSAWARE %s
101# RUN: lld-link /dll /out:%t.dll /entry:main %t.obj
102# RUN: llvm-readobj --file-headers %t.dll | FileCheck -check-prefix=NOTSAWARE %s
103# RUN: lld-link /tsaware /dll /out:%t.dll /entry:main %t.obj
104# RUN: llvm-readobj --file-headers %t.dll | FileCheck -check-prefix=NOTSAWARE %s
105NOTSAWARE-NOT: IMAGE_DLL_CHARACTERISTICS_TERMINAL_SERVER_AWARE
106