diff options
author | Kostya Serebryany <kcc@google.com> | 2011-12-28 23:28:54 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2011-12-28 23:28:54 +0000 |
commit | a874fe5b5d67152e4e737498d532eec80940bdcd (patch) | |
tree | ee1630f3d1725d71fe8f8bb3be52350d3b2d9af6 /lib/asan/asan_linux.cc | |
parent | de496f451bce322b6cde100456591f1f50ab3477 (diff) | |
download | compiler-rt-a874fe5b5d67152e4e737498d532eec80940bdcd.tar.gz |
[asan] refactoring: don't #include <sys/mman.h> in non-os-specific files
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@147328 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/asan/asan_linux.cc')
-rw-r--r-- | lib/asan/asan_linux.cc | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/asan/asan_linux.cc b/lib/asan/asan_linux.cc index 45f94e9e0..26a08ae8f 100644 --- a/lib/asan/asan_linux.cc +++ b/lib/asan/asan_linux.cc @@ -30,7 +30,7 @@ void *AsanDoesNotSupportStaticLinkage() { return &_DYNAMIC; } -void *asan_mmap(void *addr, size_t length, int prot, int flags, +static void *asan_mmap(void *addr, size_t length, int prot, int flags, int fd, uint64_t offset) { # if __WORDSIZE == 64 return (void *)syscall(__NR_mmap, addr, length, prot, flags, fd, offset); @@ -50,6 +50,27 @@ void *AsanMmapSomewhereOrDie(size_t size, const char *mem_type) { return res; } +void *AsanMmapFixedNoReserve(uintptr_t fixed_addr, size_t size) { + return asan_mmap((void*)fixed_addr, size, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANON | MAP_FIXED | MAP_NORESERVE, + 0, 0); +} + +void *AsanMmapFixedReserve(uintptr_t fixed_addr, size_t size) { + return asan_mmap((void*)fixed_addr, size, + PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANON | MAP_FIXED, + 0, 0); +} + +void *AsanMprotect(uintptr_t fixed_addr, size_t size) { + return asan_mmap((void*)fixed_addr, size, + PROT_NONE, + MAP_PRIVATE | MAP_ANON | MAP_FIXED | MAP_NORESERVE, + 0, 0); +} + void AsanUnmapOrDie(void *addr, size_t size) { if (!addr || !size) return; int res = syscall(__NR_munmap, addr, size); |