diff options
| author | Jordan Rupprecht <rupprecht@google.com> | 2018-11-01 17:48:46 +0000 |
|---|---|---|
| committer | Jordan Rupprecht <rupprecht@google.com> | 2018-11-01 17:48:46 +0000 |
| commit | 30d1b19b0b2b48511322739f473a59d256725bdd (patch) | |
| tree | 8bfee22c7fd266b47e9639c69255b0a46c94dbbd /llvm/tools | |
| parent | 49996c1d993b805bacee23305e2331c4a4ce847c (diff) | |
| download | bcm5719-llvm-30d1b19b0b2b48511322739f473a59d256725bdd.tar.gz bcm5719-llvm-30d1b19b0b2b48511322739f473a59d256725bdd.zip | |
[llvm-strip] Support --keep and --strip-all-gnu from llvm-objcopy
Summary: Add --keep and --strip-all-gnu from llvm-objcopy into llvm-strip.
Reviewers: jakehehrlich, jhenderson, alexshap
Reviewed By: jhenderson, alexshap
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D53954
llvm-svn: 345861
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/llvm-objcopy/CopyConfig.cpp | 7 | ||||
| -rw-r--r-- | llvm/tools/llvm-objcopy/ObjcopyOpts.td | 4 | ||||
| -rw-r--r-- | llvm/tools/llvm-objcopy/StripOpts.td | 5 |
3 files changed, 13 insertions, 3 deletions
diff --git a/llvm/tools/llvm-objcopy/CopyConfig.cpp b/llvm/tools/llvm-objcopy/CopyConfig.cpp index 8df93efa785..67963a22a1c 100644 --- a/llvm/tools/llvm-objcopy/CopyConfig.cpp +++ b/llvm/tools/llvm-objcopy/CopyConfig.cpp @@ -405,10 +405,15 @@ DriverConfig parseStripOptions(ArrayRef<const char *> ArgsArr) { Config.DiscardAll = InputArgs.hasArg(STRIP_discard_all); Config.StripUnneeded = InputArgs.hasArg(STRIP_strip_unneeded); Config.StripAll = InputArgs.hasArg(STRIP_strip_all); + Config.StripAllGNU = InputArgs.hasArg(STRIP_strip_all_gnu); - if (!Config.StripDebug && !Config.StripUnneeded && !Config.DiscardAll) + if (!Config.StripDebug && !Config.StripUnneeded && !Config.DiscardAll && + !Config.StripAllGNU) Config.StripAll = true; + for (auto Arg : InputArgs.filtered(STRIP_keep)) + Config.Keep.push_back(Arg->getValue()); + for (auto Arg : InputArgs.filtered(STRIP_remove_section)) Config.ToRemove.push_back(Arg->getValue()); diff --git a/llvm/tools/llvm-objcopy/ObjcopyOpts.td b/llvm/tools/llvm-objcopy/ObjcopyOpts.td index 3b8453beecb..effcca89e4d 100644 --- a/llvm/tools/llvm-objcopy/ObjcopyOpts.td +++ b/llvm/tools/llvm-objcopy/ObjcopyOpts.td @@ -85,7 +85,7 @@ def strip_all : Flag<["-", "--"], "strip-all">, def S : Flag<["-"], "S">, Alias<strip_all>; def strip_all_gnu : Flag<["-", "--"], "strip-all-gnu">, - HelpText<"Compaitable with GNU objcopy's --strip-all">; + HelpText<"Compatible with GNU objcopy's --strip-all">; def strip_debug : Flag<["-", "--"], "strip-debug">, HelpText<"Remove all debug information">; def strip_dwo : Flag<["-", "--"], "strip-dwo">, @@ -142,7 +142,7 @@ defm keep_symbol : Eq<"keep-symbol", "Do not remove symbol <symbol>">, def K : JoinedOrSeparate<["-"], "K">, Alias<keep_symbol>; def only_keep_debug : Flag<["-", "--"], "only-keep-debug">, - HelpText<"Currently ignored. Only for compaitability with GNU objcopy.">; + HelpText<"Currently ignored. Only for compatibility with GNU objcopy.">; def strip_unneeded : Flag<["-", "--"], "strip-unneeded">, HelpText<"Remove all symbols not needed by relocations">; def keep_file_symbols : Flag<["-", "--"], "keep-file-symbols">, diff --git a/llvm/tools/llvm-objcopy/StripOpts.td b/llvm/tools/llvm-objcopy/StripOpts.td index 3657bdb703d..99d5d83914b 100644 --- a/llvm/tools/llvm-objcopy/StripOpts.td +++ b/llvm/tools/llvm-objcopy/StripOpts.td @@ -38,6 +38,9 @@ def strip_all : Flag<["-", "--"], "strip-all">, def s : Flag<["-"], "s">, Alias<strip_all>; +def strip_all_gnu : Flag<["-", "--"], "strip-all-gnu">, + HelpText<"Compatible with GNU strip's --strip-all">; + def strip_debug : Flag<["-", "--"], "strip-debug">, HelpText<"Remove debugging symbols only">; @@ -56,6 +59,8 @@ defm remove_section : Eq<"remove-section", "Remove <section>">, def R : JoinedOrSeparate<["-"], "R">, Alias<remove_section>; +defm keep : Eq<"keep", "Keep <section>">, MetaVarName<"section">; + defm keep_symbol : Eq<"keep-symbol", "Do not remove symbol <symbol>">, MetaVarName<"symbol">; |

