1 //===-- sanitizer_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 ThreadSanitizer/AddressSanitizer runtime.
11 //
12 //===----------------------------------------------------------------------===//
13
14 #ifndef SANITIZER_FLAGS_H
15 #define SANITIZER_FLAGS_H
16
17 #include "sanitizer_internal_defs.h"
18
19 namespace __sanitizer {
20
21 void ParseFlag(const char *env, bool *flag,
22 const char *name, const char *descr);
23 void ParseFlag(const char *env, int *flag,
24 const char *name, const char *descr);
25 void ParseFlag(const char *env, uptr *flag,
26 const char *name, const char *descr);
27 void ParseFlag(const char *env, const char **flag,
28 const char *name, const char *descr);
29
30 struct CommonFlags {
31 bool symbolize;
32 const char *external_symbolizer_path;
33 bool allow_addr2line;
34 const char *strip_path_prefix;
35 bool fast_unwind_on_fatal;
36 bool fast_unwind_on_malloc;
37 bool handle_ioctl;
38 int malloc_context_size;
39 const char *log_path;
40 int verbosity;
41 bool detect_leaks;
42 bool leak_check_at_exit;
43 bool allocator_may_return_null;
44 bool print_summary;
45 bool check_printf;
46 bool handle_segv;
47 bool allow_user_segv_handler;
48 bool use_sigaltstack;
49 bool detect_deadlocks;
50 uptr clear_shadow_mmap_threshold;
51 const char *color;
52 bool legacy_pthread_cond;
53 bool intercept_tls_get_addr;
54 bool help;
55 uptr mmap_limit_mb;
56 bool coverage;
57 bool coverage_direct;
58 const char *coverage_dir;
59 bool full_address_space;
60 };
61
common_flags()62 inline CommonFlags *common_flags() {
63 extern CommonFlags common_flags_dont_use;
64 return &common_flags_dont_use;
65 }
66
67 void SetCommonFlagsDefaults(CommonFlags *f);
68 void ParseCommonFlagsFromString(CommonFlags *f, const char *str);
69 void PrintFlagDescriptions();
70
71 } // namespace __sanitizer
72
73 #endif // SANITIZER_FLAGS_H
74