Home | History | Annotate | Download | only in src
      1 // Copyright 2013 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 // MemorySanitizer support.
      6 
      7 #ifndef V8_MSAN_H_
      8 #define V8_MSAN_H_
      9 
     10 #include "src/globals.h"
     11 
     12 #ifndef __has_feature
     13 # define __has_feature(x) 0
     14 #endif
     15 
     16 #if __has_feature(memory_sanitizer) && !defined(MEMORY_SANITIZER)
     17 # define MEMORY_SANITIZER
     18 #endif
     19 
     20 #if defined(MEMORY_SANITIZER)
     21 # include <sanitizer/msan_interface.h>  // NOLINT
     22 
     23 // Marks a memory range as uninitialized, as if it was allocated here.
     24 # define MSAN_ALLOCATED_UNINITIALIZED_MEMORY(p, s) \
     25     __msan_allocated_memory((p), (s))
     26 // Marks a memory range as initialized.
     27 #define MSAN_MEMORY_IS_INITIALIZED(p, s) __msan_unpoison((p), (s))
     28 #else
     29 # define MSAN_ALLOCATED_UNINITIALIZED_MEMORY(p, s)
     30 #define MSAN_MEMORY_IS_INITIALIZED(p, s)
     31 #endif
     32 
     33 #endif  // V8_MSAN_H_
     34