// AArch64 bots fail on this test.
// TODO(alekseys): Android lit do not run ulimit on device.
// REQUIRES: shadow-scale-3
-// UNSUPPORTED: s390,android,aarch64,powerpc64le
+// UNSUPPORTED: android, target={{(s390|aarch64|powerpc64le).*}}
#include <stdlib.h>
#include <string.h>
// RUN: %clangxx_asan -std=c++11 -O0 %s -o %t
// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=READ
// RUN: not %run %t write 2>&1 | FileCheck %s --check-prefix=WRITE
-// UNSUPPORTED: powerpc64,mips,s390
+// UNSUPPORTED: target={{(powerpc64|mips|s390).*}}
#include <sys/mman.h>
// CHECK: __tls_get_addr: static tls
// CHECK: after
-// XFAIL: aarch64
+// XFAIL: target=aarch64{{.*}}
// binutils 2.26 has a change that causes this test to fail on powerpc64.
-// UNSUPPORTED: powerpc64
+// UNSUPPORTED: target=powerpc64{{.*}}
/// We call __tls_get_addr early in GetTls to work around an issue for glibc<2.25,
/// so we don't get a log for f().
// on them remaining closed across an execve(). This is not the case on newer
// versions of Android. On PPC with ASLR turned on, this fails when linked with
// lld - see https://bugs.llvm.org/show_bug.cgi?id=45076.
-// UNSUPPORTED: android, powerpc
+// UNSUPPORTED: android, target=powerpc{{.*}}
#include <assert.h>
#include <stdio.h>
// RUN: %env_asan_opts=min_uar_stack_size_log=24:max_uar_stack_size_log=24:verbosity=1 not %run %t 2>&1 | FileCheck --check-prefix=CHECK-24 %s
// This test runs out of stack on AArch64.
-// UNSUPPORTED: aarch64
+// UNSUPPORTED: target=aarch64{{.*}}
// stack size log lower than expected
-// XFAIL: freebsd,netbsd
+// XFAIL: target={{.*(freebsd|netbsd).*}}
// FIXME: Fix this test for dynamic runtime on arm linux.
// UNSUPPORTED: (arm-linux || armhf-linux) && asan-dynamic-runtime
// RUN: %clangxx_asan -O3 -xc %s -o %t && not %run %t 2>&1 | FileCheck %s
// Unwind problem on arm: "main" is missing from the allocation stack trace.
-// UNSUPPORTED: windows-msvc,s390,arm && !fast-unwinder-works
+// UNSUPPORTED: target={{.*windows-msvc.*}},target=s390{{.*}},target=arm{{.*}} && !fast-unwinder-works
#include <string.h>
// RUN: %clang_asan -O3 -xc %s -o %t && not %run %t 2>&1 | FileCheck %s\r
\r
// Unwind problem on arm: "main" is missing from the allocation stack trace.\r
-// UNSUPPORTED: windows-msvc,s390,arm && !fast-unwinder-works
+// UNSUPPORTED: target={{.*windows-msvc.*}},target=s390{{.*}},target=arm{{.*}} && !fast-unwinder-works
\r
#include <string.h>\r
\r
// RUN: not %run %t l 2>&1 | FileCheck %s --check-prefix=CHECK --check-prefix=LITERAL-NO-G
/// Solaris ld -S has different semantics.
-// XFAIL: solaris
+// XFAIL: target={{.*solaris.*}}
/// MSVC linker doesn't support `-S`.
-// UNSUPPORTED: windows
+// UNSUPPORTED: target={{.*windows.*}}
// CHECK: AddressSanitizer: global-buffer-overflow
// CLASS_STATIC-NO-G: 0x{{.*}} is located 4 bytes after global variable '{{.*}}C::array{{.*}}' defined in '{{.*}}global-location.cpp' {{.*}} of size 40
// FIXME: fix 32-bits.
// REQUIRES: asan-64-bits, shadow-scale-3
// FIXME: Implement ASan intra-object padding in Clang's MS record layout
-// UNSUPPORTED: windows-msvc
+// UNSUPPORTED: target={{.*windows-msvc.*}}
#include <stdio.h>
#include <stdlib.h>
class Foo {
// Conflicts with BIONIC declarations.
// Lacks mallinfo, mallopt except in libmalloc. cfree with different
// signature in libc.
-// UNSUPPORTED: solaris
+// UNSUPPORTED: target={{.*solaris.*}}
// Inhibit conflicting declaration of memalign on Solaris.
#if defined(__sun__) && defined(__svr4__)
// FIXME: sprintf is not intercepted on Windows yet. But this test can
// pass if sprintf calls memmove, which is intercepted, so we can't XFAIL it.
-// UNSUPPORTED: windows-msvc
+// UNSUPPORTED: target={{.*windows-msvc.*}}
#include <stdio.h>
int main() {
// RUN: %clang_asan -O2 %s -o %t && %run %t
// FIXME: printf is not intercepted on Windows yet.
-// UNSUPPORTED: windows-msvc
+// UNSUPPORTED: target={{.*windows-msvc.*}}
#include <stdio.h>
// FIXME: Weak symbols aren't supported on Windows, although some code in
// compiler-rt already exists to solve this problem. We should probably define
// the new/delete interceptors as "weak" using those workarounds as well.
-// UNSUPPORTED: windows
+// UNSUPPORTED: target={{.*windows.*}}
// RUN: %clangxx %s -o %t -fsanitize=address -shared-libsan && not %run %t 2>&1 | FileCheck %s
// RUN: %clangxx %s -o %t -fsanitize=address -static-libsan && not %run %t 2>&1 | FileCheck %s
// depending on how strcat() is implemented. For now only run
// on platforms where we know the test passes.
// REQUIRES: x86_64h-darwin || x86_64-darwin || i386-darwin || x86_64-linux || i386-linux
-// UNSUPPORTED: windows-msvc
+// UNSUPPORTED: target={{.*windows-msvc.*}}
// UNSUPPORTED: android
#include <string.h>
// Newer versions of Android's strstr() uses memchr() internally, which actually
// does trigger a heap-buffer-overflow (as it tries to find the
// null-terminator). The same applies to FreeBSD.
-// UNSUPPORTED: android, freebsd
+// UNSUPPORTED: android, target={{.*freebsd.*}}
// RUN: %env_asan_opts=strict_string_checks=false %run %t 2>&1
// RUN: %env_asan_opts=strict_string_checks=true not %run %t 2>&1 | FileCheck %s