From 8ef50bf3d1c287b5013c3168de77a462dfce3495 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Thu, 6 Nov 2014 22:49:13 +0000 Subject: Import compiler-rt release_34 branch r197381. https://llvm.org/svn/llvm-project/compiler-rt/branches/release_34@197381 --- lib/dfsan/dfsan_interceptors.cc | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 lib/dfsan/dfsan_interceptors.cc (limited to 'lib/dfsan/dfsan_interceptors.cc') diff --git a/lib/dfsan/dfsan_interceptors.cc b/lib/dfsan/dfsan_interceptors.cc new file mode 100644 index 000000000000..8b7d64e25a39 --- /dev/null +++ b/lib/dfsan/dfsan_interceptors.cc @@ -0,0 +1,44 @@ +//===-- dfsan_interceptors.cc ---------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file is a part of DataFlowSanitizer. +// +// Interceptors for standard library functions. +//===----------------------------------------------------------------------===// + +#include "dfsan/dfsan.h" +#include "interception/interception.h" +#include "sanitizer_common/sanitizer_common.h" + +INTERCEPTOR(void *, mmap, void *addr, SIZE_T length, int prot, int flags, + int fd, OFF_T offset) { + void *res = REAL(mmap)(addr, length, prot, flags, fd, offset); + if (res != (void*)-1) + dfsan_set_label(0, res, RoundUpTo(length, GetPageSize())); + return res; +} + +INTERCEPTOR(void *, mmap64, void *addr, SIZE_T length, int prot, int flags, + int fd, OFF64_T offset) { + void *res = REAL(mmap64)(addr, length, prot, flags, fd, offset); + if (res != (void*)-1) + dfsan_set_label(0, res, RoundUpTo(length, GetPageSize())); + return res; +} + +namespace __dfsan { +void InitializeInterceptors() { + static int inited = 0; + CHECK_EQ(inited, 0); + + INTERCEPT_FUNCTION(mmap); + INTERCEPT_FUNCTION(mmap64); + inited = 1; +} +} // namespace __dfsan -- cgit v1.2.3