5#ifndef V8_BASE_SANITIZER_ASAN_H_ 
    6#define V8_BASE_SANITIZER_ASAN_H_ 
   14#ifdef V8_USE_ADDRESS_SANITIZER 
   16#include <sanitizer/asan_interface.h> 
   18#if !defined(ASAN_POISON_MEMORY_REGION) || !defined(ASAN_UNPOISON_MEMORY_REGION) 
   20    "ASAN_POISON_MEMORY_REGION and ASAN_UNPOISON_MEMORY_REGION must be defined" 
   23#define DISABLE_ASAN __attribute__((no_sanitize_address)) 
   29#define ASAN_CHECK_WHOLE_MEMORY_REGION_IS_POISONED(start, size)               \ 
   31    for (size_t i = 0; i < size; i++) {                                       \ 
   32      CHECK(__asan_address_is_poisoned(reinterpret_cast<const char*>(start) + \ 
   43            __asan_region_is_poisoned(const_cast<void*>(addr_), 
size_)) {
 
   64#define ASAN_POISON_MEMORY_REGION(start, size)                      \ 
   65  static_assert(std::is_pointer<decltype(start)>::value,            \ 
   66                "static type violation");                           \ 
   67  static_assert(std::is_convertible<decltype(size), size_t>::value, \ 
   68                "static type violation");                           \ 
 
   71#define ASAN_UNPOISON_MEMORY_REGION(start, size) \ 
   72  ASAN_POISON_MEMORY_REGION(start, size) 
 
   74#define ASAN_CHECK_WHOLE_MEMORY_REGION_IS_POISONED(start, size) \ 
   75  ASAN_POISON_MEMORY_REGION(start, size) 
 
   84#ifdef V8_USE_HWADDRESS_SANITIZER 
   86#define DISABLE_HWASAN __attribute__((no_sanitize("hwaddress"))) 
#define ASAN_UNPOISON_MEMORY_REGION(start, size)
 
#define ASAN_POISON_MEMORY_REGION(start, size)
 
AsanUnpoisonScope(const void *, size_t)