[llvm] [objcopy] Add aliases to some llvm-objcopy --subsystem options (PR #98036)
Victor Campos via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 8 08:53:58 PDT 2024
https://github.com/vhscampos created https://github.com/llvm/llvm-project/pull/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.
>From b943835fdcf780f804bb5e44c5bbbc4401642403 Mon Sep 17 00:00:00 2001
From: Victor Campos <victor.campos at arm.com>
Date: Fri, 5 Jul 2024 15:29:16 +0100
Subject: [PATCH] [objcopy] Add aliases to some llvm-objcopy --subsystem
options
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.
---
llvm/test/tools/llvm-objcopy/COFF/subsystem.test | 9 +++++++++
llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | 11 ++++++-----
2 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/llvm/test/tools/llvm-objcopy/COFF/subsystem.test b/llvm/test/tools/llvm-objcopy/COFF/subsystem.test
index 4d73ed83941c7..92d49e80a8d00 100644
--- a/llvm/test/tools/llvm-objcopy/COFF/subsystem.test
+++ b/llvm/test/tools/llvm-objcopy/COFF/subsystem.test
@@ -30,6 +30,15 @@
# 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
+# RUN: llvm-objcopy --subsystem=efi-app %t.in.exe
+
+# RUN: llvm-objcopy --subsystem=efi_boot_service_driver %t.in.exe
+# RUN: llvm-objcopy --subsystem=efi-bsd %t.in.exe
+
+# RUN: llvm-objcopy --subsystem=efi_runtime_driver %t.in.exe
+# RUN: llvm-objcopy --subsystem=efi-rtd %t.in.exe
+
--- !COFF
OptionalHeader:
AddressOfEntryPoint: 4096
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
index 4ab3b7265f2f6..7e7ed2a23889c 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
+++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp
@@ -678,12 +678,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