summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorJordan Rupprecht <rupprecht@google.com>2018-09-21 00:47:31 +0000
committerJordan Rupprecht <rupprecht@google.com>2018-09-21 00:47:31 +0000
commit7b1c8168c7912e2cb5b10ad56f836ccc552e3c0e (patch)
tree27653ae5e924f0b485ba56542dee2051993e2c08 /llvm
parent07bbddb4ba8c57dd745fe6f486101d445e59ad10 (diff)
downloadbcm5719-llvm-7b1c8168c7912e2cb5b10ad56f836ccc552e3c0e.tar.gz
bcm5719-llvm-7b1c8168c7912e2cb5b10ad56f836ccc552e3c0e.zip
[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 llvm-svn: 342702
Diffstat (limited to 'llvm')
-rw-r--r--llvm/test/tools/llvm-objcopy/objcopy-version.test4
-rw-r--r--llvm/test/tools/llvm-objcopy/strip-version.test4
-rw-r--r--llvm/tools/llvm-objcopy/ObjcopyOpts.td3
-rw-r--r--llvm/tools/llvm-objcopy/StripOpts.td4
-rw-r--r--llvm/tools/llvm-objcopy/llvm-objcopy.cpp10
5 files changed, 25 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/objcopy-version.test b/llvm/test/tools/llvm-objcopy/objcopy-version.test
new file mode 100644
index 00000000000..3b5cd593ddf
--- /dev/null
+++ b/llvm/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 }}
diff --git a/llvm/test/tools/llvm-objcopy/strip-version.test b/llvm/test/tools/llvm-objcopy/strip-version.test
new file mode 100644
index 00000000000..bd91dd3de83
--- /dev/null
+++ b/llvm/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 }}
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOpts.td b/llvm/tools/llvm-objcopy/ObjcopyOpts.td
index 9d771451bc6..469f76d24d0 100644
--- a/llvm/tools/llvm-objcopy/ObjcopyOpts.td
+++ b/llvm/tools/llvm-objcopy/ObjcopyOpts.td
@@ -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">;
diff --git a/llvm/tools/llvm-objcopy/StripOpts.td b/llvm/tools/llvm-objcopy/StripOpts.td
index 5abc23fb577..821dfa3b277 100644
--- a/llvm/tools/llvm-objcopy/StripOpts.td
+++ b/llvm/tools/llvm-objcopy/StripOpts.td
@@ -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>;
diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
index 36ed77a8063..ce2a1f1f259 100644
--- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
@@ -892,6 +892,11 @@ static DriverConfig parseObjcopyOptions(ArrayRef<const char *> ArgsArr) {
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(ArrayRef<const char *> ArgsArr) {
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) + "'");
OpenPOWER on IntegriCloud