diff options
author | Alex Shlyapnikov <alekseys@google.com> | 2018-06-11 17:33:53 +0000 |
---|---|---|
committer | Alex Shlyapnikov <alekseys@google.com> | 2018-06-11 17:33:53 +0000 |
commit | f2f5d0836a38981d7ca46ac145467880aae82e2d (patch) | |
tree | dc7cc2e66f04fa2926a7e69b1f5fd67a91292867 /test/msan | |
parent | 14601e5de1d9b20da589f2d9047745dad52d56b8 (diff) | |
download | compiler-rt-f2f5d0836a38981d7ca46ac145467880aae82e2d.tar.gz |
[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.cc | 46 |
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 |