[PATCH] D53163: [llvm-strip] Support -s alias for --strip-all. Make both strip and objcopy case sensitive to support both -s (--strip-all) and -S (--strip-debug).

Jordan Rupprecht via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 11 13:00:19 PDT 2018


rupprecht created this revision.
rupprecht added reviewers: jakehehrlich, jhenderson, alexshap.
Herald added a subscriber: llvm-commits.

GNU strip supports both `-s` and `-S` as aliases for `--strip-all` and `--strip-debug`, respectfully.

As part of this, it turns out that strip/objcopy were accepting case insensitive command line args. I'm not sure if there was an explicit reason for this. The only others uses of this are llvm-cvtres/llvm-mt/llvm-lib, which are all tools specific for windows support. Forcing case sensitivity allows both aliases to exist, but seems like a good idea anyway.

And as a surprise test case adjustment, the llvm-strip unit test was running with `-keep=unavailable_symbol`, despite `keep` not be a valid flag for strip. This is because there is a flag `-K` which, when case insensitivity is permitted, allows it to be interpreted as `-K` = `eep=unavailable_symbol` (e.g. to allow `-Kfoo` == `--keep-symbol=foo').


Repository:
  rL LLVM

https://reviews.llvm.org/D53163

Files:
  test/tools/llvm-objcopy/strip-all.test
  tools/llvm-objcopy/StripOpts.td
  tools/llvm-objcopy/llvm-objcopy.cpp


Index: tools/llvm-objcopy/llvm-objcopy.cpp
===================================================================
--- tools/llvm-objcopy/llvm-objcopy.cpp
+++ tools/llvm-objcopy/llvm-objcopy.cpp
@@ -92,7 +92,7 @@
 
 class ObjcopyOptTable : public opt::OptTable {
 public:
-  ObjcopyOptTable() : OptTable(ObjcopyInfoTable, true) {}
+  ObjcopyOptTable() : OptTable(ObjcopyInfoTable) {}
 };
 
 enum StripID {
@@ -121,7 +121,7 @@
 
 class StripOptTable : public opt::OptTable {
 public:
-  StripOptTable() : OptTable(StripInfoTable, true) {}
+  StripOptTable() : OptTable(StripInfoTable) {}
 };
 
 struct SectionRename {
Index: tools/llvm-objcopy/StripOpts.td
===================================================================
--- tools/llvm-objcopy/StripOpts.td
+++ tools/llvm-objcopy/StripOpts.td
@@ -19,6 +19,9 @@
 def strip_all : Flag<["-", "--"], "strip-all">,
                 HelpText<"Remove non-allocated sections other than .gnu.warning* sections">;
 
+def s : Flag<["-"], "s">,
+        Alias<strip_all>;
+
 def strip_debug : Flag<["-", "--"], "strip-debug">,
                   HelpText<"Remove debugging symbols only">;
 
Index: test/tools/llvm-objcopy/strip-all.test
===================================================================
--- test/tools/llvm-objcopy/strip-all.test
+++ test/tools/llvm-objcopy/strip-all.test
@@ -36,15 +36,19 @@
 # RUN: cmp %t2 %t8
 
 # RUN: cp %t %t9
-# RUN: llvm-objcopy -S %t9 %t9
+# RUN: llvm-strip -s %t9
 # RUN: cmp %t2 %t9
 
+# RUN: cp %t %t10
+# RUN: llvm-objcopy -S %t10 %t10
+# RUN: cmp %t2 %t10
+
 # Verify that a non-existent symbol table (after first call to llvm-strip)
 # can be handled correctly.
-# RUN: cp %t %t9
-# RUN: llvm-strip --strip-all -keep=unavailable_symbol %t9
-# RUN: llvm-strip --strip-all -keep=unavailable_symbol %t9
-# RUN: cmp %t2 %t9
+# RUN: cp %t %t11
+# RUN: llvm-strip --strip-all --keep-symbol=unavailable_symbol %t11
+# RUN: llvm-strip --strip-all --keep-symbol=unavailable_symbol %t11
+# RUN: cmp %t2 %t11
 
 !ELF
 FileHeader:


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53163.169285.patch
Type: text/x-patch
Size: 2006 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181011/708852c0/attachment.bin>


More information about the llvm-commits mailing list