asan_flags.h revision 238901
1238901Sandrew//===-- asan_flags.h -------------------------------------------*- C++ -*-===// 2238901Sandrew// 3238901Sandrew// The LLVM Compiler Infrastructure 4238901Sandrew// 5238901Sandrew// This file is distributed under the University of Illinois Open Source 6238901Sandrew// License. See LICENSE.TXT for details. 7238901Sandrew// 8238901Sandrew//===----------------------------------------------------------------------===// 9238901Sandrew// 10238901Sandrew// This file is a part of AddressSanitizer, an address sanity checker. 11238901Sandrew// 12238901Sandrew// ASan runtime flags. 13238901Sandrew//===----------------------------------------------------------------------===// 14238901Sandrew 15238901Sandrew#ifndef ASAN_FLAGS_H 16238901Sandrew#define ASAN_FLAGS_H 17238901Sandrew 18238901Sandrew#include "sanitizer_common/sanitizer_interface_defs.h" 19238901Sandrew 20238901Sandrew// ASan flag values can be defined in three ways: 21238901Sandrew// 1) initialized with default values at startup. 22238901Sandrew// 2) overriden from string returned by user-specified function 23238901Sandrew// __asan_default_options(). 24238901Sandrew// 3) overriden from env variable ASAN_OPTIONS. 25238901Sandrew 26238901Sandrewextern "C" { 27238901Sandrew// Can be overriden by user. 28238901Sandrewconst char *__asan_default_options() SANITIZER_WEAK_ATTRIBUTE; 29238901Sandrew} // extern "C" 30238901Sandrew 31238901Sandrewnamespace __asan { 32238901Sandrew 33238901Sandrewstruct Flags { 34238901Sandrew // Size (in bytes) of quarantine used to detect use-after-free errors. 35238901Sandrew // Lower value may reduce memory usage but increase the chance of 36238901Sandrew // false negatives. 37238901Sandrew int quarantine_size; 38238901Sandrew // If set, uses in-process symbolizer from common sanitizer runtime. 39238901Sandrew bool symbolize; 40238901Sandrew // Verbosity level (0 - silent, 1 - a bit of output, 2+ - more output). 41238901Sandrew int verbosity; 42238901Sandrew // Size (in bytes) of redzones around heap objects. 43238901Sandrew // Requirement: redzone >= 32, is a power of two. 44238901Sandrew int redzone; 45238901Sandrew // If set, prints some debugging information and does additional checks. 46238901Sandrew bool debug; 47238901Sandrew // Controls the way to handle globals (0 - don't detect buffer overflow 48238901Sandrew // on globals, 1 - detect buffer overflow, 2 - print data about registered 49238901Sandrew // globals). 50238901Sandrew int report_globals; 51238901Sandrew // Max number of stack frames kept for each allocation. 52238901Sandrew int malloc_context_size; 53238901Sandrew // If set, uses custom wrappers and replacements for libc string functions 54238901Sandrew // to find more errors. 55238901Sandrew bool replace_str; 56238901Sandrew // If set, uses custom wrappers for memset/memcpy/memmove intinsics. 57238901Sandrew bool replace_intrin; 58238901Sandrew // Used on Mac only. See comments in asan_mac.cc and asan_malloc_mac.cc. 59238901Sandrew bool replace_cfallocator; 60238901Sandrew // Used on Mac only. 61238901Sandrew bool mac_ignore_invalid_free; 62238901Sandrew // ASan allocator flag. See asan_allocator.cc. 63238901Sandrew bool use_fake_stack; 64238901Sandrew // ASan allocator flag. Sets the maximal size of allocation request 65238901Sandrew // that would return memory filled with zero bytes. 66238901Sandrew int max_malloc_fill_size; 67238901Sandrew // Override exit status if something was reported. 68238901Sandrew int exitcode; 69238901Sandrew // If set, user may manually mark memory regions as poisoned or unpoisoned. 70238901Sandrew bool allow_user_poisoning; 71238901Sandrew // Number of seconds to sleep between printing an error report and 72238901Sandrew // terminating application. Useful for debug purposes (when one needs 73238901Sandrew // to attach gdb, for example). 74238901Sandrew int sleep_before_dying; 75238901Sandrew // If set, registers ASan custom segv handler. 76238901Sandrew bool handle_segv; 77238901Sandrew // If set, uses alternate stack for signal handling. 78238901Sandrew bool use_sigaltstack; 79238901Sandrew // Allow the users to work around the bug in Nvidia drivers prior to 295.*. 80238901Sandrew bool check_malloc_usable_size; 81238901Sandrew // If set, explicitly unmaps (huge) shadow at exit. 82238901Sandrew bool unmap_shadow_on_exit; 83238901Sandrew // If set, calls abort() instead of _exit() after printing an error report. 84238901Sandrew bool abort_on_error; 85238901Sandrew // If set, prints ASan exit stats even after program terminates successfully. 86238901Sandrew bool atexit; 87238901Sandrew // By default, disable core dumper on 64-bit - it makes little sense 88238901Sandrew // to dump 16T+ core. 89238901Sandrew bool disable_core; 90238901Sandrew}; 91238901Sandrew 92238901SandrewFlags *flags(); 93238901Sandrewvoid InitializeFlags(Flags *f, const char *env); 94238901Sandrew 95238901Sandrew} // namespace __asan 96238901Sandrew 97238901Sandrew#endif // ASAN_FLAGS_H 98