From 2e2ac456552a12a5c631af73fe71a55b2cd162b7 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 19 Jul 2015 21:44:49 +0000 Subject: [PATCH] asan: fix a test Page size is not necessary 4096. Use sysconf to obtain page size. llvm-svn: 242651 --- .../TestCases/Linux/signal_segv_handler.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc b/compiler-rt/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc index c8d634605e1b..643fb48ae773 100644 --- a/compiler-rt/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc +++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/signal_segv_handler.cc @@ -18,24 +18,27 @@ #include #include #include +#include +unsigned long page_size; void *guard; void handler(int signo, siginfo_t *info, void *uctx) { - mprotect(guard, 4096, PROT_READ | PROT_WRITE); + mprotect(guard, page_size, PROT_READ | PROT_WRITE); } int main() { + page_size = sysconf(_SC_PAGESIZE); struct sigaction a, old; memset(&a, 0, sizeof(a)); memset(&old, 0, sizeof(old)); a.sa_sigaction = handler; a.sa_flags = SA_SIGINFO; sigaction(SIGSEGV, &a, &old); - guard = (char *)mmap(0, 3 * 4096, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0) + - 4096; + guard = mmap(0, 3 * page_size, PROT_NONE, MAP_ANON | MAP_PRIVATE, -1, 0); + guard = (char*)guard + page_size; // work around a kernel bug for (int i = 0; i < 1000000; i++) { - mprotect(guard, 4096, PROT_NONE); + mprotect(guard, page_size, PROT_NONE); *(int*)guard = 1; } sigaction(SIGSEGV, &old, 0);