diff --git a/compiler-rt/test/asan/TestCases/Linux/coverage-missing.cpp b/compiler-rt/test/asan/TestCases/Linux/coverage-missing.cpp index 10acef9af4b03..3ac68f31fe0b1 100644 --- a/compiler-rt/test/asan/TestCases/Linux/coverage-missing.cpp +++ b/compiler-rt/test/asan/TestCases/Linux/coverage-missing.cpp @@ -1,23 +1,21 @@ // Test for "sancov.py missing ...". // First case: coverage from executable. main() is called on every code path. -// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s -o %t -DFOOBAR -DMAIN -// RUN: rm -rf %t-dir -// RUN: mkdir -p %t-dir -// RUN: cd %t-dir -// RUN: %env_asan_opts=coverage=1:coverage_dir=%t-dir %run %t +// RUN: rm -rf %t.dir && mkdir -p %t.dir && cd %t.dir +// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s -o %t.dir/exe -DFOOBAR -DMAIN +// RUN: %env_asan_opts=coverage=1:coverage_dir=%t.dir %run %t.dir/exe // RUN: %sancov print *.sancov > main.txt // RUN: rm *.sancov // RUN: count 1 < main.txt -// RUN: %env_asan_opts=coverage=1:coverage_dir=%t-dir %run %t x +// RUN: %env_asan_opts=coverage=1:coverage_dir=%t.dir %run %t.dir/exe x // RUN: %sancov print *.sancov > foo.txt // RUN: rm *.sancov // RUN: count 3 < foo.txt -// RUN: %env_asan_opts=coverage=1:coverage_dir=%t-dir %run %t x x +// RUN: %env_asan_opts=coverage=1:coverage_dir=%t.dir %run %t.dir/exe x x // RUN: %sancov print *.sancov > bar.txt // RUN: rm *.sancov // RUN: count 4 < bar.txt -// RUN: %sancov missing %t < foo.txt > foo-missing.txt +// RUN: %sancov missing %t.dir/exe < foo.txt > foo-missing.txt // RUN: sort main.txt foo-missing.txt -o foo-missing-with-main.txt // The "missing from foo" set may contain a few bogus PCs from the sanitizer // runtime, but it must include the entire "bar" code path as a subset. Sorted @@ -26,18 +24,15 @@ // RUN: not grep "^<" %t.log // Second case: coverage from DSO. -// cd %t-dir -// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s -o %dynamiclib -DFOOBAR -shared -fPIC -// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %dynamiclib -o %t -DMAIN // RUN: cd .. -// RUN: rm -rf %t-dir -// RUN: mkdir -p %t-dir -// RUN: cd %t-dir -// RUN: %env_asan_opts=coverage=1:coverage_dir=%t-dir %run %t x +// RUN: rm -rf %t.dir && mkdir -p %t.dir && cd %t.dir +// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s -o %dynamiclib -DFOOBAR -shared -fPIC +// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %dynamiclib -o %t.dir/exe -DMAIN +// RUN: %env_asan_opts=coverage=1:coverage_dir=%t.dir %run %t.dir/exe x // RUN: %sancov print %xdynamiclib_filename.*.sancov > foo.txt // RUN: rm *.sancov // RUN: count 2 < foo.txt -// RUN: %env_asan_opts=coverage=1:coverage_dir=%t-dir %run %t x x +// RUN: %env_asan_opts=coverage=1:coverage_dir=%t.dir %run %t.dir/exe x x // RUN: %sancov print %xdynamiclib_filename.*.sancov > bar.txt // RUN: rm *.sancov // RUN: count 3 < bar.txt diff --git a/compiler-rt/test/asan/TestCases/Linux/local_alias.cpp b/compiler-rt/test/asan/TestCases/Linux/local_alias.cpp index a8b3d75e375bf..c0edde69c0b8b 100644 --- a/compiler-rt/test/asan/TestCases/Linux/local_alias.cpp +++ b/compiler-rt/test/asan/TestCases/Linux/local_alias.cpp @@ -4,11 +4,12 @@ // false positive global-buffer-overflow due to sanitized library poisons // globals from non-sanitized one. // +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_asan -DBUILD_INSTRUMENTED_DSO=1 -fPIC -shared -mllvm -asan-use-private-alias %s -o %dynamiclib1 // RUN: %clangxx -DBUILD_UNINSTRUMENTED_DSO=1 -fPIC -shared %s -o %dynamiclib2 // RUN: %clangxx %s -c -mllvm -asan-use-private-alias -o %t.o -// RUN: %clangxx_asan %t.o %ld_flags_rpath_exe2 %ld_flags_rpath_exe1 -o %t-EXE -// RUN: %run %t-EXE +// RUN: %clangxx_asan %t.o %ld_flags_rpath_exe2 %ld_flags_rpath_exe1 -o %t.dir/EXE +// RUN: %run %t.dir/EXE #if defined (BUILD_INSTRUMENTED_DSO) long h = 15; diff --git a/compiler-rt/test/asan/TestCases/Linux/odr-violation.cpp b/compiler-rt/test/asan/TestCases/Linux/odr-violation.cpp index b16f42cfa125d..007308438ec93 100644 --- a/compiler-rt/test/asan/TestCases/Linux/odr-violation.cpp +++ b/compiler-rt/test/asan/TestCases/Linux/odr-violation.cpp @@ -10,38 +10,39 @@ // -fno-sanitize-address-use-odr-indicator turns off both. // // Different size: detect a bug if detect_odr_violation>=1 +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_asan -g -DBUILD_SO=1 -fPIC -shared -fno-sanitize-address-use-odr-indicator %s -o %dynamiclib -// RUN: %clangxx_asan -g -fno-sanitize-address-use-odr-indicator %s %ld_flags_rpath_exe -o %t-ODR-EXE -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=1 not %run %t-ODR-EXE 2>&1 | FileCheck %s -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t-ODR-EXE 2>&1 | FileCheck %s -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=0 %run %t-ODR-EXE 2>&1 | FileCheck %s --check-prefix=DISABLED -// RUN: %env_asan_opts=fast_unwind_on_malloc=0 not %run %t-ODR-EXE 2>&1 | FileCheck %s +// RUN: %clangxx_asan -g -fno-sanitize-address-use-odr-indicator %s %ld_flags_rpath_exe -o %t.dir/ODR-EXE +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=1 not %run %t.dir/ODR-EXE 2>&1 | FileCheck %s +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t.dir/ODR-EXE 2>&1 | FileCheck %s +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=0 %run %t.dir/ODR-EXE 2>&1 | FileCheck %s --check-prefix=DISABLED +// RUN: %env_asan_opts=fast_unwind_on_malloc=0 not %run %t.dir/ODR-EXE 2>&1 | FileCheck %s // // Same size: report a bug only if detect_odr_violation>=2. // RUN: %clangxx_asan -g -DBUILD_SO=1 -fPIC -shared -fno-sanitize-address-use-odr-indicator %s -o %dynamiclib -DSZ=100 -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=1 %run %t-ODR-EXE 2>&1 | FileCheck %s --check-prefix=DISABLED -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t-ODR-EXE 2>&1 | FileCheck %s -// RUN: %env_asan_opts=fast_unwind_on_malloc=0 not %run %t-ODR-EXE 2>&1 | FileCheck %s -// RUN: echo "odr_violation:foo::ZZZ" > %t.supp -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2:suppressions=%t.supp not %run %t-ODR-EXE 2>&1 | FileCheck %s -// RUN: echo "odr_violation:foo::G" > %t.supp -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2:suppressions=%t.supp %run %t-ODR-EXE 2>&1 | FileCheck %s --check-prefix=DISABLED -// RUN: rm -f %t.supp +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=1 %run %t.dir/ODR-EXE 2>&1 | FileCheck %s --check-prefix=DISABLED +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t.dir/ODR-EXE 2>&1 | FileCheck %s +// RUN: %env_asan_opts=fast_unwind_on_malloc=0 not %run %t.dir/ODR-EXE 2>&1 | FileCheck %s +// RUN: echo "odr_violation:foo::ZZZ" > %t.dir/supp +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2:suppressions=%t.dir/supp not %run %t.dir/ODR-EXE 2>&1 | FileCheck %s +// RUN: echo "odr_violation:foo::G" > %t.dir/supp +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2:suppressions=%t.dir/supp %run %t.dir/ODR-EXE 2>&1 | FileCheck %s --check-prefix=DISABLED +// RUN: rm -f %t.dir/supp // // Use private aliases for global variables without indicator symbol. // RUN: %clangxx_asan -g -DBUILD_SO=1 -fPIC -shared -mllvm -asan-use-odr-indicator=0 %s -o %dynamiclib -DSZ=100 -// RUN: %clangxx_asan -g -mllvm -asan-use-odr-indicator=0 %s %ld_flags_rpath_exe -o %t-ODR-EXE -// RUN: %env_asan_opts=fast_unwind_on_malloc=0 %run %t-ODR-EXE 2>&1 | FileCheck %s --check-prefix=DISABLED +// RUN: %clangxx_asan -g -mllvm -asan-use-odr-indicator=0 %s %ld_flags_rpath_exe -o %t.dir/ODR-EXE +// RUN: %env_asan_opts=fast_unwind_on_malloc=0 %run %t.dir/ODR-EXE 2>&1 | FileCheck %s --check-prefix=DISABLED // Use private aliases for global variables: use indicator symbol to detect ODR violation. // RUN: %clangxx_asan -g -DBUILD_SO=1 -fPIC -shared %s -o %dynamiclib -DSZ=100 -// RUN: %clangxx_asan -g %s %ld_flags_rpath_exe -o %t-ODR-EXE -// RUN: %env_asan_opts=fast_unwind_on_malloc=0 not %run %t-ODR-EXE 2>&1 | FileCheck %s +// RUN: %clangxx_asan -g %s %ld_flags_rpath_exe -o %t.dir/ODR-EXE +// RUN: %env_asan_opts=fast_unwind_on_malloc=0 not %run %t.dir/ODR-EXE 2>&1 | FileCheck %s // Same as above but with clang switches. // RUN: %clangxx_asan -g -DBUILD_SO=1 -fPIC -shared -fsanitize-address-use-odr-indicator %s -o %dynamiclib -DSZ=100 -// RUN: %clangxx_asan -g -fsanitize-address-use-odr-indicator %s %ld_flags_rpath_exe -o %t-ODR-EXE -// RUN: %env_asan_opts=fast_unwind_on_malloc=0 not %run %t-ODR-EXE 2>&1 | FileCheck %s +// RUN: %clangxx_asan -g -fsanitize-address-use-odr-indicator %s %ld_flags_rpath_exe -o %t.dir/ODR-EXE +// RUN: %env_asan_opts=fast_unwind_on_malloc=0 not %run %t.dir/ODR-EXE 2>&1 | FileCheck %s // GNU driver doesn't handle .so files properly. // REQUIRES: Clang @@ -58,7 +59,7 @@ namespace foo { char G[SZ]; } #include namespace foo { char G[100]; } // CHECK: ERROR: AddressSanitizer: odr-violation -// CHECK: size=100 'foo::G' {{.*}}odr-violation.cpp:[[@LINE-2]] in {{.*}}.tmp-ODR-EXE +// CHECK: size=100 'foo::G' {{.*}}odr-violation.cpp:[[@LINE-2]] in {{.*}}/ODR-EXE // CHECK: size={{4|100}} 'foo::G' int main(int argc, char **argv) { printf("PASS: %p\n", &foo::G); diff --git a/compiler-rt/test/asan/TestCases/Linux/odr-vtable.cpp b/compiler-rt/test/asan/TestCases/Linux/odr-vtable.cpp index aee5d2aacfc58..9e6b7ff6e00c5 100644 --- a/compiler-rt/test/asan/TestCases/Linux/odr-vtable.cpp +++ b/compiler-rt/test/asan/TestCases/Linux/odr-vtable.cpp @@ -4,19 +4,20 @@ // REQUIRES: shared_cxxabi /// Not using private alias or enabling ODR indicator can detect ODR issues. +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_asan -fno-rtti -DBUILD_SO1 -fPIC -shared -mllvm -asan-use-private-alias=0 %s -o %dynamiclib1 // RUN: %clangxx_asan -fno-rtti -DBUILD_SO2 -fPIC -shared -mllvm -asan-use-private-alias=0 %s -o %dynamiclib2 -// RUN: %clangxx_asan -fno-rtti %s %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t 2>&1 | FileCheck %s +// RUN: %clangxx_asan -fno-rtti %s %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t.dir/EXE +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t.dir/EXE 2>&1 | FileCheck %s // RUN: %clangxx_asan -fno-rtti -DBUILD_SO1 -fPIC -shared -mllvm -asan-use-odr-indicator=1 %s -o %dynamiclib1 // RUN: %clangxx_asan -fno-rtti -DBUILD_SO2 -fPIC -shared -mllvm -asan-use-odr-indicator=1 %s -o %dynamiclib2 -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t 2>&1 | FileCheck %s +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t.dir/EXE 2>&1 | FileCheck %s /// By default we can detect ODR issues in vtables. // RUN: %clangxx_asan -fno-rtti -DBUILD_SO1 -fPIC -shared %s -o %dynamiclib1 // RUN: %clangxx_asan -fno-rtti -DBUILD_SO2 -fPIC -shared %s -o %dynamiclib2 -// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t 2>&1 | FileCheck %s +// RUN: %env_asan_opts=fast_unwind_on_malloc=0:detect_odr_violation=2 not %run %t.dir/EXE 2>&1 | FileCheck %s struct XYZ { virtual void foo(); diff --git a/compiler-rt/test/asan/TestCases/Linux/odr_c_test.c b/compiler-rt/test/asan/TestCases/Linux/odr_c_test.c index 4aafe6888c684..f8a3eae7e7f35 100644 --- a/compiler-rt/test/asan/TestCases/Linux/odr_c_test.c +++ b/compiler-rt/test/asan/TestCases/Linux/odr_c_test.c @@ -1,14 +1,15 @@ // Test that we can properly report an ODR violation between an instrumented // global and a non-instrumented global if not using private aliases. +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clang_asan -fcommon %s -fPIC -shared -mllvm -asan-use-private-alias=0 -o %dynamiclib1 -DFILE1 // RUN: %clang_asan -fcommon %s -fPIC -shared -mllvm -asan-use-private-alias=0 -o %dynamiclib2 -DFILE2 -// RUN: %clang_asan -fcommon %s -fPIE %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t -// RUN: not %run %t 2>&1 | FileCheck %s +// RUN: %clang_asan -fcommon %s -fPIE %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t.dir/exe +// RUN: not %run %t.dir/exe 2>&1 | FileCheck %s // RUN: %clang_asan -fcommon %s -fPIC -shared -mllvm -asan-use-private-alias=1 -o %dynamiclib1 -DFILE1 // RUN: %clang_asan -fcommon %s -fPIC -shared -mllvm -asan-use-private-alias=1 -o %dynamiclib2 -DFILE2 -// RUN: %run %t 2>&1 | count 0 +// RUN: %run %t.dir/exe 2>&1 | count 0 // Unaligned accesses don't work on strict-alignment targets like SPARC. // UNSUPPORTED: sparc-target-arch diff --git a/compiler-rt/test/asan/TestCases/Linux/preinit_test.cpp b/compiler-rt/test/asan/TestCases/Linux/preinit_test.cpp index f8c2b6bf52f1d..ca20a8905b122 100644 --- a/compiler-rt/test/asan/TestCases/Linux/preinit_test.cpp +++ b/compiler-rt/test/asan/TestCases/Linux/preinit_test.cpp @@ -1,6 +1,7 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx -DFUNC=zzzz %s -shared -o %dynamiclib -fPIC -// RUN: %clangxx_asan -DFUNC=main %s -o %t %ld_flags_rpath_exe -// RUN: %run %t +// RUN: %clangxx_asan -DFUNC=main %s -o %t.dir/EXE %ld_flags_rpath_exe +// RUN: %run %t.dir/EXE // GNU driver doesn't handle .so files properly. // REQUIRES: Clang diff --git a/compiler-rt/test/asan/TestCases/Posix/coverage-module-unloaded.cpp b/compiler-rt/test/asan/TestCases/Posix/coverage-module-unloaded.cpp index d301bb5c7838d..feef8f81d70da 100644 --- a/compiler-rt/test/asan/TestCases/Posix/coverage-module-unloaded.cpp +++ b/compiler-rt/test/asan/TestCases/Posix/coverage-module-unloaded.cpp @@ -1,11 +1,12 @@ // Check that unloading a module doesn't break coverage dumping for remaining // modules. +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard -DSHARED %s -shared -o %dynamiclib1 -fPIC // RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard -DSHARED %s -shared -o %dynamiclib2 -fPIC -// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %libdl -o %t.exe +// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %libdl -o %t.dir/exe // RUN: mkdir -p %t.tmp/coverage-module-unloaded && cd %t.tmp/coverage-module-unloaded -// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.exe %dynamiclib1 %dynamiclib2 2>&1 | FileCheck %s -// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.exe %dynamiclib1 %dynamiclib2 foo 2>&1 | FileCheck %s +// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.dir/exe %dynamiclib1 %dynamiclib2 2>&1 | FileCheck %s +// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.dir/exe %dynamiclib1 %dynamiclib2 foo 2>&1 | FileCheck %s // // https://code.google.com/p/address-sanitizer/issues/detail?id=263 // XFAIL: android diff --git a/compiler-rt/test/asan/TestCases/Posix/coverage-reset.cpp b/compiler-rt/test/asan/TestCases/Posix/coverage-reset.cpp index e89181cc6c376..e3524fced6b4e 100644 --- a/compiler-rt/test/asan/TestCases/Posix/coverage-reset.cpp +++ b/compiler-rt/test/asan/TestCases/Posix/coverage-reset.cpp @@ -1,7 +1,7 @@ +// RUN: rm -rf %t.dir && mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard -DSHARED %s -shared -o %dynamiclib -fPIC %ld_flags_rpath_so -// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %ld_flags_rpath_exe -o %t -// RUN: rm -rf %t-dir && mkdir -p %t-dir && cd %t-dir -// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t 2>&1 | FileCheck %s +// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %ld_flags_rpath_exe -o %t.dir/EXE +// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.dir/EXE 2>&1 | tee /tmp/test // // UNSUPPORTED: ios diff --git a/compiler-rt/test/asan/TestCases/Posix/coverage.cpp b/compiler-rt/test/asan/TestCases/Posix/coverage.cpp index 12a88402eb5aa..9a3cb88cae3cd 100644 --- a/compiler-rt/test/asan/TestCases/Posix/coverage.cpp +++ b/compiler-rt/test/asan/TestCases/Posix/coverage.cpp @@ -1,20 +1,19 @@ +// RUN:rm -rf %t.dir && mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard -DSHARED %s -shared -o %dynamiclib -fPIC %ld_flags_rpath_so -// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %ld_flags_rpath_exe -o %t -// RUN: rm -rf %t-dir && mkdir -p %t-dir && cd %t-dir -// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-main -// RUN: %sancov print coverage.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV1 -// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t foo 2>&1 | FileCheck %s --check-prefix=CHECK-foo -// RUN: %sancov print coverage.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV2 -// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t bar 2>&1 | FileCheck %s --check-prefix=CHECK-bar -// RUN: %sancov print coverage.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV2 -// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t foo bar 2>&1 | FileCheck %s --check-prefix=CHECK-foo-bar -// RUN: %sancov print coverage.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV2 +// RUN: %clangxx_asan -fsanitize-coverage=func,trace-pc-guard %s %ld_flags_rpath_exe -o %t.dir/exe +// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.dir/exe 2>&1 | FileCheck %s --check-prefix=CHECK-main +// RUN: %sancov print exe.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV1 +// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.dir/exe foo 2>&1 | FileCheck %s --check-prefix=CHECK-foo +// RUN: %sancov print exe.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV2 +// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.dir/exe bar 2>&1 | FileCheck %s --check-prefix=CHECK-bar +// RUN: %sancov print exe.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV2 +// RUN: %env_asan_opts=coverage=1:verbosity=1 %run %t.dir/exe foo bar 2>&1 | FileCheck %s --check-prefix=CHECK-foo-bar +// RUN: %sancov print exe.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV2 // RUN: %sancov print libcoverage.*sancov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV1 -// RUN: %sancov merge coverage.*sancov > merged-cov +// RUN: %sancov merge exe.*sancov > merged-cov // RUN: %sancov print merged-cov 2>&1 | FileCheck %s --check-prefix=CHECK-SANCOV2 -// RUN: %env_asan_opts=coverage=1:verbosity=1 not %run %t foo bar 4 2>&1 | FileCheck %s --check-prefix=CHECK-report -// RUN: %env_asan_opts=coverage=1:verbosity=1 not %run %t foo bar 4 5 2>&1 | FileCheck %s --check-prefix=CHECK-segv -// RUN: cd .. && rm -rf %t-dir +// RUN: %env_asan_opts=coverage=1:verbosity=1 not %run %t.dir/exe foo bar 4 2>&1 | FileCheck %s --check-prefix=CHECK-report +// RUN: %env_asan_opts=coverage=1:verbosity=1 not %run %t.dir/exe foo bar 4 5 2>&1 | FileCheck %s --check-prefix=CHECK-segv // // https://code.google.com/p/address-sanitizer/issues/detail?id=263 // XFAIL: android diff --git a/compiler-rt/test/asan/TestCases/Posix/interception-in-shared-lib-test.cpp b/compiler-rt/test/asan/TestCases/Posix/interception-in-shared-lib-test.cpp index b592edb9f3df0..cfdc47c13e208 100644 --- a/compiler-rt/test/asan/TestCases/Posix/interception-in-shared-lib-test.cpp +++ b/compiler-rt/test/asan/TestCases/Posix/interception-in-shared-lib-test.cpp @@ -1,9 +1,9 @@ // Check that memset() call from a shared library gets intercepted. - +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_asan -O0 %s -DSHARED_LIB \ // RUN: -shared -o %dynamiclib -fPIC %ld_flags_rpath_so -// RUN: %clangxx_asan -O0 %s -o %t %ld_flags_rpath_exe && \ -// RUN: not %run %t 2>&1 | FileCheck %s +// RUN: %clangxx_asan -O0 %s -o %t.dir/EXE %ld_flags_rpath_exe && \ +// RUN: not %run %t.dir/EXE 2>&1 | FileCheck %s #include #include diff --git a/compiler-rt/test/asan/TestCases/suppressions-library.cpp b/compiler-rt/test/asan/TestCases/suppressions-library.cpp index 2da44e1df120b..b3cd3a36082f4 100644 --- a/compiler-rt/test/asan/TestCases/suppressions-library.cpp +++ b/compiler-rt/test/asan/TestCases/suppressions-library.cpp @@ -1,13 +1,14 @@ // UNSUPPORTED: system-windows +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_asan -O0 -DSHARED_LIB %s %fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_asan -O0 %s -o %t %ld_flags_rpath_exe +// RUN: %clangxx_asan -O0 %s -o %t.dir/exe %ld_flags_rpath_exe // Check that without suppressions, we catch the issue. -// RUN: not %run %t 2>&1 | FileCheck --check-prefix=CHECK-CRASH %s +// RUN: not %run %t.dir/exe 2>&1 | FileCheck --check-prefix=CHECK-CRASH %s // RUN: echo "interceptor_via_lib:"%xdynamiclib_filename > %t.supp -// RUN: %env_asan_opts=suppressions='"%t.supp"' %run %t 2>&1 | FileCheck --check-prefix=CHECK-IGNORE %s +// RUN: %env_asan_opts=suppressions='"%t.supp"' %run %t.dir/exe 2>&1 | FileCheck --check-prefix=CHECK-IGNORE %s // FIXME: Upload suppressions to device. // XFAIL: android diff --git a/compiler-rt/test/cfi/cross-dso-diagnostic.cpp b/compiler-rt/test/cfi/cross-dso-diagnostic.cpp index f0a2ab4459c5f..ed2cab04c9180 100644 --- a/compiler-rt/test/cfi/cross-dso-diagnostic.cpp +++ b/compiler-rt/test/cfi/cross-dso-diagnostic.cpp @@ -1,8 +1,9 @@ // Check that cross-DSO diagnostics print the names of both modules +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_cfi_diag -g -DSHARED_LIB -fPIC -shared -o %dynamiclib %s %ld_flags_rpath_so -// RUN: %clangxx_cfi_diag -g -o %t_exe_suffix %s %ld_flags_rpath_exe -// RUN: %t_exe_suffix 2>&1 | FileCheck -DDSONAME=%xdynamiclib_namespec %s +// RUN: %clangxx_cfi_diag -g -o %t.dir/file_exe_suffix %s %ld_flags_rpath_exe +// RUN: %t.dir/file_exe_suffix 2>&1 | FileCheck -DDSONAME=%xdynamiclib_namespec %s // UNSUPPORTED: target={{.*windows-msvc.*}} // REQUIRES: cxxabi diff --git a/compiler-rt/test/cfi/cross-dso/icall/diag.cpp b/compiler-rt/test/cfi/cross-dso/icall/diag.cpp index 579ee835604a8..4df0a3858b418 100644 --- a/compiler-rt/test/cfi/cross-dso/icall/diag.cpp +++ b/compiler-rt/test/cfi/cross-dso/icall/diag.cpp @@ -6,35 +6,36 @@ // * otherwise, the callee decides between trap/recover/norecover. // Full-recover. +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_cfi_dso_diag -g -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso_diag -g %s -o %t %ld_flags_rpath_exe +// RUN: %clangxx_cfi_dso_diag -g %s -o %t.dir/exe %ld_flags_rpath_exe -// RUN: %t icv 2>&1 | FileCheck %s --check-prefix=ICALL-DIAG --check-prefix=CAST-DIAG \ -// RUN: --check-prefix=VCALL-DIAG --check-prefix=ALL-RECOVER +// RUN: %t.dir/exe icv 2>&1 | FileCheck %s --check-prefix=ICALL-DIAG --check-prefix=CAST-DIAG \ +// RUN: --check-prefix=VCALL-DIAG --check-prefix=ALL-RECOVER -// RUN: %t i_v 2>&1 | FileCheck %s --check-prefix=ICALL-DIAG --check-prefix=CAST-NODIAG \ -// RUN: --check-prefix=VCALL-DIAG --check-prefix=ALL-RECOVER +// RUN: %t.dir/exe i_v 2>&1 | FileCheck %s --check-prefix=ICALL-DIAG --check-prefix=CAST-NODIAG \ +// RUN: --check-prefix=VCALL-DIAG --check-prefix=ALL-RECOVER -// RUN: %t _cv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-DIAG \ -// RUN: --check-prefix=VCALL-DIAG --check-prefix=ALL-RECOVER +// RUN: %t.dir/exe _cv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-DIAG \ +// RUN: --check-prefix=VCALL-DIAG --check-prefix=ALL-RECOVER -// RUN: %t ic_ 2>&1 | FileCheck %s --check-prefix=ICALL-DIAG --check-prefix=CAST-DIAG \ -// RUN: --check-prefix=VCALL-NODIAG --check-prefix=ALL-RECOVER +// RUN: %t.dir/exe ic_ 2>&1 | FileCheck %s --check-prefix=ICALL-DIAG --check-prefix=CAST-DIAG \ +// RUN: --check-prefix=VCALL-NODIAG --check-prefix=ALL-RECOVER // Trap on icall, no-recover on cast. // RUN: %clangxx_cfi_dso_diag -fsanitize-trap=cfi-icall -fno-sanitize-recover=cfi-unrelated-cast \ // RUN: -g -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so // RUN: %clangxx_cfi_dso_diag -fsanitize-trap=cfi-icall -fno-sanitize-recover=cfi-unrelated-cast \ -// RUN: -g %s -o %t %ld_flags_rpath_exe +// RUN: -g %s -o %t.dir/exe %ld_flags_rpath_exe -// RUN: %expect_crash %t icv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ -// RUN: --check-prefix=VCALL-NODIAG --check-prefix=ICALL-FATAL +// RUN: %expect_crash %t.dir/exe icv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ +// RUN: --check-prefix=VCALL-NODIAG --check-prefix=ICALL-FATAL -// RUN: not %t _cv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-DIAG \ -// RUN: --check-prefix=VCALL-NODIAG --check-prefix=CAST-FATAL +// RUN: not %t.dir/exe _cv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-DIAG \ +// RUN: --check-prefix=VCALL-NODIAG --check-prefix=CAST-FATAL -// RUN: %t __v 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ -// RUN: --check-prefix=VCALL-DIAG +// RUN: %t.dir/exe __v 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ +// RUN: --check-prefix=VCALL-DIAG // Callee: trap on icall, no-recover on cast. // Caller: recover on everything. @@ -42,16 +43,16 @@ // RUN: %clangxx_cfi_dso_diag -fsanitize-trap=cfi-icall -fno-sanitize-recover=cfi-unrelated-cast \ // RUN: -g -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so // RUN: %clangxx_cfi_dso_diag \ -// RUN: -g %s -o %t %ld_flags_rpath_exe +// RUN: -g %s -o %t.dir/exe %ld_flags_rpath_exe -// RUN: %expect_crash %t icv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ -// RUN: --check-prefix=VCALL-NODIAG --check-prefix=ICALL-FATAL +// RUN: %expect_crash %t.dir/exe icv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ +// RUN: --check-prefix=VCALL-NODIAG --check-prefix=ICALL-FATAL -// RUN: not %t _cv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-DIAG \ -// RUN: --check-prefix=VCALL-NODIAG --check-prefix=CAST-FATAL +// RUN: not %t.dir/exe _cv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-DIAG \ +// RUN: --check-prefix=VCALL-NODIAG --check-prefix=CAST-FATAL -// RUN: %t __v 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ -// RUN: --check-prefix=VCALL-DIAG +// RUN: %t.dir/exe __v 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ +// RUN: --check-prefix=VCALL-DIAG // Caller in trapping mode, callee with full diagnostic+recover. // Caller wins. @@ -59,16 +60,16 @@ // RUN: %clangxx_cfi_dso_diag \ // RUN: -g -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so // RUN: %clangxx_cfi_dso -fno-sanitize-trap=cfi-nvcall \ -// RUN: -g %s -o %t %ld_flags_rpath_exe +// RUN: -g %s -o %t.dir/exe %ld_flags_rpath_exe -// RUN: %expect_crash %t icv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ -// RUN: --check-prefix=VCALL-NODIAG --check-prefix=ICALL-FATAL +// RUN: %expect_crash %t.dir/exe icv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ +// RUN: --check-prefix=VCALL-NODIAG --check-prefix=ICALL-FATAL -// RUN: %expect_crash %t _cv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ -// RUN: --check-prefix=VCALL-NODIAG --check-prefix=CAST-FATAL +// RUN: %expect_crash %t.dir/exe _cv 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ +// RUN: --check-prefix=VCALL-NODIAG --check-prefix=CAST-FATAL -// RUN: %expect_crash %t __v 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ -// RUN: --check-prefix=VCALL-NODIAG --check-prefix=VCALL-FATAL +// RUN: %expect_crash %t.dir/exe __v 2>&1 | FileCheck %s --check-prefix=ICALL-NODIAG --check-prefix=CAST-NODIAG \ +// RUN: --check-prefix=VCALL-NODIAG --check-prefix=VCALL-FATAL // REQUIRES: cxxabi diff --git a/compiler-rt/test/cfi/cross-dso/icall/icall-from-dso.cpp b/compiler-rt/test/cfi/cross-dso/icall/icall-from-dso.cpp index 125e030b5063c..b08135758efcf 100644 --- a/compiler-rt/test/cfi/cross-dso/icall/icall-from-dso.cpp +++ b/compiler-rt/test/cfi/cross-dso/icall/icall-from-dso.cpp @@ -1,8 +1,9 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_cfi_dso -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso %s -o %t %ld_flags_rpath_exe && %expect_crash %t 2>&1 | FileCheck %s +// RUN: %clangxx_cfi_dso %s -o %t.dir/exe %ld_flags_rpath_exe && %expect_crash %t.dir/exe 2>&1 | FileCheck %s // RUN: %clangxx_cfi_dso_diag -g -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso_diag -g %s -o %t %ld_flags_rpath_exe && %t 2>&1 | FileCheck %s --check-prefix=CFI-DIAG +// RUN: %clangxx_cfi_dso_diag -g %s -o %t.dir/exe %ld_flags_rpath_exe && %t.dir/exe 2>&1 | FileCheck %s --check-prefix=CFI-DIAG #include diff --git a/compiler-rt/test/cfi/cross-dso/icall/icall.cpp b/compiler-rt/test/cfi/cross-dso/icall/icall.cpp index 9e9bfd07ed59f..b4ee48d94ea03 100644 --- a/compiler-rt/test/cfi/cross-dso/icall/icall.cpp +++ b/compiler-rt/test/cfi/cross-dso/icall/icall.cpp @@ -1,8 +1,9 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_cfi_dso -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso %s -o %t %ld_flags_rpath_exe && %expect_crash %t 2>&1 | FileCheck %s +// RUN: %clangxx_cfi_dso %s -o %t.dir/exe %ld_flags_rpath_exe && %expect_crash %t.dir/exe 2>&1 | FileCheck %s // RUN: %clangxx_cfi_dso_diag -g -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso_diag -g %s -o %t %ld_flags_rpath_exe && %t 2>&1 | FileCheck %s --check-prefix=CFI-DIAG +// RUN: %clangxx_cfi_dso_diag -g %s -o %t.dir/exe %ld_flags_rpath_exe && %t.dir/exe 2>&1 | FileCheck %s --check-prefix=CFI-DIAG #include diff --git a/compiler-rt/test/cfi/cross-dso/simple-fail.cpp b/compiler-rt/test/cfi/cross-dso/simple-fail.cpp index 93503ebe5b363..91ce45a6130c4 100644 --- a/compiler-rt/test/cfi/cross-dso/simple-fail.cpp +++ b/compiler-rt/test/cfi/cross-dso/simple-fail.cpp @@ -1,37 +1,38 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_cfi_dso -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso %s -o %t %ld_flags_rpath_exe -// RUN: %expect_crash %t 2>&1 | FileCheck --check-prefix=CFI %s -// RUN: %expect_crash %t x 2>&1 | FileCheck --check-prefix=CFI-CAST %s +// RUN: %clangxx_cfi_dso %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %expect_crash %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI %s +// RUN: %expect_crash %t.dir/exe x 2>&1 | FileCheck --check-prefix=CFI-CAST %s // RUN: %clangxx_cfi_dso -DB32 -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso -DB32 %s -o %t %ld_flags_rpath_exe -// RUN: %expect_crash %t 2>&1 | FileCheck --check-prefix=CFI %s -// RUN: %expect_crash %t x 2>&1 | FileCheck --check-prefix=CFI-CAST %s +// RUN: %clangxx_cfi_dso -DB32 %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %expect_crash %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI %s +// RUN: %expect_crash %t.dir/exe x 2>&1 | FileCheck --check-prefix=CFI-CAST %s // RUN: %clangxx_cfi_dso -DB64 -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso -DB64 %s -o %t %ld_flags_rpath_exe -// RUN: %expect_crash %t 2>&1 | FileCheck --check-prefix=CFI %s -// RUN: %expect_crash %t x 2>&1 | FileCheck --check-prefix=CFI-CAST %s +// RUN: %clangxx_cfi_dso -DB64 %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %expect_crash %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI %s +// RUN: %expect_crash %t.dir/exe x 2>&1 | FileCheck --check-prefix=CFI-CAST %s // RUN: %clangxx_cfi_dso -DBM -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso -DBM %s -o %t %ld_flags_rpath_exe -// RUN: %expect_crash %t 2>&1 | FileCheck --check-prefix=CFI %s -// RUN: %expect_crash %t x 2>&1 | FileCheck --check-prefix=CFI-CAST %s +// RUN: %clangxx_cfi_dso -DBM %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %expect_crash %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI %s +// RUN: %expect_crash %t.dir/exe x 2>&1 | FileCheck --check-prefix=CFI-CAST %s // RUN: %clangxx -DBM -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx -DBM %s -o %t %ld_flags_rpath_exe -// RUN: %t 2>&1 | FileCheck --check-prefix=NCFI %s -// RUN: %t x 2>&1 | FileCheck --check-prefix=NCFI %s +// RUN: %clangxx -DBM %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %t.dir/exe 2>&1 | FileCheck --check-prefix=NCFI %s +// RUN: %t.dir/exe x 2>&1 | FileCheck --check-prefix=NCFI %s // RUN: %clangxx -DBM -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso -DBM %s -o %t %ld_flags_rpath_exe -// RUN: %t 2>&1 | FileCheck --check-prefix=NCFI %s -// RUN: %t x 2>&1 | FileCheck --check-prefix=NCFI %s +// RUN: %clangxx_cfi_dso -DBM %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %t.dir/exe 2>&1 | FileCheck --check-prefix=NCFI %s +// RUN: %t.dir/exe x 2>&1 | FileCheck --check-prefix=NCFI %s // RUN: %clangxx_cfi_dso_diag -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso_diag %s -o %t %ld_flags_rpath_exe -// RUN: %t 2>&1 | FileCheck --check-prefix=CFI-DIAG-CALL %s -// RUN: %t x 2>&1 | FileCheck --check-prefix=CFI-DIAG-CALL --check-prefix=CFI-DIAG-CAST %s +// RUN: %clangxx_cfi_dso_diag %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI-DIAG-CALL %s +// RUN: %t.dir/exe x 2>&1 | FileCheck --check-prefix=CFI-DIAG-CALL --check-prefix=CFI-DIAG-CAST %s // Tests that the CFI mechanism crashes the program when making a virtual call // to an object of the wrong class but with a compatible vtable, by casting a diff --git a/compiler-rt/test/cfi/cross-dso/simple-pass.cpp b/compiler-rt/test/cfi/cross-dso/simple-pass.cpp index 6ce64713a6e2c..e6878e48d31ad 100644 --- a/compiler-rt/test/cfi/cross-dso/simple-pass.cpp +++ b/compiler-rt/test/cfi/cross-dso/simple-pass.cpp @@ -1,23 +1,24 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx_cfi_dso -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso -g %s -o %t %ld_flags_rpath_exe -// RUN: %t 2>&1 | FileCheck --check-prefix=CFI %s +// RUN: %clangxx_cfi_dso -g %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI %s // RUN: %clangxx_cfi_dso -DB32 -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso -DB32 %s -o %t %ld_flags_rpath_exe -// RUN: %t 2>&1 | FileCheck --check-prefix=CFI %s +// RUN: %clangxx_cfi_dso -DB32 %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI %s // RUN: %clangxx_cfi_dso -DB64 -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso -DB64 %s -o %t %ld_flags_rpath_exe -// RUN: %t 2>&1 | FileCheck --check-prefix=CFI %s +// RUN: %clangxx_cfi_dso -DB64 %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI %s // RUN: %clangxx_cfi_dso -DBM -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_dso -DBM %s -o %t %ld_flags_rpath_exe -// RUN: %t 2>&1 | FileCheck --check-prefix=CFI %s +// RUN: %clangxx_cfi_dso -DBM %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %t.dir/exe 2>&1 | FileCheck --check-prefix=CFI %s // RUN: %clangxx -DBM -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx -DBM %s -o %t %ld_flags_rpath_exe -// RUN: %t 2>&1 | FileCheck --check-prefix=NCFI %s -// RUN: %t x 2>&1 | FileCheck --check-prefix=NCFI %s +// RUN: %clangxx -DBM %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %t.dir/exe 2>&1 | FileCheck --check-prefix=NCFI %s +// RUN: %t.dir/exe x 2>&1 | FileCheck --check-prefix=NCFI %s // Tests that the CFI mechanism crashes the program when making a virtual call // to an object of the wrong class but with a compatible vtable, by casting a diff --git a/compiler-rt/test/cfi/target_uninstrumented.cpp b/compiler-rt/test/cfi/target_uninstrumented.cpp index 8543fdae1446c..d92cb4cf61ff0 100644 --- a/compiler-rt/test/cfi/target_uninstrumented.cpp +++ b/compiler-rt/test/cfi/target_uninstrumented.cpp @@ -1,6 +1,7 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx -g -DSHARED_LIB %s -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx_cfi_diag -g %s -o %t %ld_flags_rpath_exe -// RUN: %run %t 2>&1 | FileCheck %s +// RUN: %clangxx_cfi_diag -g %s -o %t.dir/EXE %ld_flags_rpath_exe +// RUN: %run %t.dir/EXE 2>&1 | FileCheck %s // REQUIRES: cxxabi // UNSUPPORTED: target={{.*windows-msvc.*}} diff --git a/compiler-rt/test/fuzzer/coverage.test b/compiler-rt/test/fuzzer/coverage.test index ccbc3dc7cc2bf..cf36784ce21da 100644 --- a/compiler-rt/test/fuzzer/coverage.test +++ b/compiler-rt/test/fuzzer/coverage.test @@ -2,16 +2,17 @@ UNSUPPORTED: target={{.*windows.*}} # FIXME: CreatePCArray() emits PLT stub addresses for entry blocks, which are ignored by TracePC::PrintCoverage(). UNSUPPORTED: target=s390x{{.*}} -RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/NullDerefTest.cpp -o %t-NullDerefTest +RUN: mkdir -p %t.dir && cd %t.dir +RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/NullDerefTest.cpp -o %t.dir/NullDerefTest RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/DSO1.cpp -fPIC %ld_flags_rpath_so1 -O0 -shared -o %dynamiclib1 RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/DSO2.cpp -fPIC %ld_flags_rpath_so2 -O0 -shared -o %dynamiclib2 -RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/DSOTestMain.cpp %S/DSOTestExtra.cpp %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t-DSOTest +RUN: %cpp_compiler -mllvm -use-unknown-locations=Disable %S/DSOTestMain.cpp %S/DSOTestExtra.cpp %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t.dir/DSOTest CHECK: COVERAGE: CHECK: COVERED_FUNC: {{.*}}LLVMFuzzerTestOneInput {{.*}}NullDerefTest.cpp:14 -RUN: not %run %t-NullDerefTest -print_coverage=1 2>&1 | FileCheck %s +RUN: not %run %t.dir/NullDerefTest -print_coverage=1 2>&1 | FileCheck %s -RUN: %run %t-DSOTest -print_coverage=1 -runs=0 2>&1 | FileCheck %s --check-prefix=DSO +RUN: %run %t.dir/DSOTest -print_coverage=1 -runs=0 2>&1 | FileCheck %s --check-prefix=DSO DSO: COVERAGE: DSO-DAG: COVERED_FUNC:{{.*}}DSO1 DSO-DAG: COVERED_FUNC:{{.*}}DSO2 diff --git a/compiler-rt/test/fuzzer/dso.test b/compiler-rt/test/fuzzer/dso.test index b3027205cd1c7..0860f1b355339 100644 --- a/compiler-rt/test/fuzzer/dso.test +++ b/compiler-rt/test/fuzzer/dso.test @@ -1,9 +1,10 @@ # FIXME: Disabled on Windows because -fPIC cannot be used to compile for Windows. UNSUPPORTED: target={{.*windows.*}} +RUN: mkdir -p %t.dir && cd %t.dir RUN: %cpp_compiler %S/DSO1.cpp -fPIC %ld_flags_rpath_so1 -shared -o %dynamiclib1 RUN: %cpp_compiler %S/DSO2.cpp -fPIC %ld_flags_rpath_so2 -shared -o %dynamiclib2 -RUN: %cpp_compiler %S/DSOTestMain.cpp %S/DSOTestExtra.cpp %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t-DSOTest +RUN: %cpp_compiler %S/DSOTestMain.cpp %S/DSOTestExtra.cpp %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t.dir/DSOTest -RUN: not %run %t-DSOTest 2>&1 | FileCheck %s --check-prefix=DSO +RUN: not %run %t.dir/DSOTest 2>&1 | FileCheck %s --check-prefix=DSO DSO: INFO: Loaded 3 modules DSO: BINGO diff --git a/compiler-rt/test/fuzzer/full-coverage.test b/compiler-rt/test/fuzzer/full-coverage.test index f189962399b0f..67b9e6b454c18 100644 --- a/compiler-rt/test/fuzzer/full-coverage.test +++ b/compiler-rt/test/fuzzer/full-coverage.test @@ -2,11 +2,12 @@ UNSUPPORTED: target={{.*windows.*}} # FIXME: See coverage.test. Using UNSUPPORTED here due to random failures. UNSUPPORTED: target=s390x{{.*}} +RUN: mkdir -p %t.dir && cd %t.dir RUN: %cpp_compiler %S/DSO1.cpp -fPIC %ld_flags_rpath_so1 -O0 -shared -o %dynamiclib1 RUN: %cpp_compiler %S/DSO2.cpp -fPIC %ld_flags_rpath_so2 -O0 -shared -o %dynamiclib2 -RUN: %cpp_compiler %S/DSOTestMain.cpp %S/DSOTestExtra.cpp %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t-DSOTest +RUN: %cpp_compiler %S/DSOTestMain.cpp %S/DSOTestExtra.cpp %ld_flags_rpath_exe1 %ld_flags_rpath_exe2 -o %t.dir/DSOTest -RUN: %run %t-DSOTest -print_full_coverage=1 %S/dso-cov-input.txt 2>&1 | FileCheck %s +RUN: %run %t.dir/DSOTest -print_full_coverage=1 %S/dso-cov-input.txt 2>&1 | FileCheck %s CHECK: FULL COVERAGE: CHECK-DAG: U{{( [0-9]+)*}} CHECK-DAG: C{{( [0-9]+)*}} diff --git a/compiler-rt/test/lit.common.cfg.py b/compiler-rt/test/lit.common.cfg.py index 897f4cd76e21c..8d147055293ed 100644 --- a/compiler-rt/test/lit.common.cfg.py +++ b/compiler-rt/test/lit.common.cfg.py @@ -884,7 +884,7 @@ def is_windows_lto_supported(): config.substitutions.append( ( "%ld_flags_rpath_exe" + postfix, - r"-Wl,-z,origin -Wl,-rpath,\$ORIGIN -L%T -l%xdynamiclib_namespec" + r"-Wl,-z,origin -Wl,-rpath,\$ORIGIN -L%t.dir -l%xdynamiclib_namespec" + postfix, ) ) @@ -893,7 +893,7 @@ def is_windows_lto_supported(): config.substitutions.append( ( "%ld_flags_rpath_exe" + postfix, - r"-Wl,-rpath,\$ORIGIN -L%T -l%xdynamiclib_namespec" + postfix, + r"-Wl,-rpath,\$ORIGIN -L%t.dir -l%xdynamiclib_namespec" + postfix, ) ) config.substitutions.append(("%ld_flags_rpath_so" + postfix, "")) @@ -901,14 +901,14 @@ def is_windows_lto_supported(): config.substitutions.append( ( "%ld_flags_rpath_exe" + postfix, - r"-Wl,-R\$ORIGIN -L%T -l%xdynamiclib_namespec" + postfix, + r"-Wl,-R\$ORIGIN -L%t.dir -l%xdynamiclib_namespec" + postfix, ) ) config.substitutions.append(("%ld_flags_rpath_so" + postfix, "")) # Must be defined after the substitutions that use %dynamiclib. config.substitutions.append( - ("%dynamiclib" + postfix, "%T/%xdynamiclib_filename" + postfix) + ("%dynamiclib" + postfix, "%t.dir/%xdynamiclib_filename" + postfix) ) config.substitutions.append( ( diff --git a/compiler-rt/test/tsan/on_initialize_finalize_hooks.cpp b/compiler-rt/test/tsan/on_initialize_finalize_hooks.cpp index 3f7b56bd636e7..7c6c7715d07dd 100644 --- a/compiler-rt/test/tsan/on_initialize_finalize_hooks.cpp +++ b/compiler-rt/test/tsan/on_initialize_finalize_hooks.cpp @@ -1,6 +1,7 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clang_tsan -O1 %s -DBUILD_LIB=1 -fno-sanitize=thread -shared -fPIC -o %dynamiclib %ld_flags_rpath_so -// RUN: %clang_tsan -O1 %s -o %t %ld_flags_rpath_exe -// RUN: %run %t | FileCheck %s +// RUN: %clang_tsan -O1 %s -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %run %t.dir/exe | FileCheck %s // Test that initialization/finalization hooks are called, even when they are // not defined in the main executable, but by another another library that diff --git a/compiler-rt/test/ubsan/TestCases/Misc/no-interception.cpp b/compiler-rt/test/ubsan/TestCases/Misc/no-interception.cpp index c82fed3bf3f69..72066861fce0a 100644 --- a/compiler-rt/test/ubsan/TestCases/Misc/no-interception.cpp +++ b/compiler-rt/test/ubsan/TestCases/Misc/no-interception.cpp @@ -4,11 +4,12 @@ // runtime in the library search order, which means that we cannot intercept // symbols. +// RUN: rm -rf %t.dir && mkdir -p %t.dir && cd %t.dir // RUN: %clangxx %p/Inputs/no-interception-dso.c -fsanitize=undefined -fPIC -shared -o %dynamiclib %ld_flags_rpath_so // Make sure that libc is first in DT_NEEDED. -// RUN: %clangxx %s -lc -o %t %ld_flags_rpath_exe -// RUN: %run %t 2>&1 | FileCheck %s +// RUN: %clangxx %s -lc -o %t.dir/EXE %ld_flags_rpath_exe +// RUN: %run %t.dir/EXE 2>&1 | FileCheck %s #include diff --git a/compiler-rt/test/ubsan/TestCases/TypeCheck/Function/function.cpp b/compiler-rt/test/ubsan/TestCases/TypeCheck/Function/function.cpp index ddd6933404c5e..89db197321c08 100644 --- a/compiler-rt/test/ubsan/TestCases/TypeCheck/Function/function.cpp +++ b/compiler-rt/test/ubsan/TestCases/TypeCheck/Function/function.cpp @@ -1,8 +1,9 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx -std=c++17 -fsanitize=function %s -O3 -g -DSHARED_LIB -fPIC -shared -o %dynamiclib %ld_flags_rpath_so -// RUN: %clangxx -std=c++17 -fsanitize=function %s -O3 -g -o %t %ld_flags_rpath_exe -// RUN: %run %t 2>&1 | FileCheck %s --check-prefix=CHECK +// RUN: %clangxx -std=c++17 -fsanitize=function %s -O3 -g -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %run %t.dir/exe 2>&1 | FileCheck %s --check-prefix=CHECK // Verify that we can disable symbolization if needed: -// RUN: %env_ubsan_opts=symbolize=0 %run %t 2>&1 | FileCheck %s --check-prefix=NOSYM +// RUN: %env_ubsan_opts=symbolize=0 %run %t.dir/exe 2>&1 | FileCheck %s --check-prefix=NOSYM struct Shared {}; using FnShared = void (*)(Shared *); diff --git a/compiler-rt/test/ubsan/TestCases/TypeCheck/vptr-non-unique-typeinfo.cpp b/compiler-rt/test/ubsan/TestCases/TypeCheck/vptr-non-unique-typeinfo.cpp index 76be179fc4a17..4327d1fcd892f 100644 --- a/compiler-rt/test/ubsan/TestCases/TypeCheck/vptr-non-unique-typeinfo.cpp +++ b/compiler-rt/test/ubsan/TestCases/TypeCheck/vptr-non-unique-typeinfo.cpp @@ -1,6 +1,7 @@ +// RUN: mkdir -p %t.dir && cd %t.dir // RUN: %clangxx -frtti -fsanitize=vptr -fno-sanitize-recover=vptr -I%p/Helpers -g %s -fPIC -shared -o %dynamiclib -DBUILD_SO %ld_flags_rpath_so -// RUN: %clangxx -frtti -fsanitize=vptr -fno-sanitize-recover=vptr -I%p/Helpers -g %s -O3 -o %t %ld_flags_rpath_exe -// RUN: %run %t +// RUN: %clangxx -frtti -fsanitize=vptr -fno-sanitize-recover=vptr -I%p/Helpers -g %s -O3 -o %t.dir/exe %ld_flags_rpath_exe +// RUN: %run %t.dir/exe // // REQUIRES: cxxabi // FIXME: Should pass on Android, but started failing around 2023-11-05 for unknown reasons.