From: Sid Manning Date: Fri, 3 May 2019 14:14:01 +0000 (+0000) Subject: Let --discard-all imply --strip-debug. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cd541eae98f2124c1de24c9d53545c30abe1e674;p=llvm Let --discard-all imply --strip-debug. This will match gnu strip's behavior. Differential Revision: https://reviews.llvm.org/D61092 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359887 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/tools/llvm-objcopy/ELF/discard-all-debug.test b/test/tools/llvm-objcopy/ELF/discard-all-debug.test new file mode 100644 index 00000000000..57814e95f3f --- /dev/null +++ b/test/tools/llvm-objcopy/ELF/discard-all-debug.test @@ -0,0 +1,5 @@ +# RUN: cp %p/Inputs/dwarf.dwo %t +# RUN: llvm-strip --keep-symbol=.L.str --discard-all %t -o %t1 +# RUN: llvm-readobj --file-headers --sections %t1 | FileCheck --implicit-check-not=.debug_ %s +# RUN: llvm-objcopy --keep-symbol=.L.str --discard-all %t %t2 +# RUN: llvm-readobj --file-headers --sections %t2 | FileCheck --implicit-check-not=.debug_ %s diff --git a/tools/llvm-objcopy/CopyConfig.cpp b/tools/llvm-objcopy/CopyConfig.cpp index bece6735166..3ea4a950962 100644 --- a/tools/llvm-objcopy/CopyConfig.cpp +++ b/tools/llvm-objcopy/CopyConfig.cpp @@ -584,6 +584,8 @@ Expected parseObjcopyOptions(ArrayRef ArgsArr) { Config.KeepFileSymbols = InputArgs.hasArg(OBJCOPY_keep_file_symbols); Config.DecompressDebugSections = InputArgs.hasArg(OBJCOPY_decompress_debug_sections); + if (Config.DiscardMode == DiscardType::All) + Config.StripDebug = true; for (auto Arg : InputArgs.filtered(OBJCOPY_localize_symbol)) Config.SymbolsToLocalize.emplace_back(Arg->getValue(), UseRegex); for (auto Arg : InputArgs.filtered(OBJCOPY_localize_symbols)) @@ -753,6 +755,9 @@ Expected parseStripOptions(ArrayRef ArgsArr) { !Config.StripAllGNU && Config.SymbolsToRemove.empty()) Config.StripAll = true; + if (Config.DiscardMode == DiscardType::All) + Config.StripDebug = true; + Config.DeterministicArchives = InputArgs.hasFlag(STRIP_enable_deterministic_archives, STRIP_disable_deterministic_archives, /*default=*/true);