aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexey Samsonov <samsonov@google.com>2012-06-05 06:19:00 +0000
committerAlexey Samsonov <samsonov@google.com>2012-06-05 06:19:00 +0000
commit11fff6df334e421ade84f28cc240adb96ed28a08 (patch)
tree787d9bd676cba020c803856d66a536f146591667
parent65485d7694862aa66d3a5346934db3a6a86520c5 (diff)
downloadllvm-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.cc19
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) {