diff options
author | Vitaly Buka <vitalybuka@google.com> | 2019-01-22 05:23:48 +0000 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2019-01-22 05:23:48 +0000 |
commit | ca5da89cdde6d31218a580dcf331afa3fe4bfdad (patch) | |
tree | be50ff881f78908002ac965d612bd4801488e2ca /lib/safestack/safestack.cc | |
parent | 57d44a27887e47bb73572287740093077a23261f (diff) | |
download | compiler-rt-ca5da89cdde6d31218a580dcf331afa3fe4bfdad.tar.gz |
[safestack] Return syscalls for mmap, munmap and mprotect
This function can be already intercepted by instrumented code.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@351783 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/safestack/safestack.cc')
-rw-r--r-- | lib/safestack/safestack.cc | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/safestack/safestack.cc b/lib/safestack/safestack.cc index c5622d226..ff840a5c1 100644 --- a/lib/safestack/safestack.cc +++ b/lib/safestack/safestack.cc @@ -17,7 +17,6 @@ #include "safestack_util.h" #include <errno.h> -#include <sys/mman.h> #include <sys/resource.h> #include "interception/interception.h" @@ -94,10 +93,10 @@ __thread size_t unsafe_stack_guard = 0; inline void *unsafe_stack_alloc(size_t size, size_t guard) { SFS_CHECK(size + guard >= size); - void *addr = mmap(nullptr, RoundUpTo(size + guard, pageSize), + void *addr = Mmap(nullptr, RoundUpTo(size + guard, pageSize), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); SFS_CHECK(MAP_FAILED != addr); - mprotect(addr, guard, PROT_NONE); + Mprotect(addr, guard, PROT_NONE); return (char *)addr + guard; } @@ -181,7 +180,7 @@ void thread_cleanup_handler(void *_iter) { thread_stack_ll *stack = *stackp; if (stack->pid != pid || (-1 == TgKill(stack->pid, stack->tid, 0) && errno == ESRCH)) { - munmap(stack->stack_base, stack->size); + Munmap(stack->stack_base, stack->size); *stackp = stack->next; free(stack); } else |