[llvm] 6aefa91 - [llvm-objcopy][COFF] Add aliases for some --subsystem options (#98036)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 9 06:52:57 PDT 2024
Author: Victor Campos
Date: 2024-07-09T14:52:54+01:00
New Revision: 6aefa918768c834ec21e0b599fa14d03b9ce3dc0
URL: https://github.com/llvm/llvm-project/commit/6aefa918768c834ec21e0b599fa14d03b9ce3dc0
DIFF: https://github.com/llvm/llvm-project/commit/6aefa918768c834ec21e0b599fa14d03b9ce3dc0.diff
LOG: [llvm-objcopy][COFF] Add aliases for some --subsystem options (#98036)
GNU objcopy has some --subsystem options that aren't present in LLVM's.
They are in fact just aliases to some of the existing options.
For the sake of compatibility with the GNU toolchain, this patch adds
these aliases to LLVM objcopy.
The alias list is not exhaustive as this is an incremental change.
Added:
Modified:
llvm/test/tools/llvm-objcopy/COFF/subsystem.test
llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-objcopy/COFF/subsystem.test b/llvm/test/tools/llvm-objcopy/COFF/subsystem.test
index 4d73ed83941c7..3ee1069d0373c 100644
--- a/llvm/test/tools/llvm-objcopy/COFF/subsystem.test
+++ b/llvm/test/tools/llvm-objcopy/COFF/subsystem.test
@@ -30,6 +30,27 @@
# INVALID-MAJOR-NUMBER: 'foo' is not a valid subsystem major version
# INVALID-MINOR-NUMBER: 'bar' is not a valid subsystem minor version
+# RUN: llvm-objcopy --subsystem=efi_application %t.in.exe %t.out.exe
+# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-APPLICATION
+# RUN: llvm-objcopy --subsystem=efi-app %t.in.exe %t.out.exe
+# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-APPLICATION
+
+# EFI-APPLICATION: Subsystem: IMAGE_SUBSYSTEM_EFI_APPLICATION
+
+# RUN: llvm-objcopy --subsystem=efi_boot_service_driver %t.in.exe %t.out.exe
+# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-BOOT-SERVICE-DRIVER
+# RUN: llvm-objcopy --subsystem=efi-bsd %t.in.exe %t.out.exe
+# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-BOOT-SERVICE-DRIVER
+
+# EFI-BOOT-SERVICE-DRIVER: Subsystem: IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
+
+# RUN: llvm-objcopy --subsystem=efi_runtime_driver %t.in.exe %t.out.exe
+# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-RUNTIME-DRIVER
+# RUN: llvm-objcopy --subsystem=efi-rtd %t.in.exe %t.out.exe
+# RUN: llvm-readobj --file-headers %t.out.exe | FileCheck %s --check-prefix=EFI-RUNTIME-DRIVER
+
+# EFI-RUNTIME-DRIVER: Subsystem: IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER
+
--- !COFF
OptionalHeader:
AddressOfEntryPoint: 4096
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
index d5f95f874ea6f..eb27ba05fbb73 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
@@ -710,12 +710,13 @@ objcopy::parseObjcopyOptions(ArrayRef<const char *> RawArgsArr,
.Case("boot_application",
COFF::IMAGE_SUBSYSTEM_WINDOWS_BOOT_APPLICATION)
.Case("console", COFF::IMAGE_SUBSYSTEM_WINDOWS_CUI)
- .Case("efi_application", COFF::IMAGE_SUBSYSTEM_EFI_APPLICATION)
- .Case("efi_boot_service_driver",
- COFF::IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER)
+ .Cases("efi_application", "efi-app",
+ COFF::IMAGE_SUBSYSTEM_EFI_APPLICATION)
+ .Cases("efi_boot_service_driver", "efi-bsd",
+ COFF::IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER)
.Case("efi_rom", COFF::IMAGE_SUBSYSTEM_EFI_ROM)
- .Case("efi_runtime_driver",
- COFF::IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER)
+ .Cases("efi_runtime_driver", "efi-rtd",
+ COFF::IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER)
.Case("native", COFF::IMAGE_SUBSYSTEM_NATIVE)
.Case("posix", COFF::IMAGE_SUBSYSTEM_POSIX_CUI)
.Case("windows", COFF::IMAGE_SUBSYSTEM_WINDOWS_GUI)
More information about the llvm-commits
mailing list