1## Test the --subsystem option. 2 3# RUN: yaml2obj %s -o %t.in.exe 4 5# RUN: llvm-objcopy --subsystem=posix:7.4 --subsystem windows %t.in.exe %t.out.exe 6# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=WIN74 7 8# WIN74: MajorOperatingSystemVersion: 6 9# WIN74: MinorOperatingSystemVersion: 0 10# WIN74: MajorSubsystemVersion: 7 11# WIN74: MinorSubsystemVersion: 4 12# WIN74: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_GUI 13 14# RUN: llvm-objcopy --subsystem=posix:7.4 --subsystem windows:9 %t.in.exe %t.out.exe 15# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=WIN90 16 17# WIN90: MajorOperatingSystemVersion: 6 18# WIN90: MinorOperatingSystemVersion: 0 19# WIN90: MajorSubsystemVersion: 9 20# WIN90: MinorSubsystemVersion: 0 21# WIN90: Subsystem: IMAGE_SUBSYSTEM_WINDOWS_GUI 22 23# RUN: not llvm-objcopy --subsystem=foobar %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-SUBSYS 24 25# INVALID-SUBSYS: 'foobar' is not a valid subsystem{{$}} 26 27# RUN: not llvm-objcopy --subsystem=windows:foo %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-MAJOR-NUMBER 28# RUN: not llvm-objcopy --subsystem=windows:8.bar %t.in.exe %t.err.exe 2>&1 | FileCheck %s --check-prefix=INVALID-MINOR-NUMBER 29 30# INVALID-MAJOR-NUMBER: 'foo' is not a valid subsystem major version 31# INVALID-MINOR-NUMBER: 'bar' is not a valid subsystem minor version 32 33# RUN: llvm-objcopy --subsystem=efi_application %t.in.exe %t.out.exe 34# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-APPLICATION 35# RUN: llvm-objcopy --subsystem=efi-app %t.in.exe %t.out.exe 36# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-APPLICATION 37 38# EFI-APPLICATION: Subsystem: IMAGE_SUBSYSTEM_EFI_APPLICATION 39 40# RUN: llvm-objcopy --subsystem=efi_boot_service_driver %t.in.exe %t.out.exe 41# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-BOOT-SERVICE-DRIVER 42# RUN: llvm-objcopy --subsystem=efi-bsd %t.in.exe %t.out.exe 43# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-BOOT-SERVICE-DRIVER 44 45# EFI-BOOT-SERVICE-DRIVER: Subsystem: IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 46 47# RUN: llvm-objcopy --subsystem=efi_runtime_driver %t.in.exe %t.out.exe 48# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-RUNTIME-DRIVER 49# RUN: llvm-objcopy --subsystem=efi-rtd %t.in.exe %t.out.exe 50# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-RUNTIME-DRIVER 51 52# EFI-RUNTIME-DRIVER: Subsystem: IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 53 54--- !COFF 55OptionalHeader: 56 AddressOfEntryPoint: 4096 57 ImageBase: 1073741824 58 SectionAlignment: 4096 59 FileAlignment: 512 60 MajorOperatingSystemVersion: 6 61 MinorOperatingSystemVersion: 0 62 MajorImageVersion: 0 63 MinorImageVersion: 0 64 MajorSubsystemVersion: 6 65 MinorSubsystemVersion: 0 66 Subsystem: IMAGE_SUBSYSTEM_WINDOWS_CUI 67 DLLCharacteristics: [ ] 68 SizeOfStackReserve: 1048576 69 SizeOfStackCommit: 4096 70 SizeOfHeapReserve: 1048576 71 SizeOfHeapCommit: 4096 72header: 73 Machine: IMAGE_FILE_MACHINE_AMD64 74 Characteristics: [ ] 75sections: 76 - Name: .text 77 Characteristics: [ ] 78 VirtualAddress: 4096 79 VirtualSize: 1 80 SectionData: C3 81symbols: 82... 83