summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/test/tools/llvm-objcopy/basic-only-keep-debug.test20
-rw-r--r--llvm/tools/llvm-objcopy/ObjcopyOpts.td2
-rw-r--r--llvm/tools/llvm-objcopy/llvm-objcopy.cpp2
3 files changed, 24 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/basic-only-keep-debug.test b/llvm/test/tools/llvm-objcopy/basic-only-keep-debug.test
new file mode 100644
index 00000000000..c35c4a5c60a
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/basic-only-keep-debug.test
@@ -0,0 +1,20 @@
+# NOTE: This test is only intended to be valid as long as --only-keep-debug is
+# implemented as a NOP. This test should fail when that changes and you
+# will need to update this test.
+
+# RUN: yaml2obj %s > %t
+# RUN: llvm-objcopy %t %t2
+# RUN: llvm-objcopy --only-keep-debug %t %t3
+# RUN: cmp %t2 %t3
+
+!ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_X86_64
+Sections:
+ - Name: .text
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
+ Content: "DEADBEEF"
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOpts.td b/llvm/tools/llvm-objcopy/ObjcopyOpts.td
index 92f2c74482c..9d1fb19c40c 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOpts.td
+++ b/llvm/tools/llvm-objcopy/ObjcopyOpts.td
@@ -88,3 +88,5 @@ defm keep_symbol : Eq<"keep-symbol">,
HelpText<"Do not remove symbol <symbol>">;
def K : JoinedOrSeparate<["-"], "K">,
Alias<keep_symbol>;
+def only_keep_debug : Flag<["-", "--"], "only-keep-debug">,
+ HelpText<"Currently ignored. Only for compaitability with GNU objcopy.">;
diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
index 24ec18817c9..4c02b16d791 100644
--- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
@@ -160,6 +160,7 @@ struct CopyConfig {
bool LocalizeHidden = false;
bool Weaken = false;
bool DiscardAll = false;
+ bool OnlyKeepDebug = false;
};
using SectionPred = std::function<bool(const SectionBase &Sec)>;
@@ -482,6 +483,7 @@ CopyConfig ParseObjcopyOptions(ArrayRef<const char *> ArgsArr) {
Config.LocalizeHidden = InputArgs.hasArg(OBJCOPY_localize_hidden);
Config.Weaken = InputArgs.hasArg(OBJCOPY_weaken);
Config.DiscardAll = InputArgs.hasArg(OBJCOPY_discard_all);
+ Config.OnlyKeepDebug = InputArgs.hasArg(OBJCOPY_only_keep_debug);
for (auto Arg : InputArgs.filtered(OBJCOPY_localize_symbol))
Config.SymbolsToLocalize.push_back(Arg->getValue());
for (auto Arg : InputArgs.filtered(OBJCOPY_globalize_symbol))
OpenPOWER on IntegriCloud