summaryrefslogtreecommitdiff
path: root/test/tools/llvm-lib
diff options
context:
space:
mode:
Diffstat (limited to 'test/tools/llvm-lib')
-rw-r--r--test/tools/llvm-lib/Inputs/a.s2
-rw-r--r--test/tools/llvm-lib/Inputs/b.s2
-rwxr-xr-xtest/tools/llvm-lib/Inputs/cl-gl.objbin0 -> 3734 bytes
-rw-r--r--test/tools/llvm-lib/Inputs/resource.resbin0 -> 108 bytes
-rw-r--r--test/tools/llvm-lib/infer-output-path.test16
-rw-r--r--test/tools/llvm-lib/invalid.test2
-rw-r--r--test/tools/llvm-lib/libpath.test15
-rw-r--r--test/tools/llvm-lib/lit.local.cfg3
-rw-r--r--test/tools/llvm-lib/no-inputs.test2
-rw-r--r--test/tools/llvm-lib/resource.test3
-rw-r--r--test/tools/llvm-lib/thin.test9
-rw-r--r--test/tools/llvm-lib/use-paths.test24
12 files changed, 78 insertions, 0 deletions
diff --git a/test/tools/llvm-lib/Inputs/a.s b/test/tools/llvm-lib/Inputs/a.s
new file mode 100644
index 000000000000..88258e2797fa
--- /dev/null
+++ b/test/tools/llvm-lib/Inputs/a.s
@@ -0,0 +1,2 @@
+.globl a
+a:
diff --git a/test/tools/llvm-lib/Inputs/b.s b/test/tools/llvm-lib/Inputs/b.s
new file mode 100644
index 000000000000..4890c9247c74
--- /dev/null
+++ b/test/tools/llvm-lib/Inputs/b.s
@@ -0,0 +1,2 @@
+.globl b
+b:
diff --git a/test/tools/llvm-lib/Inputs/cl-gl.obj b/test/tools/llvm-lib/Inputs/cl-gl.obj
new file mode 100755
index 000000000000..ff746557d412
--- /dev/null
+++ b/test/tools/llvm-lib/Inputs/cl-gl.obj
Binary files differ
diff --git a/test/tools/llvm-lib/Inputs/resource.res b/test/tools/llvm-lib/Inputs/resource.res
new file mode 100644
index 000000000000..f1c799fbbb08
--- /dev/null
+++ b/test/tools/llvm-lib/Inputs/resource.res
Binary files differ
diff --git a/test/tools/llvm-lib/infer-output-path.test b/test/tools/llvm-lib/infer-output-path.test
new file mode 100644
index 000000000000..c63b0abdf6e2
--- /dev/null
+++ b/test/tools/llvm-lib/infer-output-path.test
@@ -0,0 +1,16 @@
+RUN: rm -rf %t && mkdir -p %t
+RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o %t/a.obj %S/Inputs/a.s
+RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o %t/b.o %S/Inputs/b.s
+RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o %t/c %S/Inputs/b.s
+
+RUN: rm -f %t/a.lib
+RUN: llvm-lib %t/a.obj
+RUN: test -e %t/a.lib
+
+RUN: rm -f %t/b.lib
+RUN: llvm-lib /libpath:%t b.o
+RUN: test -e %t/b.lib
+
+RUN: rm -f %t/c.lib
+RUN: llvm-lib /libpath:%t c
+RUN: test -e %t/c.lib
diff --git a/test/tools/llvm-lib/invalid.test b/test/tools/llvm-lib/invalid.test
new file mode 100644
index 000000000000..2978177a431e
--- /dev/null
+++ b/test/tools/llvm-lib/invalid.test
@@ -0,0 +1,2 @@
+RUN: not llvm-lib %S/Inputs/cl-gl.obj 2>&1 | FileCheck %s
+CHECK: not a COFF object, bitcode or resource file
diff --git a/test/tools/llvm-lib/libpath.test b/test/tools/llvm-lib/libpath.test
new file mode 100644
index 000000000000..26a1e8dc8b61
--- /dev/null
+++ b/test/tools/llvm-lib/libpath.test
@@ -0,0 +1,15 @@
+RUN: mkdir -p %t/a %t/b
+RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o %t/a/foo.obj %S/Inputs/a.s
+RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o %t/b/foo.obj %S/Inputs/b.s
+
+RUN: env "LIB=%t/a;%t/b" llvm-lib /out:%t1.lib foo.obj
+RUN: llvm-nm %t1.lib | FileCheck --check-prefix=A %s
+
+RUN: llvm-lib /out:%t2.lib /libpath:%t/a /libpath:%t/b foo.obj
+RUN: llvm-nm %t2.lib | FileCheck --check-prefix=A %s
+
+RUN: env LIB=%t/a llvm-lib /libpath:%t/b /out:%t3.lib foo.obj
+RUN: llvm-nm %t3.lib | FileCheck --check-prefix=B %s
+
+A: T a
+B: T b
diff --git a/test/tools/llvm-lib/lit.local.cfg b/test/tools/llvm-lib/lit.local.cfg
new file mode 100644
index 000000000000..e71f3cc4c41e
--- /dev/null
+++ b/test/tools/llvm-lib/lit.local.cfg
@@ -0,0 +1,3 @@
+if not 'X86' in config.root.targets:
+ config.unsupported = True
+
diff --git a/test/tools/llvm-lib/no-inputs.test b/test/tools/llvm-lib/no-inputs.test
new file mode 100644
index 000000000000..95d6555d58c6
--- /dev/null
+++ b/test/tools/llvm-lib/no-inputs.test
@@ -0,0 +1,2 @@
+RUN: llvm-lib -out:%t.a
+RUN: test ! -e %t.a
diff --git a/test/tools/llvm-lib/resource.test b/test/tools/llvm-lib/resource.test
new file mode 100644
index 000000000000..6c3dad50b450
--- /dev/null
+++ b/test/tools/llvm-lib/resource.test
@@ -0,0 +1,3 @@
+RUN: llvm-lib /out:%t %S/Inputs/resource.res
+RUN: llvm-ar t %t | FileCheck %s
+CHECK: resource.res
diff --git a/test/tools/llvm-lib/thin.test b/test/tools/llvm-lib/thin.test
new file mode 100644
index 000000000000..c401de41a800
--- /dev/null
+++ b/test/tools/llvm-lib/thin.test
@@ -0,0 +1,9 @@
+RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o %t %S/Inputs/a.s
+
+RUN: llvm-lib -out:%t.a %t
+RUN: FileCheck --check-prefix=FAT %s < %t.a
+FAT: !<arch>
+
+RUN: llvm-lib -out:%t.thin.a -llvmlibthin %t
+RUN: FileCheck --check-prefix=THIN %s < %t.thin.a
+THIN: !<thin>
diff --git a/test/tools/llvm-lib/use-paths.test b/test/tools/llvm-lib/use-paths.test
new file mode 100644
index 000000000000..971c216127e6
--- /dev/null
+++ b/test/tools/llvm-lib/use-paths.test
@@ -0,0 +1,24 @@
+llvm-lib should behave like "link.exe /lib" and use relative paths to describe
+archive members.
+
+First, get in a clean working directory.
+RUN: rm -rf %t && mkdir -p %t && cd %t
+
+Make foo/a.obj and foo/b.obj.
+RUN: mkdir foo
+RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o foo/a.obj %S/Inputs/a.s
+RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o foo/b.obj %S/Inputs/b.s
+
+RUN: llvm-lib -out:foo.lib foo/a.obj foo/b.obj
+RUN: llvm-ar t foo.lib | FileCheck %s
+
+FIXME: We should probably use backslashes on Windows to better match MSVC tools.
+CHECK: foo/a.obj
+CHECK: foo/b.obj
+
+Do it again with absolute paths and see that we get something.
+RUN: llvm-lib -out:foo.lib %t/foo/a.obj %t/foo/b.obj
+RUN: llvm-ar t foo.lib | FileCheck %s --check-prefix=ABS
+
+ABS: {{.*}}/foo/a.obj
+ABS: {{.*}}/foo/b.obj