| //===-- 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<void *>(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 |