## Test the --subsystem option. # RUN: yaml2obj %s -o %t.in.exe # RUN: llvm-objcopy --subsystem=posix:7.4 --subsystem windows %t.in.exe %t.out.exe # RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=WIN74 # WIN74: MajorOperatingSystemVersion: 6 # WIN74: MinorOperatingSystemVersion: 0 # WIN74: MajorSubsystemVersion: 7 # WIN74: MinorSubsystemVersion: 4 # WIN74: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_GUI # RUN: llvm-objcopy --subsystem=posix:7.4 --subsystem windows:9 %t.in.exe %t.out.exe # RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=WIN90 # WIN90: MajorOperatingSystemVersion: 6 # WIN90: MinorOperatingSystemVersion: 0 # WIN90: MajorSubsystemVersion: 9 # WIN90: MinorSubsystemVersion: 0 # WIN90: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_GUI # RUN: not llvm-objcopy --subsystem=foobar %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-SUBSYS # INVALID-SUBSYS: 'foobar' is not a valid subsystem{{$}} # RUN: not llvm-objcopy --subsystem=windows:foo %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-MAJOR-NUMBER # RUN: not llvm-objcopy --subsystem=windows:8.bar %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-MINOR-NUMBER # INVALID-MAJOR-NUMBER: 'foo' is not a valid subsystem major version # INVALID-MINOR-NUMBER: 'bar' is not a valid subsystem minor version --- !COFF OptionalHeader: AddressOfEntryPoint: 4096 ImageBase: 1073741824 SectionAlignment: 4096 FileAlignment: 512 MajorOperatingSystemVersion: 6 MinorOperatingSystemVersion: 0 MajorImageVersion: 0 MinorImageVersion: 0 MajorSubsystemVersion: 6 MinorSubsystemVersion: 0 Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI DLLCharacteristics: [ ] SizeOfStackReserve: 1048576 SizeOfStackCommit: 4096 SizeOfHeapReserve: 1048576 SizeOfHeapCommit: 4096 header: Machine: IMAGE_FILE_MACHINE_AMD64 Characteristics: [ ] sections: - Name: .text Characteristics: [ ] VirtualAddress: 4096 VirtualSize: 1 SectionData: C3 symbols: ...