summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXing Xue <xingxue@outlook.com>2019-05-14 13:54:33 +0000
committerXing Xue <xingxue@outlook.com>2019-05-14 13:54:33 +0000
commitfe4f6d53c6e8a26d88a1d21a9e7af90963bdeaf0 (patch)
treea430cb74ce676d13fb0bb985f957ce86583ad358
parent37b7922daa924d7e50aa95ea01fa2d90ef310975 (diff)
downloadbcm5719-llvm-fe4f6d53c6e8a26d88a1d21a9e7af90963bdeaf0.tar.gz
bcm5719-llvm-fe4f6d53c6e8a26d88a1d21a9e7af90963bdeaf0.zip
[lit][tests]Add feature libcxx-used and use it in llvm-*-fuzzer tests
When a LLVM binary such as llvm-*-fuzzer is built with libc++, it has dependency on libc++. The path to find shared libraries specified in llvm-*-fuzzer is relative. As a result, these binaries cannot be copied to an arbitrary directory and launched from there. Changes in this patch add a LIT feature to indicate that libc++ is used to build and, based on the feature exclude test cases that test by copying llvm-*-fuzzer binaries to a directory. Reviewers: hubert.reinterpretcast, dberris, amyk, jasonliu, EricWF Reviewed By: hubert.reinterpretcast, amyk Subscribers: javed.absar, jsji, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D61265 llvm-svn: 360672
-rw-r--r--llvm/test/lit.cfg.py3
-rw-r--r--llvm/test/lit.site.cfg.py.in1
-rw-r--r--llvm/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll3
-rw-r--r--llvm/test/tools/llvm-isel-fuzzer/execname-options.ll3
-rw-r--r--llvm/test/tools/llvm-opt-fuzzer/exec-options.ll3
5 files changed, 13 insertions, 0 deletions
diff --git a/llvm/test/lit.cfg.py b/llvm/test/lit.cfg.py
index f92f7912038..a67bd6527a5 100644
--- a/llvm/test/lit.cfg.py
+++ b/llvm/test/lit.cfg.py
@@ -228,6 +228,9 @@ def have_cxx_shared_library():
if have_cxx_shared_library():
config.available_features.add('cxx-shared-library')
+if config.libcxx_used:
+ config.available_features.add('libcxx-used')
+
# Direct object generation
if not 'hexagon' in config.target_triple:
config.available_features.add('object-emission')
diff --git a/llvm/test/lit.site.cfg.py.in b/llvm/test/lit.site.cfg.py.in
index ada27ff6a77..ef3ae83369c 100644
--- a/llvm/test/lit.site.cfg.py.in
+++ b/llvm/test/lit.site.cfg.py.in
@@ -44,6 +44,7 @@ config.llvm_libxml2_enabled = @LLVM_LIBXML2_ENABLED@
config.llvm_host_triple = '@LLVM_HOST_TRIPLE@'
config.host_arch = "@HOST_ARCH@"
config.have_opt_viewer_modules = @LLVM_HAVE_OPT_VIEWER_MODULES@
+config.libcxx_used = @LLVM_LIBCXX_USED@
# Support substitution of the tools_dir with user parameters. This is
# used when we can't determine the tool dir at configuration time.
diff --git a/llvm/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll b/llvm/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll
index 339d7b6b8e7..2cab8c74799 100644
--- a/llvm/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll
+++ b/llvm/test/tools/llvm-isel-fuzzer/aarch64-execname-options.ll
@@ -3,6 +3,9 @@
; REQUIRES: static-libs
; REQUIRES: aarch64-registered-target
+; The above also applies if the binary is built with libc++.
+; UNSUPPORTED: libcxx-used
+
; RUN: echo > %t.input
; RUN: cp llvm-isel-fuzzer %t.bin--aarch64
diff --git a/llvm/test/tools/llvm-isel-fuzzer/execname-options.ll b/llvm/test/tools/llvm-isel-fuzzer/execname-options.ll
index a825cb450cc..dfce73ed2e2 100644
--- a/llvm/test/tools/llvm-isel-fuzzer/execname-options.ll
+++ b/llvm/test/tools/llvm-isel-fuzzer/execname-options.ll
@@ -2,6 +2,9 @@
; without copying the whole lib dir or polluting the build dir.
; REQUIRES: static-libs
+; The above also applies if the binary is built with libc++.
+; UNSUPPORTED: libcxx-used
+
; RUN: echo > %t.input
; RUN: cp llvm-isel-fuzzer %t.bin--gisel
diff --git a/llvm/test/tools/llvm-opt-fuzzer/exec-options.ll b/llvm/test/tools/llvm-opt-fuzzer/exec-options.ll
index 56996535650..1dd0fa5c46b 100644
--- a/llvm/test/tools/llvm-opt-fuzzer/exec-options.ll
+++ b/llvm/test/tools/llvm-opt-fuzzer/exec-options.ll
@@ -3,6 +3,9 @@
; REQUIRES: static-libs
; REQUIRES: x86-registered-target
+; The above also applies if the binary is built with libc++.
+; UNSUPPORTED: libcxx-used
+
; This test is really flaky on Windows. On Windows, executables and DLLs cannot
; be deleted or written while they are loaded. The OS unlocks the file some
; time after the process terminates, so if 'rm' runs too quickly, it will fail
OpenPOWER on IntegriCloud