From: Jordan Rupprecht Date: Tue, 23 Oct 2018 18:46:33 +0000 (+0000) Subject: [llvm-strip] Support -s alias for --strip-all. Make both strip and objcopy case sensi... X-Git-Tag: llvmorg-8.0.0-rc1~6000 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=aaeaa0a8b310bae6081abc2ef76687b96907d8da;p=platform%2Fupstream%2Fllvm.git [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). Summary: 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`). Reviewers: jakehehrlich, jhenderson, alexshap Reviewed By: jakehehrlich Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D53163 llvm-svn: 345068 --- diff --git a/llvm/test/tools/llvm-objcopy/strip-all.test b/llvm/test/tools/llvm-objcopy/strip-all.test index 8c0f7489134b..5c5b6fd374ff 100644 --- a/llvm/test/tools/llvm-objcopy/strip-all.test +++ b/llvm/test/tools/llvm-objcopy/strip-all.test @@ -39,12 +39,16 @@ # RUN: llvm-objcopy -S %t9 %t9 # RUN: cmp %t2 %t9 +# RUN: cp %t %t10 +# RUN: llvm-strip -s %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: diff --git a/llvm/tools/llvm-objcopy/CopyConfig.cpp b/llvm/tools/llvm-objcopy/CopyConfig.cpp index 2c3551ba0265..9746110cd456 100644 --- a/llvm/tools/llvm-objcopy/CopyConfig.cpp +++ b/llvm/tools/llvm-objcopy/CopyConfig.cpp @@ -61,7 +61,7 @@ static const opt::OptTable::Info ObjcopyInfoTable[] = { class ObjcopyOptTable : public opt::OptTable { public: - ObjcopyOptTable() : OptTable(ObjcopyInfoTable, true) {} + ObjcopyOptTable() : OptTable(ObjcopyInfoTable) {} }; enum StripID { @@ -90,7 +90,7 @@ static const opt::OptTable::Info StripInfoTable[] = { class StripOptTable : public opt::OptTable { public: - StripOptTable() : OptTable(StripInfoTable, true) {} + StripOptTable() : OptTable(StripInfoTable) {} }; enum SectionFlag { diff --git a/llvm/tools/llvm-objcopy/StripOpts.td b/llvm/tools/llvm-objcopy/StripOpts.td index 821dfa3b277b..b155933616dc 100644 --- a/llvm/tools/llvm-objcopy/StripOpts.td +++ b/llvm/tools/llvm-objcopy/StripOpts.td @@ -19,6 +19,9 @@ def p : Flag<[ "-" ], "p">, Alias; def strip_all : Flag<["-", "--"], "strip-all">, HelpText<"Remove non-allocated sections other than .gnu.warning* sections">; +def s : Flag<["-"], "s">, + Alias; + def strip_debug : Flag<["-", "--"], "strip-debug">, HelpText<"Remove debugging symbols only">;