summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-objcopy/input-output-target.test
diff options
context:
space:
mode:
authorJordan Rupprecht <rupprecht@google.com>2018-10-12 00:36:01 +0000
committerJordan Rupprecht <rupprecht@google.com>2018-10-12 00:36:01 +0000
commitbb4588e9c187b33667cd8b8ccfd4219b3e1c8cae (patch)
treefa54aae9e097b04f67b38c32217a2ab6f126435a /llvm/test/tools/llvm-objcopy/input-output-target.test
parent56b6660d2ed92f3d879eac6e49e70e9279aca9da (diff)
downloadbcm5719-llvm-bb4588e9c187b33667cd8b8ccfd4219b3e1c8cae.tar.gz
bcm5719-llvm-bb4588e9c187b33667cd8b8ccfd4219b3e1c8cae.zip
[llvm-objcopy] Add -F|--target compatibility
Summary: This change adds support for the GNU --target flag, which sets both --input-target and --output-target. GNU objcopy doesn't do any checking for whether both --target and --{input,output}-target are used, and so it allows both, e.g. "--target A --output-target B" is equivalent to "--input-target A --output-target B" since the later command line flag would override earlier ones. This may be error prone, so I chose to implement it as an error if both are used. I'm not sure if anyone is actually using both. Reviewers: jakehehrlich, jhenderson, alexshap Reviewed By: jakehehrlich, alexshap Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D53029 llvm-svn: 344321
Diffstat (limited to 'llvm/test/tools/llvm-objcopy/input-output-target.test')
-rw-r--r--llvm/test/tools/llvm-objcopy/input-output-target.test22
1 files changed, 22 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-objcopy/input-output-target.test b/llvm/test/tools/llvm-objcopy/input-output-target.test
new file mode 100644
index 00000000000..e81770a239a
--- /dev/null
+++ b/llvm/test/tools/llvm-objcopy/input-output-target.test
@@ -0,0 +1,22 @@
+# RUN: echo abcd > %t.txt
+
+# Preserve input to verify it is not modified
+# RUN: cp %t.txt %t-copy.txt
+
+# -F <target> is equivalent to -I <target> -O <target>
+# RUN: llvm-objcopy -F binary -B i386:x86-64 %t.txt %t.2.txt
+# RUN: cmp %t-copy.txt %t.2.txt
+
+# --target <target> is equivalent to --input-target <target> --output-target <target>
+# RUN: llvm-objcopy --target binary -B i386:x86-64 %t.txt %t.3.txt
+# RUN: cmp %t-copy.txt %t.3.txt
+
+# TODO: check --target and --input-target/--output-target are incompatible
+# RUN: not llvm-objcopy --target binary --input-target binary -B i386:x86-64 \
+# RUN: %t.txt %t.4.txt 2>&1 \
+# RUN: | FileCheck %s --check-prefix=BAD-FLAG
+# RUN: not llvm-objcopy --target binary --output-target binary -B i386:x86-64 \
+# RUN: %t.txt %t.4.txt 2>&1 \
+# RUN: | FileCheck %s --check-prefix=BAD-FLAG
+
+# BAD-FLAG: --target cannot be used with --input-target or --output-target.
OpenPOWER on IntegriCloud