Home | History | Annotate | Download | only in asan
      1 //===-- asan_flags.h -------------------------------------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // This file is a part of AddressSanitizer, an address sanity checker.
     11 //
     12 // ASan runtime flags.
     13 //===----------------------------------------------------------------------===//
     14 
     15 #ifndef ASAN_FLAGS_H
     16 #define ASAN_FLAGS_H
     17 
     18 #include "sanitizer_common/sanitizer_internal_defs.h"
     19 
     20 // ASan flag values can be defined in four ways:
     21 // 1) initialized with default values at startup.
     22 // 2) overriden during compilation of ASan runtime by providing
     23 //    compile definition ASAN_DEFAULT_OPTIONS.
     24 // 3) overriden from string returned by user-specified function
     25 //    __asan_default_options().
     26 // 4) overriden from env variable ASAN_OPTIONS.
     27 
     28 namespace __asan {
     29 
     30 struct Flags {
     31   // Flag descriptions are in asan_rtl.cc.
     32   int  quarantine_size;
     33   int  redzone;
     34   int  max_redzone;
     35   bool debug;
     36   int  report_globals;
     37   bool check_initialization_order;
     38   bool replace_str;
     39   bool replace_intrin;
     40   bool mac_ignore_invalid_free;
     41   bool detect_stack_use_after_return;
     42   int min_uar_stack_size_log;
     43   int max_uar_stack_size_log;
     44   bool uar_noreserve;
     45   int max_malloc_fill_size, malloc_fill_byte;
     46   int  exitcode;
     47   bool allow_user_poisoning;
     48   int  sleep_before_dying;
     49   bool check_malloc_usable_size;
     50   bool unmap_shadow_on_exit;
     51   bool abort_on_error;
     52   bool print_stats;
     53   bool print_legend;
     54   bool atexit;
     55   bool disable_core;
     56   bool allow_reexec;
     57   bool print_full_thread_history;
     58   bool poison_heap;
     59   bool poison_partial;
     60   bool alloc_dealloc_mismatch;
     61   bool strict_memcmp;
     62   bool strict_init_order;
     63   bool start_deactivated;
     64   int detect_invalid_pointer_pairs;
     65   bool detect_container_overflow;
     66   int detect_odr_violation;
     67 };
     68 
     69 extern Flags asan_flags_dont_use_directly;
     70 inline Flags *flags() {
     71   return &asan_flags_dont_use_directly;
     72 }
     73 void InitializeFlags(Flags *f, const char *env);
     74 
     75 }  // namespace __asan
     76 
     77 #endif  // ASAN_FLAGS_H
     78