diff options
-rw-r--r-- | llvm/test/tools/llvm-objcopy/basic-only-keep-debug.test | 20 | ||||
-rw-r--r-- | llvm/tools/llvm-objcopy/ObjcopyOpts.td | 2 | ||||
-rw-r--r-- | llvm/tools/llvm-objcopy/llvm-objcopy.cpp | 2 |
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)) |