[llvm] r342702 - [llvm-objcopy/llvm-strip]: handle --version

Jordan Rupprecht via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 20 17:47:31 PDT 2018


Author: rupprecht
Date: Thu Sep 20 17:47:31 2018
New Revision: 342702

URL: http://llvm.org/viewvc/llvm-project?rev=342702&view=rev
Log:
[llvm-objcopy/llvm-strip]: handle --version

Summary:
Implement --version for objcopy and strip.

I think there are LLVM utilities that automatically handle this, but that doesn't seem to work with custom parsing since this binary handles both objcopy and strip, so it uses custom parsing.

This fixes PR38298

Reviewers: jhenderson, alexshap, jakehehrlich

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D52328

Added:
    llvm/trunk/test/tools/llvm-objcopy/objcopy-version.test
    llvm/trunk/test/tools/llvm-objcopy/strip-version.test
Modified:
    llvm/trunk/tools/llvm-objcopy/ObjcopyOpts.td
    llvm/trunk/tools/llvm-objcopy/StripOpts.td
    llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp

Added: llvm/trunk/test/tools/llvm-objcopy/objcopy-version.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objcopy/objcopy-version.test?rev=342702&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objcopy/objcopy-version.test (added)
+++ llvm/trunk/test/tools/llvm-objcopy/objcopy-version.test Thu Sep 20 17:47:31 2018
@@ -0,0 +1,4 @@
+# RUN: llvm-objcopy -version | FileCheck %s
+# RUN: llvm-objcopy --version | FileCheck %s
+
+# CHECK: {{ version }}

Added: llvm/trunk/test/tools/llvm-objcopy/strip-version.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objcopy/strip-version.test?rev=342702&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objcopy/strip-version.test (added)
+++ llvm/trunk/test/tools/llvm-objcopy/strip-version.test Thu Sep 20 17:47:31 2018
@@ -0,0 +1,4 @@
+# RUN: llvm-strip -version | FileCheck %s
+# RUN: llvm-strip --version | FileCheck %s
+
+# CHECK: {{ version }}

Modified: llvm/trunk/tools/llvm-objcopy/ObjcopyOpts.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objcopy/ObjcopyOpts.td?rev=342702&r1=342701&r2=342702&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objcopy/ObjcopyOpts.td (original)
+++ llvm/trunk/tools/llvm-objcopy/ObjcopyOpts.td Thu Sep 20 17:47:31 2018
@@ -107,6 +107,9 @@ defm keep_global_symbols
 	  "with '#'. Leading and trailing whitespace is stripped from each "
 	  "line. May be repeated to read symbols from many files.">;
 
+def version : Flag<[ "-", "--" ], "version">,
+              HelpText<"Print the version and exit.">;
+
 defm weaken_symbol : Eq<"weaken-symbol">,
                        MetaVarName<"symbol">,
                        HelpText<"Mark <symbol> as weak">;

Modified: llvm/trunk/tools/llvm-objcopy/StripOpts.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objcopy/StripOpts.td?rev=342702&r1=342701&r2=342702&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objcopy/StripOpts.td (original)
+++ llvm/trunk/tools/llvm-objcopy/StripOpts.td Thu Sep 20 17:47:31 2018
@@ -47,6 +47,10 @@ def K : JoinedOrSeparate<["-"], "K">,
 
 def discard_all : Flag<["-", "--"], "discard-all">,
                   HelpText<"Remove all local symbols except file and section symbols">;
+
+def version : Flag<[ "-", "--" ], "version">,
+              HelpText<"Print the version and exit.">;
+
 def x : Flag<["-"], "x">,
         Alias<discard_all>;
 

Modified: llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp?rev=342702&r1=342701&r2=342702&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp (original)
+++ llvm/trunk/tools/llvm-objcopy/llvm-objcopy.cpp Thu Sep 20 17:47:31 2018
@@ -892,6 +892,11 @@ static DriverConfig parseObjcopyOptions(
     exit(0);
   }
 
+  if (InputArgs.hasArg(OBJCOPY_version)) {
+    cl::PrintVersionMessage();
+    exit(0);
+  }
+
   SmallVector<const char *, 2> Positional;
 
   for (auto Arg : InputArgs.filtered(OBJCOPY_UNKNOWN))
@@ -1019,6 +1024,11 @@ static DriverConfig parseStripOptions(Ar
     exit(0);
   }
 
+  if (InputArgs.hasArg(STRIP_version)) {
+    cl::PrintVersionMessage();
+    exit(0);
+  }
+
   SmallVector<const char *, 2> Positional;
   for (auto Arg : InputArgs.filtered(STRIP_UNKNOWN))
     error("unknown argument '" + Arg->getAsString(InputArgs) + "'");




More information about the llvm-commits mailing list