[PATCH] D52328: [llvm-objcopy/llvm-strip]: handle --version

Jordan Rupprecht via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 20 15:36:17 PDT 2018


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

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


Repository:
  rL LLVM

https://reviews.llvm.org/D52328

Files:
  test/tools/llvm-objcopy/objcopy-version.test
  test/tools/llvm-objcopy/strip-version.test
  tools/llvm-objcopy/ObjcopyOpts.td
  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
@@ -892,6 +892,11 @@
     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 @@
     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) + "'");
Index: tools/llvm-objcopy/StripOpts.td
===================================================================
--- tools/llvm-objcopy/StripOpts.td
+++ tools/llvm-objcopy/StripOpts.td
@@ -47,6 +47,10 @@
 
 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>;
 
Index: tools/llvm-objcopy/ObjcopyOpts.td
===================================================================
--- tools/llvm-objcopy/ObjcopyOpts.td
+++ tools/llvm-objcopy/ObjcopyOpts.td
@@ -107,6 +107,9 @@
 	  "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">;
Index: test/tools/llvm-objcopy/strip-version.test
===================================================================
--- /dev/null
+++ test/tools/llvm-objcopy/strip-version.test
@@ -0,0 +1,4 @@
+# RUN: llvm-strip -version | FileCheck %s
+# RUN: llvm-strip --version | FileCheck %s
+
+# CHECK: {{ version }}
Index: test/tools/llvm-objcopy/objcopy-version.test
===================================================================
--- /dev/null
+++ test/tools/llvm-objcopy/objcopy-version.test
@@ -0,0 +1,4 @@
+# RUN: llvm-objcopy -version | FileCheck %s
+# RUN: llvm-objcopy --version | FileCheck %s
+
+# CHECK: {{ version }}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D52328.166372.patch
Type: text/x-patch
Size: 2465 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180920/f434ea30/attachment.bin>


More information about the llvm-commits mailing list