Index: llvm/test/tools/llvm-objcopy/basic-only-keep-debug.test =================================================================== --- /dev/null +++ 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" Index: llvm/tools/llvm-objcopy/ObjcopyOpts.td =================================================================== --- llvm/tools/llvm-objcopy/ObjcopyOpts.td +++ llvm/tools/llvm-objcopy/ObjcopyOpts.td @@ -83,3 +83,5 @@ HelpText<"Remove symbol ">; def N : JoinedOrSeparate<["-"], "N">, Alias; +def only_keep_debug : Flag<["-", "--"], "only-keep-debug">, + HelpText<"Currently ignored. Only for compaitability with GNU objcopy.">; Index: llvm/tools/llvm-objcopy/llvm-objcopy.cpp =================================================================== --- llvm/tools/llvm-objcopy/llvm-objcopy.cpp +++ llvm/tools/llvm-objcopy/llvm-objcopy.cpp @@ -159,6 +159,7 @@ bool LocalizeHidden = false; bool Weaken = false; bool DiscardAll = false; + bool OnlyKeepDebug = false; }; using SectionPred = std::function; @@ -477,6 +478,7 @@ 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))