Index: llvm/trunk/test/tools/llvm-objcopy/ELF/strip-sections.test =================================================================== --- llvm/trunk/test/tools/llvm-objcopy/ELF/strip-sections.test +++ llvm/trunk/test/tools/llvm-objcopy/ELF/strip-sections.test @@ -8,6 +8,11 @@ # RUN: llvm-objcopy %t %t3 # RUN: od -t x1 -j 4096 -N 12 %t3 | FileCheck %s --check-prefix=VALIDATE +## Check that llvm-strip --strip-sections is equivalent to +## llvm-objcopy --strip-sections. +# RUN: llvm-strip --strip-sections %t -o %t4 +# RUN: cmp %t2 %t4 + !ELF FileHeader: Class: ELFCLASS64 Index: llvm/trunk/tools/llvm-objcopy/CopyConfig.cpp =================================================================== --- llvm/trunk/tools/llvm-objcopy/CopyConfig.cpp +++ llvm/trunk/tools/llvm-objcopy/CopyConfig.cpp @@ -810,6 +810,7 @@ InputArgs.hasFlag(STRIP_discard_all, STRIP_discard_locals) ? DiscardType::All : DiscardType::Locals; + Config.StripSections = InputArgs.hasArg(STRIP_strip_sections); Config.StripUnneeded = InputArgs.hasArg(STRIP_strip_unneeded); if (auto Arg = InputArgs.getLastArg(STRIP_strip_all, STRIP_no_strip_all)) Config.StripAll = Arg->getOption().getID() == STRIP_strip_all; Index: llvm/trunk/tools/llvm-objcopy/StripOpts.td =================================================================== --- llvm/trunk/tools/llvm-objcopy/StripOpts.td +++ llvm/trunk/tools/llvm-objcopy/StripOpts.td @@ -52,6 +52,9 @@ def d : Flag<["-"], "d">, Alias; def g : Flag<["-"], "g">, Alias; def S : Flag<["-"], "S">, Alias; +def strip_sections + : Flag<["--"], "strip-sections">, + HelpText<"Remove all section headers and all sections not in segments">; def strip_unneeded : Flag<["--"], "strip-unneeded">, HelpText<"Remove all symbols not needed by relocations">;