summaryrefslogtreecommitdiff
path: root/test/msan
diff options
context:
space:
mode:
authorAlex Shlyapnikov <alekseys@google.com>2018-06-11 17:33:53 +0000
committerAlex Shlyapnikov <alekseys@google.com>2018-06-11 17:33:53 +0000
commitf2f5d0836a38981d7ca46ac145467880aae82e2d (patch)
treedc7cc2e66f04fa2926a7e69b1f5fd67a91292867 /test/msan
parent14601e5de1d9b20da589f2d9047745dad52d56b8 (diff)
[Sanitizers] Move pvalloc overflow tests to common.
Summary: Now all sanitizers with improved allocator error reporting are covered by these common tests. Also, add pvalloc-specific checks to LSan. HWASan is not covered by sanitizer_common, hence its own pvalloc and other allocator tests. Reviewers: vitalybuka Subscribers: srhines, kubamracek, delcypher, #sanitizers, llvm-commits Differential Revision: https://reviews.llvm.org/D47970 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@334424 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/msan')
-rw-r--r--test/msan/pvalloc.cc46
1 files changed, 0 insertions, 46 deletions
diff --git a/test/msan/pvalloc.cc b/test/msan/pvalloc.cc
deleted file mode 100644
index a85f4cad7..000000000
--- a/test/msan/pvalloc.cc
+++ /dev/null
@@ -1,46 +0,0 @@
-// RUN: %clangxx_msan -fsanitize-memory-track-origins -O0 -g %s -o %t
-// RUN: MSAN_OPTIONS=allocator_may_return_null=0 not %run %t m1 2>&1 | FileCheck %s
-// RUN: MSAN_OPTIONS=allocator_may_return_null=1 %run %t m1 2>&1
-// RUN: MSAN_OPTIONS=allocator_may_return_null=0 not %run %t psm1 2>&1 | FileCheck %s
-// RUN: MSAN_OPTIONS=allocator_may_return_null=1 %run %t psm1 2>&1
-
-// pvalloc is Linux only
-// UNSUPPORTED: win32, freebsd, netbsd
-
-// Checks that pvalloc overflows are caught. If the allocator is allowed to
-// return null, the errno should be set to ENOMEM.
-
-#include <assert.h>
-#include <errno.h>
-#include <malloc.h>
-#include <stdint.h>
-#include <string.h>
-#include <unistd.h>
-
-int main(int argc, char *argv[]) {
- void *p;
- size_t page_size;
-
- assert(argc == 2);
-
- page_size = sysconf(_SC_PAGESIZE);
- // Check that the page size is a power of two.
- assert((page_size & (page_size - 1)) == 0);
-
- if (!strcmp(argv[1], "m1")) {
- p = pvalloc((uintptr_t)-1);
- assert(!p);
- assert(errno == ENOMEM);
- }
- if (!strcmp(argv[1], "psm1")) {
- p = pvalloc((uintptr_t)-(page_size - 1));
- assert(!p);
- assert(errno == ENOMEM);
- }
-
- return 0;
-}
-
-// CHECK: {{ERROR: MemorySanitizer: pvalloc parameters overflow: size .* rounded up to system page size .* cannot be represented in type size_t}}
-// CHECK: {{#0 0x.* in .*pvalloc}}
-// CHECK: SUMMARY: MemorySanitizer: pvalloc-overflow