diff options
| author | Alexey Samsonov <samsonov@google.com> | 2012-06-05 06:19:00 +0000 |
|---|---|---|
| committer | Alexey Samsonov <samsonov@google.com> | 2012-06-05 06:19:00 +0000 |
| commit | 11fff6df334e421ade84f28cc240adb96ed28a08 (patch) | |
| tree | 787d9bd676cba020c803856d66a536f146591667 | |
| parent | 65485d7694862aa66d3a5346934db3a6a86520c5 (diff) | |
| download | llvm-11fff6df334e421ade84f28cc240adb96ed28a08.zip llvm-11fff6df334e421ade84f28cc240adb96ed28a08.tar.gz llvm-11fff6df334e421ade84f28cc240adb96ed28a08.tar.bz2 | |
[TSan] use __sanitizer::internal_mmap in TSan run-time
llvm-svn: 157984
| -rw-r--r-- | compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc index 61a10ae..e34d259 100644 --- a/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc +++ b/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc @@ -12,6 +12,7 @@ // Linux-specific code. //===----------------------------------------------------------------------===// +#include "sanitizer_common/sanitizer_libc.h" #include "tsan_platform.h" #include "tsan_rtl.h" #include "tsan_flags.h" @@ -36,6 +37,8 @@ #include <sched.h> #include <dlfcn.h> +using namespace __sanitizer; // NOLINT + extern "C" int arch_prctl(int code, __tsan::uptr *addr); namespace __tsan { @@ -69,16 +72,6 @@ void FlushShadowMemory() { MADV_DONTNEED); } -static void *my_mmap(void *addr, size_t length, int prot, int flags, - int fd, u64 offset) { - ScopedInRtl in_rtl; -# if __WORDSIZE == 64 - return (void *)syscall(__NR_mmap, addr, length, prot, flags, fd, offset); -# else - return (void *)syscall(__NR_mmap2, addr, length, prot, flags, fd, offset); -# endif -} - static void my_munmap(void *addr, size_t length) { ScopedInRtl in_rtl; syscall(__NR_munmap, addr, length); @@ -135,7 +128,7 @@ static void ProtectRange(uptr beg, uptr end) { CHECK_LE(beg, end); if (beg == end) return; - if (beg != (uptr)my_mmap((void*)(beg), end - beg, + if (beg != (uptr)internal_mmap((void*)(beg), end - beg, PROT_NONE, MAP_PRIVATE | MAP_ANON | MAP_FIXED | MAP_NORESERVE, -1, 0)) { @@ -150,7 +143,7 @@ void InitializeShadowMemory() { const uptr kClosedLowEnd = kLinuxShadowBeg - 1; const uptr kClosedMidBeg = kLinuxShadowEnd + 1; const uptr kClosedMidEnd = kLinuxAppMemBeg - 1; - uptr shadow = (uptr)my_mmap((void*)kLinuxShadowBeg, + uptr shadow = (uptr)internal_mmap((void*)kLinuxShadowBeg, kLinuxShadowEnd - kLinuxShadowBeg, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON | MAP_FIXED | MAP_NORESERVE, @@ -248,7 +241,7 @@ void GetThreadStackAndTls(bool main, uptr *stk_addr, uptr *stk_size, if (main) { uptr kBufSize = 1 << 26; - char *buf = (char*)my_mmap(0, kBufSize, PROT_READ | PROT_WRITE, + char *buf = (char*)internal_mmap(0, kBufSize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); fd_t maps = internal_open("/proc/self/maps", false); if (maps == kInvalidFd) { |
