1*77c1e3ccSAndroid Build Coastguard Worker /* 2*77c1e3ccSAndroid Build Coastguard Worker * Copyright (c) 2018, Alliance for Open Media. All rights reserved. 3*77c1e3ccSAndroid Build Coastguard Worker * 4*77c1e3ccSAndroid Build Coastguard Worker * This source code is subject to the terms of the BSD 2 Clause License and 5*77c1e3ccSAndroid Build Coastguard Worker * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License 6*77c1e3ccSAndroid Build Coastguard Worker * was not distributed with this source code in the LICENSE file, you can 7*77c1e3ccSAndroid Build Coastguard Worker * obtain it at www.aomedia.org/license/software. If the Alliance for Open 8*77c1e3ccSAndroid Build Coastguard Worker * Media Patent License 1.0 was not distributed with this source code in the 9*77c1e3ccSAndroid Build Coastguard Worker * PATENTS file, you can obtain it at www.aomedia.org/license/patent. 10*77c1e3ccSAndroid Build Coastguard Worker */ 11*77c1e3ccSAndroid Build Coastguard Worker 12*77c1e3ccSAndroid Build Coastguard Worker #ifndef AOM_AOM_PORTS_SANITIZER_H_ 13*77c1e3ccSAndroid Build Coastguard Worker #define AOM_AOM_PORTS_SANITIZER_H_ 14*77c1e3ccSAndroid Build Coastguard Worker 15*77c1e3ccSAndroid Build Coastguard Worker // AddressSanitizer support. 16*77c1e3ccSAndroid Build Coastguard Worker 17*77c1e3ccSAndroid Build Coastguard Worker // Define AOM_ADDRESS_SANITIZER if AddressSanitizer is used. 18*77c1e3ccSAndroid Build Coastguard Worker // Clang. 19*77c1e3ccSAndroid Build Coastguard Worker #if defined(__has_feature) 20*77c1e3ccSAndroid Build Coastguard Worker #if __has_feature(address_sanitizer) 21*77c1e3ccSAndroid Build Coastguard Worker #define AOM_ADDRESS_SANITIZER 1 22*77c1e3ccSAndroid Build Coastguard Worker #endif 23*77c1e3ccSAndroid Build Coastguard Worker #endif // defined(__has_feature) 24*77c1e3ccSAndroid Build Coastguard Worker // GCC. 25*77c1e3ccSAndroid Build Coastguard Worker #if defined(__SANITIZE_ADDRESS__) 26*77c1e3ccSAndroid Build Coastguard Worker #define AOM_ADDRESS_SANITIZER 1 27*77c1e3ccSAndroid Build Coastguard Worker #endif // defined(__SANITIZE_ADDRESS__) 28*77c1e3ccSAndroid Build Coastguard Worker 29*77c1e3ccSAndroid Build Coastguard Worker // Define the macros for AddressSanitizer manual memory poisoning. See 30*77c1e3ccSAndroid Build Coastguard Worker // https://github.com/google/sanitizers/wiki/AddressSanitizerManualPoisoning. 31*77c1e3ccSAndroid Build Coastguard Worker #if defined(AOM_ADDRESS_SANITIZER) 32*77c1e3ccSAndroid Build Coastguard Worker #include <sanitizer/asan_interface.h> 33*77c1e3ccSAndroid Build Coastguard Worker #else 34*77c1e3ccSAndroid Build Coastguard Worker #define ASAN_POISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size)) 35*77c1e3ccSAndroid Build Coastguard Worker #define ASAN_UNPOISON_MEMORY_REGION(addr, size) ((void)(addr), (void)(size)) 36*77c1e3ccSAndroid Build Coastguard Worker #endif 37*77c1e3ccSAndroid Build Coastguard Worker 38*77c1e3ccSAndroid Build Coastguard Worker #endif // AOM_AOM_PORTS_SANITIZER_H_ 39