1 1.1 kamil //===-- asan_flags.h -------------------------------------------*- C++ -*-===// 2 1.1 kamil // 3 1.1 kamil // The LLVM Compiler Infrastructure 4 1.1 kamil // 5 1.1 kamil // This file is distributed under the University of Illinois Open Source 6 1.1 kamil // License. See LICENSE.TXT for details. 7 1.1 kamil // 8 1.1 kamil //===----------------------------------------------------------------------===// 9 1.1 kamil // 10 1.1 kamil // This file is a part of AddressSanitizer, an address sanity checker. 11 1.1 kamil // 12 1.1 kamil // ASan runtime flags. 13 1.1 kamil //===----------------------------------------------------------------------===// 14 1.1 kamil 15 1.1 kamil #ifndef ASAN_FLAGS_H 16 1.1 kamil #define ASAN_FLAGS_H 17 1.1 kamil 18 1.1 kamil #include "sanitizer_common/sanitizer_internal_defs.h" 19 1.1 kamil #include "sanitizer_common/sanitizer_flag_parser.h" 20 1.1 kamil 21 1.1 kamil // ASan flag values can be defined in four ways: 22 1.1 kamil // 1) initialized with default values at startup. 23 1.1 kamil // 2) overriden during compilation of ASan runtime by providing 24 1.1 kamil // compile definition ASAN_DEFAULT_OPTIONS. 25 1.1 kamil // 3) overriden from string returned by user-specified function 26 1.1 kamil // __asan_default_options(). 27 1.1 kamil // 4) overriden from env variable ASAN_OPTIONS. 28 1.1 kamil // 5) overriden during ASan activation (for now used on Android only). 29 1.1 kamil 30 1.1 kamil namespace __asan { 31 1.1 kamil 32 1.1 kamil struct Flags { 33 1.1 kamil #define ASAN_FLAG(Type, Name, DefaultValue, Description) Type Name; 34 1.1 kamil #include "asan_flags.inc" 35 1.1 kamil #undef ASAN_FLAG 36 1.1 kamil 37 1.1 kamil void SetDefaults(); 38 1.1 kamil }; 39 1.1 kamil 40 1.1 kamil extern Flags asan_flags_dont_use_directly; 41 1.1 kamil inline Flags *flags() { 42 1.1 kamil return &asan_flags_dont_use_directly; 43 1.1 kamil } 44 1.1 kamil 45 1.1 kamil void InitializeFlags(); 46 1.1 kamil 47 1.1 kamil } // namespace __asan 48 1.1 kamil 49 1.1 kamil #endif // ASAN_FLAGS_H 50