msan.h revision db010dae23962ab6089ad1e97af176b7215cb35c
1//===-- msan.h --------------------------------------------------*- C++ -*-===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9// 10// This file is a part of MemorySanitizer. 11// 12// Private MSan header. 13//===----------------------------------------------------------------------===// 14 15#ifndef MSAN_H 16#define MSAN_H 17 18#include "sanitizer_common/sanitizer_internal_defs.h" 19#include "sanitizer_common/sanitizer_stacktrace.h" 20#include "sanitizer/msan_interface.h" 21#include "msan_flags.h" 22 23#define MEM_TO_SHADOW(mem) (((uptr)mem) & ~0x400000000000ULL) 24#define MEM_TO_ORIGIN(mem) (MEM_TO_SHADOW(mem) + 0x200000000000ULL) 25#define MEM_IS_APP(mem) ((uptr)mem >= 0x600000000000ULL) 26#define MEM_IS_SHADOW(mem) ((uptr)mem >= 0x200000000000ULL && \ 27 (uptr)mem <= 0x400000000000ULL) 28 29const int kMsanParamTlsSizeInWords = 100; 30const int kMsanRetvalTlsSizeInWords = 100; 31 32namespace __msan { 33extern int msan_inited; 34extern bool msan_init_is_running; 35 36bool ProtectRange(uptr beg, uptr end); 37bool InitShadow(bool prot1, bool prot2, bool map_shadow, bool init_origins); 38char *GetProcSelfMaps(); 39void InitializeInterceptors(); 40 41void *MsanReallocate(StackTrace *stack, void *oldp, uptr size, 42 uptr alignment, bool zeroise); 43void MsanDeallocate(void *ptr); 44void InstallTrapHandler(); 45void ReplaceOperatorsNewAndDelete(); 46 47void MsanDie(); 48void PrintWarning(uptr pc, uptr bp); 49void PrintWarningWithOrigin(uptr pc, uptr bp, u32 origin); 50 51void GetStackTrace(StackTrace *stack, uptr max_s, uptr pc, uptr bp); 52 53void ReportUMR(StackTrace *stack, u32 origin); 54void ReportExpectedUMRNotFound(StackTrace *stack); 55 56#define GET_MALLOC_STACK_TRACE \ 57 StackTrace stack; \ 58 stack.size = 0; \ 59 if (__msan_get_track_origins() && msan_inited) \ 60 GetStackTrace(&stack, flags()->num_callers, \ 61 StackTrace::GetCurrentPc(), GET_CURRENT_FRAME()) 62 63} // namespace __msan 64 65#endif // MSAN_H 66