//===-- dfsan.h -------------------------------------------------*- C++ -*-===// // // 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. // // Private DFSan header. //===----------------------------------------------------------------------===// #ifndef DFSAN_H #define DFSAN_H #include "sanitizer/dfsan_interface.h" namespace __dfsan { void InitializeInterceptors(); inline dfsan_label *shadow_for(void *ptr) { return (dfsan_label *) ((((uintptr_t) ptr) & ~0x700000000000) << 1); } inline const dfsan_label *shadow_for(const void *ptr) { return shadow_for(const_cast(ptr)); } struct Flags { // Whether to warn on unimplemented functions. bool warn_unimplemented; // Whether to warn on non-zero labels. bool warn_nonzero_labels; }; extern Flags flags_data; inline Flags &flags() { return flags_data; } } // namespace __dfsan #endif // DFSAN_H