xref: /llvm-project/llvm/test/tools/llvm-objcopy/COFF/subsystem.test (revision 6aefa918768c834ec21e0b599fa14d03b9ce3dc0)
1392aa97aSMartin Storsjö## Test the --subsystem option.
2392aa97aSMartin Storsjö
3392aa97aSMartin Storsjö# RUN: yaml2obj %s -o %t.in.exe
4392aa97aSMartin Storsjö
5392aa97aSMartin Storsjö# RUN: llvm-objcopy --subsystem=posix:7.4 --subsystem windows %t.in.exe %t.out.exe
6392aa97aSMartin Storsjö# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=WIN74
7392aa97aSMartin Storsjö
8392aa97aSMartin Storsjö# WIN74: MajorOperatingSystemVersion: 6
9392aa97aSMartin Storsjö# WIN74: MinorOperatingSystemVersion: 0
10392aa97aSMartin Storsjö# WIN74: MajorSubsystemVersion: 7
11392aa97aSMartin Storsjö# WIN74: MinorSubsystemVersion: 4
12392aa97aSMartin Storsjö# WIN74: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_GUI
13392aa97aSMartin Storsjö
14392aa97aSMartin Storsjö# RUN: llvm-objcopy --subsystem=posix:7.4 --subsystem windows:9 %t.in.exe %t.out.exe
15392aa97aSMartin Storsjö# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=WIN90
16392aa97aSMartin Storsjö
17392aa97aSMartin Storsjö# WIN90: MajorOperatingSystemVersion: 6
18392aa97aSMartin Storsjö# WIN90: MinorOperatingSystemVersion: 0
19392aa97aSMartin Storsjö# WIN90: MajorSubsystemVersion: 9
20392aa97aSMartin Storsjö# WIN90: MinorSubsystemVersion: 0
21392aa97aSMartin Storsjö# WIN90: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_GUI
22392aa97aSMartin Storsjö
23392aa97aSMartin Storsjö# RUN: not llvm-objcopy --subsystem=foobar %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-SUBSYS
24392aa97aSMartin Storsjö
25392aa97aSMartin Storsjö# INVALID-SUBSYS: 'foobar' is not a valid subsystem{{$}}
26392aa97aSMartin Storsjö
27392aa97aSMartin Storsjö# RUN: not llvm-objcopy --subsystem=windows:foo %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-MAJOR-NUMBER
28392aa97aSMartin Storsjö# RUN: not llvm-objcopy --subsystem=windows:8.bar %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-MINOR-NUMBER
29392aa97aSMartin Storsjö
30392aa97aSMartin Storsjö# INVALID-MAJOR-NUMBER: 'foo' is not a valid subsystem major version
31392aa97aSMartin Storsjö# INVALID-MINOR-NUMBER: 'bar' is not a valid subsystem minor version
32392aa97aSMartin Storsjö
33*6aefa918SVictor Campos# RUN: llvm-objcopy --subsystem=efi_application %t.in.exe %t.out.exe
34*6aefa918SVictor Campos# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-APPLICATION
35*6aefa918SVictor Campos# RUN: llvm-objcopy --subsystem=efi-app %t.in.exe %t.out.exe
36*6aefa918SVictor Campos# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-APPLICATION
37*6aefa918SVictor Campos
38*6aefa918SVictor Campos# EFI-APPLICATION: Subsystem: IMAGE_SUBSYSTEM_EFI_APPLICATION
39*6aefa918SVictor Campos
40*6aefa918SVictor Campos# RUN: llvm-objcopy --subsystem=efi_boot_service_driver %t.in.exe %t.out.exe
41*6aefa918SVictor Campos# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-BOOT-SERVICE-DRIVER
42*6aefa918SVictor Campos# RUN: llvm-objcopy --subsystem=efi-bsd %t.in.exe %t.out.exe
43*6aefa918SVictor Campos# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-BOOT-SERVICE-DRIVER
44*6aefa918SVictor Campos
45*6aefa918SVictor Campos# EFI-BOOT-SERVICE-DRIVER: Subsystem: IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
46*6aefa918SVictor Campos
47*6aefa918SVictor Campos# RUN: llvm-objcopy --subsystem=efi_runtime_driver %t.in.exe %t.out.exe
48*6aefa918SVictor Campos# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-RUNTIME-DRIVER
49*6aefa918SVictor Campos# RUN: llvm-objcopy --subsystem=efi-rtd %t.in.exe %t.out.exe
50*6aefa918SVictor Campos# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-RUNTIME-DRIVER
51*6aefa918SVictor Campos
52*6aefa918SVictor Campos# EFI-RUNTIME-DRIVER: Subsystem: IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER
53*6aefa918SVictor Campos
54392aa97aSMartin Storsjö--- !COFF
55392aa97aSMartin StorsjöOptionalHeader:
56392aa97aSMartin Storsjö  AddressOfEntryPoint: 4096
57392aa97aSMartin Storsjö  ImageBase:       1073741824
58392aa97aSMartin Storsjö  SectionAlignment: 4096
59392aa97aSMartin Storsjö  FileAlignment:   512
60392aa97aSMartin Storsjö  MajorOperatingSystemVersion: 6
61392aa97aSMartin Storsjö  MinorOperatingSystemVersion: 0
62392aa97aSMartin Storsjö  MajorImageVersion: 0
63392aa97aSMartin Storsjö  MinorImageVersion: 0
64392aa97aSMartin Storsjö  MajorSubsystemVersion: 6
65392aa97aSMartin Storsjö  MinorSubsystemVersion: 0
66392aa97aSMartin Storsjö  Subsystem:       IMAGE_SUBSYSTEM_WINDOWS_CUI
67392aa97aSMartin Storsjö  DLLCharacteristics: [  ]
68392aa97aSMartin Storsjö  SizeOfStackReserve: 1048576
69392aa97aSMartin Storsjö  SizeOfStackCommit: 4096
70392aa97aSMartin Storsjö  SizeOfHeapReserve: 1048576
71392aa97aSMartin Storsjö  SizeOfHeapCommit: 4096
72392aa97aSMartin Storsjöheader:
73392aa97aSMartin Storsjö  Machine:         IMAGE_FILE_MACHINE_AMD64
74392aa97aSMartin Storsjö  Characteristics: [  ]
75392aa97aSMartin Storsjösections:
76392aa97aSMartin Storsjö  - Name:            .text
77392aa97aSMartin Storsjö    Characteristics: [  ]
78392aa97aSMartin Storsjö    VirtualAddress:  4096
79392aa97aSMartin Storsjö    VirtualSize:     1
80392aa97aSMartin Storsjö    SectionData:     C3
81392aa97aSMartin Storsjösymbols:
82392aa97aSMartin Storsjö...
83