Index: test/msan/lit.cfg =================================================================== --- test/msan/lit.cfg +++ test/msan/lit.cfg @@ -32,3 +32,6 @@ # MemorySanitizer tests are currently supported on Linux only. if config.host_os not in ['Linux']: config.unsupported = True + +if config.target_arch != 'aarch64': + config.available_features.add('stable-runtime') Index: test/sanitizer_common/TestCases/Posix/decorate_proc_maps.cc =================================================================== --- /dev/null +++ test/sanitizer_common/TestCases/Posix/decorate_proc_maps.cc @@ -1,61 +0,0 @@ -// RUN: %clangxx -g %s -o %t -// RUN: %env_tool_opts=decorate_proc_maps=1 %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-%tool_name -// REQUIRES: stable-runtime -#include -#include -#include -#include -#include -#include -#include - -bool CopyFdToFd(int in_fd, int out_fd) { - const size_t kBufSize = 0x10000; - static char buf[kBufSize]; - while (true) { - ssize_t got = read(in_fd, buf, kBufSize); - if (got > 0) { - write(out_fd, buf, got); - } else if (got == 0) { - break; - } else if (errno != EAGAIN || errno != EWOULDBLOCK || errno != EINTR) { - fprintf(stderr, "error reading file, errno %d\n", errno); - return false; - } - } - return true; -} - -void *ThreadFn(void *arg) { - (void)arg; - int fd = open("/proc/self/maps", O_RDONLY); - bool res = CopyFdToFd(fd, 2); - close(fd); - return (void *)!res; -} - -int main(void) { - pthread_t t; - void *res; - pthread_create(&t, 0, ThreadFn, 0); - pthread_join(t, &res); - return (int)(size_t)res; -} - -// CHECK-asan: rw-p {{.*}} [low shadow] -// CHECK-asan: ---p {{.*}} [shadow gap] -// CHECK-asan: rw-p {{.*}} [high shadow] - -// CHECK-msan: ---p {{.*}} [invalid] -// CHECK-msan: rw-p {{.*}} [shadow{{.*}}] -// CHECK-msan: ---p {{.*}} [origin{{.*}}] - -// CHECK-tsan: rw-p {{.*}} [shadow] -// CHECK-tsan: rw-p {{.*}} [meta shadow] -// CHECK-tsan: rw-p {{.*}} [trace 0] -// CHECK-tsan: rw-p {{.*}} [trace header 0] -// CHECK-tsan: rw-p {{.*}} [trace 1] -// CHECK-tsan: rw-p {{.*}} [trace header 1] - -// Nothing interesting with standalone LSan. -// CHECK-lsan: decorate_proc_maps Index: test/sanitizer_common/TestCases/Posix/lit.local.cfg =================================================================== --- test/sanitizer_common/TestCases/Posix/lit.local.cfg +++ test/sanitizer_common/TestCases/Posix/lit.local.cfg @@ -5,5 +5,5 @@ root = getRoot(config) -if root.host_os in ['Windows', 'Darwin']: +if root.host_os in ['Windows']: config.unsupported = True Index: test/sanitizer_common/lit.common.cfg =================================================================== --- test/sanitizer_common/lit.common.cfg +++ test/sanitizer_common/lit.common.cfg @@ -9,12 +9,19 @@ if config.tool_name == "asan": tool_cflags = ["-fsanitize=address"] tool_options = "ASAN_OPTIONS" + # Get the same definition from asan's lit.cfg + if config.target_arch != 'arm' and config.target_arch != 'armhf' and config.target_arch != 'aarch64': + config.available_features.add('stable-runtime') elif config.tool_name == "tsan": tool_cflags = ["-fsanitize=thread"] tool_options = "TSAN_OPTIONS" + if config.target_arch != 'aarch64': + config.available_features.add('stable-runtime') elif config.tool_name == "msan": tool_cflags = ["-fsanitize=memory"] tool_options = "MSAN_OPTIONS" + if config.target_arch != 'aarch64': + config.available_features.add('stable-runtime') elif config.tool_name == "lsan": tool_cflags = ["-fsanitize=leak"] tool_options = "LSAN_OPTIONS"